Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adaptar les veus a l'Flite #4

Open
jmontane opened this issue Mar 13, 2014 · 2 comments
Open

Adaptar les veus a l'Flite #4

jmontane opened this issue Mar 13, 2014 · 2 comments

Comments

@jmontane
Copy link

Hola,
seria molt interessant poder gaudir de les veus catalanes del projecte Festcat també a l'Flite (festival-litle)[1]. Això permetria poder gaudir de veus catalanes als dispositius amb Android [2], ja que Google no incorpora el català al seu motor TTS, :(

Com ho veieu?

[1] http://www.festvox.org/flite/
[2] https://play.google.com/store/apps/details?id=edu.cmu.cs.speech.tts.flite

@zeehio
Copy link
Member

zeehio commented Mar 14, 2014

Hola,

Estic d'acord en què seria molt interessant. Tanmateix és molta feina i no tinc temps per fer-ho ara per ara. Crec que seria factible i atractiu presentar aquest tema com a projecte final de carrera per algun estudiant (tot i que no sé si és molta/poca feina per un PFC). Intentaré parlar amb el Toni Bonafonte, que va dirigir el projecte FestCat, per si està interessat en dirigir un alumne (si cal amb la meva ajuda en tant que pugui).

Objectiu

Publicar veus catalanes del projecte FestCat a Flite en la seva versió d'escriptori i la versió Android, a fi d'aconseguir síntesi de veu lliure i d'alta qualitat en dispositius mòbils. Publicar el codi font de la feina feta és fonamental per assolir aquests objectius.

Proposta de passos a seguir

  1. Aprenentatge
    1. Familiaritzar-se amb la suite Festival i amb FestCat.
    2. Familiaritzar-se amb Flite i amb el funcionament de les veus angleses a Flite. Identificar el funcionament dels diferents mòduls que permeten analitzar text i convertir-lo a veu.
  2. Donar suport lingüístic a flite en català
  3. Crear un model de veu clustergen per fer síntesi.
  4. Publicar els resultats i col·laborar amb els desenvolupadors de Flite i Flite-Android per integrar els canvis en la seva aplicació. Disponible a Google App Store i/o f-droid.

2. Suport lingüístic a flite

Aquesta és la tasca més complicada. L'objectiu és que flite sigui capaç de, donat un text en català, generar la transcripció fonètica correcta i les etiquetes necessàries per tal que el mòdul clustergen de flite pugui sintetitzar veu. A FestCat fem servir una sèrie de mòduls que caldria veure si poden portar-se a Flite o com es podrien implementar, amb un cost computacional baix.

Festival utilitza un llenguatge interpretat anomenat "scheme" per fer bona part d'aquesta feina. A FestCat fem servir:

  • Phrasing: Sistema per detectar pauses, molt simple, basat en signes de puntuació.
  • Part of Speech (POS): Sistema per detectar la categoria gramatical de les paraules (nom, verb, adjectiu...). Fem servir un diccionari ("paraula"->"categories possibles amb probabilitats") i un n-gram per paraules que no estiguin presents al diccionari. El tokenizer utilitza aquest mòdul, tot i que en podria prescindir si cal.
  • Tokenizer: Segmenta el text en tokens, i els converteix a paraules. Exemples:
    • "gos": gos
    • "14:45": Tres quarts de tres
    • "Jaume I": Jaume primer
    • "Segle I": Segle u
    • "1r": Primer
    • "8" "edició" "de" "premis": Vuitena edició de premis
    • "8" "concurs" "de" piano": Vuitè concurs de piano
  • Lexicon: Un diccionari paraula -> transcripció fonètica.
  • Letter To Sound Rules: Utilitzem Classification And Regression Trees (CART) per generar un model capaç de predir la transcripció fonètica de paraules que no estiguin al diccionari.

3. Model de veu clustergen

Això hauria de ser relativament senzill.
A FestCat ja vam crear models de veus HTS i models de veus Clunits. Clunits i HTS són dues aproximacions diferents a la síntesi de veu: la primera es basa en concatenar segments de gravacions i la segona en crear uns models estadístics que representin cada fonema contextualitzat. Pel que he llegit, Flite fa servir clustergen, que és un mètode més aviat proper a HTS.

A la web Statistical Parametric Synthesis es mostra una guia amb passos a fer. Bastants d'aquests passos són comuns als altres tipus de veu, de manera que no hauria de ser difícil completar aquesta tasca.

  • Read and understand all the issues regarding the following steps
  • Set up the directory structure
  • Record or import the prompts and prompt list
  • Label the data with the HMM-state sized segments
  • Build utterance structures for recorded utterances
  • Extract F0, voicing and mcep coefficients.
  • Build a CLUSTERGEN voice
  • Build an HMM-state duration model
  • Testing

Material necessari

Tot el material necessari (diccionaris, gravacions, etiquetes de gravacions...) per elaborar aquestes tasques està disponible al web de FestCat i a aquest repositori

@zeehio
Copy link
Member

zeehio commented Apr 25, 2014

Algú ho ha fet per Austrian German voices i dóna bones indicacions: http://sourceforge.net/p/at-flite/wiki/AddingNewLanguage/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants