How to create diphone sets for mbrola.

English
Hungarian


Based on http://tcts.fpms.ac.be/synthesis/mbrola/mbrjoin.html. My own experience, and what is missing from the documentation.

0. You need to create a diphone set:
 a. a windows PCW
 b. 1.5 GB free room on your winchester
 c. A sound card and a microphone

1. Consider all the characters your language uses, according to
the SAMPA characterset states http://phon.ucl.ac.uk/home/sampa.
For example Hungarian contains 38 phonemes, 14 vowels, 24 consonants.

2. The mbrola diphone set must contain phonemes your language in
pairs, and also all phonemes paired with the pause ("_").
Example: your language contains 2 vowels, a,e and 3 consonants:
b, d, g.
In this case the diphones for mbrola are:
aaeabadagaa__a
aeeebedegee__e
abebbbdbgbb__b
adedbdddgdd__d
agegbgdgggg__g

If your language has n SAMPA phonemes, you will have n*n + 2*n
diphones.

3. Get words in your language, that contain these diphones, and
write them onto a list.

4. Download dstudio from http://www.fluency.nl/dstudio/dstudio.htm

5. Setup the input file for dstudio, that contains all diphones in
your list. For its format consult the sample files of diphone
studio. An example of the Hungarian empty *.dat files is here. pelda2.dat. For vocals you should avoid the consonants z, zs, j before vocals, because these alloy with the vocal. For example the word tüzesen is no good for the diphone E S but the word hetesen is OK.

6. Check the example in the diphone studio very throughoutly. Create own example words (ctrl-s) and check the word (ctrl-t). Important is, that the diphones are marked by the half ot them. Also the altitude of the vocals must be tha same. For example the word "ama" is composed by the phonemes _a am ma and a_. The a-s must have the same altitude. Otherwise if in the spoken text ama is spoken, you would hear a click where the two a's meet (_a am or ma a_) each other, and even the previous or following consonant can get falsified.

7. Speak into microphone 10-20 words and record them in diphone
studio.

8. Copy the wav file onto all wav files, that belong to that group.
If for example you spoke the words föablak, kőablak and táablak
onto E001.WAV, you must copy E001.WAV onto E002.WAV and E003.WAV,
if you dat file looks as:
  2 O E001.WAV föablak -1 -1 -1
  2: O E002.WAV kőablak -1 -1 -1
  a: O E003.WAV táablak -1 -1 -1
If you can program awk, the script uwana.awk can assist you to do that.

9. Repeat step 7..8 about 3-4 times.

10. Using diphone studio, isolate the diphones in the recorded
text.

11. Test the spoken diphones throughoutly. The individual diphones can be re-spoken and retested.

12. Repeat step 7...11, until all diphones are on correct wav files.

13. Export the resulting diphones.

14. Check the file export.dat. If any of the diphones is longer
than 9000 pixels, edit the diphone file and reduce the size to max 9000
pixels. (repeat steps 6..10)

15. Send the zipped file to the mbrola team to mbrola_AT_tcts_DOT_fpms_DOT_ac_DOT_be


Difonémasorozat előállítása az mbrola nyelvszintetizálóhoz.


A http://tcts.fpms.ac.be/synthesis/mbrola/mbrjoin.html dokumentáció alapján készült, saját tapasztalatok hozzáadásával, "ami a dokumentációból kimaradt".

0. Mi szükséges difonémasorozat előállításához:
 a. Egy windows PC
 b. 1.5 GB szabad hely a merevlemezen
 c. Egy hangkártya és egy lehetőleg jó mikrofon
 d. kb 25-30 órányi idő. Ebből 3 óra a bemondás, a többi a difonéma kijelölés és javítás.

1. A fonémákat a Sampa karaktersorozat alapján kell előállítani, http://phon.ucl.ac.uk/home/sampa, például a magyar nyelv 38 hangból áll, 14 magánhangzóból és 24 mássalhangzóból.

2. Az mbrola difonéma sorozatnak minden hangzót tartalmaznia kell, és minden fonémát szünettel (_) mindkét oldalán.
Példa: ha a nyelv 2 magánhangzót: a, e és 3 mássalhangzót: b, d, g tartalmaz, akkor a difonémák az mbrola számára így néznek ki:
aaeabadagaa__a
aeeebedegee__e
abebbbdbgbb__b
adedbdddgdd__d
agegbgdgggg__g

Ha a nyelvben n fonéma van, ebből n*n + 2*n difonémát kell bemondani.

3. Gyűjts olyan szavakat a nyelvben, melyek ezeket a difonémákat tartalmazzák és gyűjtsd össze őket (magyarban itt a példa: pelda2.dat).

4. Hozd le a difonéma stúdiót innen: http://www.fluency.nl/dstudio/dstudio.htm

5. Állítsd össze a dstudióhoz szükséges állományt az adott nyelvhez, mely a difonémákat tartalmazza. A magyarra itt pelda2.dat. a példa. Magánhangzók esetén elkerülendő a z, zs, j az adott magánhangzó előtt, mert ezek összeötvöződnek a magánhangzóval. Például a tüzesen szó nem jó az E S difonéma párhoz, de pl. a hetesen szó jó.
Mivel a magánhangzók a legkritikusabbak, az állomány célszerű módon a a, á, é, ... ű betűs szavakat együttesen azaz egy csoportban tartalmazza. Ha a magánhangzók nem pontosan ugyanolyan magasságúak, akkor két különböző magasságú magánhangzó összetalálkozása kellemetlen kattogást okoz és még a szomszéd mássalhangzókat is meghamisítja. Pl. az "alma az" szavak esetén az "alma" utolsó és az "az" első a-ja ütközhet, vagy a malac szó "ma" és "al" valamint "la" és "ac" a-jai ütközhetnek csúnya és kellemetlen módon. Tehát kicsit úgy kell beszélni, mint egy automata, nem szabad a szavak elejét hangsúlyozni, a végüket nem, és az összetett szavakat is egybe kell mondani, ha az összetétel adja a difonémát. Pl. nem ló-ajtót mondani, hanem lóajtót, kifejezetten egybe. A difonéma stúdióval problémamentesen össze lehet rakni több difonéma fájlt, mivel mindegyik fájl csak sorok összessége. Példa:

fájl1:
  !16000
  2 O E001.WAV föablak -1 -1 -1
  2: O E002.WAV kőablak -1 -1 -1
  a: O E003.WAV táablak -1 -1 -1
fájl2:
  !16000
  d O E005.WAV adablak -1 -1 -1
  d' O E006.WAV agyablak -1 -1 -1
  dz O E007.WAV dzablak -1 -1 -1
Összerakás után:
  !16000
  2 O E001.WAV föablak -1 -1 -1
  2: O E002.WAV kőablak -1 -1 -1
  a: O E003.WAV táablak -1 -1 -1
  d O E005.WAV adablak -1 -1 -1
  d' O E006.WAV agyablak -1 -1 -1
  dz O E007.WAV dzablak -1 -1 -1

A fájlokat éppen így szét is lehet szedni. Kezelésük egyszerűbb, ha rövidebbek, tesztelésük viszont egyszerűbb, ha lehetőleg teljesek. Fontos: Az egyes mezők között tabulátor jel van, nem szóköz! Az esetleges szóközt a difonéma studió hibának tekinti.

6. Nagyon alaposan foglalkozz a difonéma studió holland nyelvű példájával.Vizsgáld meg a kijelölt difonémákat alaposan, kreálj saját szavakat (ctrl-s) és teszteld a szót (ctrl-t)-vel. Fontos megérteni, hogy a hangzó fele tartozik egy difonémába. A magánhangzó magasságának egyformának kell lennie, különben kattanásokat lehet hallani, ahogy a két különböző magasságú magánhangzó találkozik. A nagyobb hangerő automatikusan magasabbá teszi a kimondott hangot, emiatt ügyelni kell arra, hogy a hangerő lehetőleg monoton és azonos legyen minden azonos magánhangzó határán. Pl. az "ama" szó az _a am ma és a_ fonémából áll. A két a-nak ugyanolyan magasnak kell lenni, különben pl. ama kimondásakor kattanás lenne, ha az _a és am a-ja között van magasságkülönbség, az első szótagban, ha a ma és a_ a-ja, akkor a másodikban, és esetleg a szomszédos mássalhangzó emiatt szintén hamisan csengene.

7. Mondj a mikrofonba 10-20 szót és vedd föl ezt a difononéma stúdióval. (Igyál közben vizet időnként).

8. Másold az előállt wav állományt azokra a wav állományokra, melyek szavai szintén benne vannak a most bemondott fájlban. Ha például a föablak, kőablak és táablak szavakat mondtad rá az E001.WAV fálra, E001.WAV-ot rá kell másolnod E002.WAV-ra á E003.WAV-ra, ha a fájl így néz ki:
  2 O E001.WAV föablak -1 -1 -1
  2: O E002.WAV kőablak -1 -1 -1
  a: O E003.WAV táablak -1 -1 -1
Ha ismered az awk nyelvet, a megfelelően módosított uwana.awk szkript segíteni fog neked ebben.

9. Ismételd meg a 7..8 lépést kb. 3-4-szer.

10. A difonéma stúdió segítségével jelöld ki a bemondott difonémákat. A baloldalt, a két hang határát és a jobboldalt kell kijelölni.

11. Tesztelj le alaposan minden difonémát. (ctrl-d) segítségével és az egér segítségével minden rész külön tesztelhető.

12. Ismételd a 7...11 lépéseket, amíg minden difonéma helyes wav fájlhoz tartozik.

13. Teszteld a difonémákat szavakkal (ctrl-s, ctrl-t).

14. Exportáld a difonéma studióval a difonémát.

15. Vizsgáld meg az export.dat állományt. Ha valamelyik difonéma hosszabb mit 9000, csökkentsd le a hosszát 9000 alá (11..13 lépés)

16. Ellenőrizd az export/export.dat fájlt hiányokra. Sajnos dstudio bizonyos esetekben (pl. hiányzó határkijelölés) hajlamos rá, hogy kihagyjon difonémákat az exportból, és erről nem informál. Ha a sorok száma megegyezik a használt *.dat fájl sorainak számával, akkor valószínűleg minden rendben van, egyébként futtasd a hiany.awk segédprogramot, hogy megtaláld, mi hiányzik.

17. Küldd a zippelt vagy tar-gzippelt állományt a mbrola csoportnak mbrola_KUKAC_tcts_PONT_fpms_PONT_ac_PONT_be címre.