Co-authored-by: Baybars Külebi <[email protected]> Co-authored-by: gullabi <[email protected]> Co-authored-by: mllopartbsc <[email protected]>master
| - name: test | - name: test | ||||
| run: | | run: | | ||||
| ${{ matrix.config_env }} ${{ matrix.runenv }} cmake --build build --target tests | ${{ matrix.config_env }} ${{ matrix.runenv }} cmake --build build --target tests | ||||
| ${{ matrix.config_env }} ${{ matrix.runenv }} ctest --test-dir build -T test -j8 --output-on-failure | |||||
| ${{ matrix.config_env }} ${{ matrix.runenv }} ctest --test-dir build -T test -j8 --output-on-failure |
| - name: make | - name: make | ||||
| run: cmake --build build --config ${{ matrix.config }} | run: cmake --build build --config ${{ matrix.config }} | ||||
| - name: make check | - name: make check | ||||
| run: ctest --test-dir build -T test -C ${{ matrix.config }} -j8 --output-on-failure | |||||
| run: ctest --test-dir build -T test -C ${{ matrix.config }} -j8 --output-on-failure |
| [2-clause BSD](COPYING.BSD2) license. | [2-clause BSD](COPYING.BSD2) license. | ||||
| Android is a trademark of Google LLC. | Android is a trademark of Google LLC. | ||||
| ## Acknowledgements | |||||
| The catalan extension was funded by [Departament de la Vicepresidència i de Polítiques Digitals i Territori de la Generalitat de Catalunya](https://politiquesdigitals.gencat.cat/ca/inici/index.html#googtrans(ca|en) | |||||
| within the framework of | |||||
| [Projecte AINA](https://politiquesdigitals.gencat.cat/ca/economia/catalonia-ai/aina). |
| $textmode | $textmode | ||||
| // 0000..007F : C0 Controls and Basic Latin | // 0000..007F : C0 Controls and Basic Latin | ||||
| //+ plus // [002B] other (no translation) | //+ plus // [002B] other (no translation) |
| name Catalan | name Catalan | ||||
| language ca | language ca | ||||
| dictrules 1 |
| name Catalan (Balearic) | |||||
| language ca-ba | |||||
| phonemes ca-ba | |||||
| dictrules 1 | |||||
| dictrules 4 |
| name Catalan (North-western) | |||||
| language ca-nw | |||||
| phonemes ca-nw | |||||
| dictrules 2 |
| name Catalan (Valencian) | |||||
| language ca-va | |||||
| phonemes ca-va | |||||
| dictrules 2 | |||||
| dictrules 3 |
| //==================================================== | //==================================================== | ||||
| // Catalan - based on Spanish and Base2 | // Catalan - based on Spanish and Base2 | ||||
| //==================================================== | //==================================================== | ||||
| // in our project we decided not to use elisions, but they could be managed here by using "ipa NULL" | |||||
| // vowels | |||||
| //============= | |||||
| phoneme a | phoneme a | ||||
| vwl starttype #a endtype #a | vwl starttype #a endtype #a | ||||
| length 180 | length 180 | ||||
| ChangeIfUnstressed(a#) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(@) | |||||
| ENDIF | |||||
| FMT(vowel/a_6) | FMT(vowel/a_6) | ||||
| endphoneme | endphoneme | ||||
| phoneme a# | |||||
| vwl starttype #@ endtype #@ | |||||
| ipa ɐ | |||||
| unstressed | |||||
| length 170 | |||||
| FMT(vowel/a#_3) | |||||
| phoneme a2 // don't reduce | |||||
| vwl starttype #a endtype #a | |||||
| length 180 | |||||
| FMT(vowel/a_6) | |||||
| endphoneme | endphoneme | ||||
| phoneme e | phoneme e | ||||
| vwl starttype #e endtype #e | vwl starttype #e endtype #e | ||||
| length 170 | length 170 | ||||
| ChangeIfUnstressed(@) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(@) | |||||
| ENDIF | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme e2 // don't reduce | |||||
| vwl starttype #e endtype #e | |||||
| length 170 | |||||
| FMT(vowel/e) | FMT(vowel/e) | ||||
| endphoneme | endphoneme | ||||
| phoneme E | phoneme E | ||||
| vwl starttype #e endtype #e | vwl starttype #e endtype #e | ||||
| length 180 | length 180 | ||||
| ChangeIfUnstressed(@) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(@) | |||||
| ENDIF | |||||
| FMT(vowel/e_mid) | FMT(vowel/e_mid) | ||||
| endphoneme | endphoneme | ||||
| phoneme E2 // don't reduce | phoneme E2 // don't reduce | ||||
| vwl starttype #e endtype #e | vwl starttype #e endtype #e | ||||
| length 180 | length 180 | ||||
| ChangeIfUnstressed(e2) | |||||
| FMT(vowel/e_mid) | FMT(vowel/e_mid) | ||||
| endphoneme | endphoneme | ||||
| phoneme O | phoneme O | ||||
| vwl starttype #o endtype #o | vwl starttype #o endtype #o | ||||
| length 170 | length 170 | ||||
| ChangeIfUnstressed(U) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordEnd) AND nextPh(isVowel) THEN | |||||
| IF nextPh(i) THEN | |||||
| ChangePhoneme(u) | |||||
| ELSE | |||||
| ChangePhoneme(w) | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) AND prevPh(isVowel) THEN | |||||
| ChangePhoneme(w) | |||||
| ELSE | |||||
| ChangePhoneme(u) | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/oo) | FMT(vowel/oo) | ||||
| endphoneme | endphoneme | ||||
| phoneme o | phoneme o | ||||
| vwl starttype #o endtype #o | vwl starttype #o endtype #o | ||||
| length 170 | length 170 | ||||
| ChangeIfUnstressed(U) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordEnd) AND nextPh(isVowel) THEN | |||||
| IF nextPh(i) THEN | |||||
| ChangePhoneme(u) | |||||
| ELSE | |||||
| ChangePhoneme(w) | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) AND prevPh(isVowel) THEN | |||||
| ChangePhoneme(w) | |||||
| ELSE | |||||
| ChangePhoneme(u) | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme o2 | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| FMT(vowel/o) | FMT(vowel/o) | ||||
| endphoneme | endphoneme | ||||
| phoneme O2 | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| FMT(vowel/oo) | |||||
| endphoneme | |||||
| phoneme U | phoneme U | ||||
| vwl starttype #u endtype #u | vwl starttype #u endtype #u | ||||
| unstressed | unstressed | ||||
| phoneme u | phoneme u | ||||
| vwl starttype #u endtype #u | vwl starttype #u endtype #u | ||||
| length 160 | length 160 | ||||
| ChangeIfUnstressed(U) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVowel) THEN | |||||
| IF nextPh(i) THEN | |||||
| ELSE | |||||
| ChangePhoneme(w) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) THEN | |||||
| IF prevPh(isVowel) THEN | |||||
| ChangePhoneme(w) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/u_bck) | FMT(vowel/u_bck) | ||||
| endphoneme | endphoneme | ||||
| phoneme i | |||||
| vwl starttype #i endtype #i | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVowel) THEN | |||||
| IF nextPh(u) THEN | |||||
| ELSE | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) THEN | |||||
| IF prevPh(isVowel) THEN | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/i) | |||||
| endphoneme | |||||
| // nasals | |||||
| //============== | |||||
| phoneme M | |||||
| vls lbd nas | |||||
| ipa ɱ | |||||
| IF nextPh(v) THEN | |||||
| ChangePhoneme(m) | |||||
| ENDIF | |||||
| endphoneme | |||||
| phoneme m | |||||
| vcd blb nas | |||||
| Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||||
| lengthmod 4 | |||||
| IF KlattSynth THEN | |||||
| Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(klatt/m_) | |||||
| ENDIF | |||||
| FMT(klatt/m) | |||||
| ENDIF | |||||
| NextVowelStarts | |||||
| VowelStart(m/m@) | |||||
| VowelStart(m/ma) | |||||
| VowelStart(m/me) | |||||
| VowelStart(m/mi) | |||||
| VowelStart(m/mo) | |||||
| VowelStart(m/mu) | |||||
| EndSwitch | |||||
| IF nextPh(f) OR nextPh(v) THEN | |||||
| ChangePhoneme(M) | |||||
| ENDIF | |||||
| IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN | |||||
| FMT(m/mj) | |||||
| ELIF prevPh(isPause) THEN | |||||
| FMT(m/_m) | |||||
| ELIF nextPh(isNotVowel) THEN | |||||
| FMT(m/m_) | |||||
| ENDIF | |||||
| endphoneme | |||||
| phoneme n | |||||
| vcd alv nas | |||||
| Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk | |||||
| lengthmod 4 | |||||
| IF KlattSynth THEN | |||||
| Vowelin f1=0 f2=1500 -200 200 f3=0 80 | |||||
| FMT(klatt/n) | |||||
| ENDIF | |||||
| NextVowelStarts | |||||
| VowelStart(n/n@) | |||||
| VowelStart(n/na) | |||||
| VowelStart(n/ne) | |||||
| VowelStart(n/ni) | |||||
| VowelStart(n/no) | |||||
| VowelStart(n/nu) | |||||
| EndSwitch | |||||
| IF nextPh(f) THEN | |||||
| ChangePhoneme(M) | |||||
| ELIF nextPh(k) OR nextPh(g) THEN | |||||
| ChangePhoneme(N) | |||||
| ELIF nextPh(p) OR nextPh(b) OR nextPh(v) OR nextPh(m) THEN | |||||
| ChangePhoneme(m) | |||||
| ELIF nextPh(l^) OR nextPh(n^) THEN | |||||
| ChangePhoneme(n^) | |||||
| ENDIF | |||||
| IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN | |||||
| FMT(n/nj) | |||||
| ELIF prevPh(isPause) OR prevPh(n) THEN | |||||
| FMT(n/_n) | |||||
| ELIF nextPh(isNotVowel) THEN | |||||
| FMT(n/n_) | |||||
| ENDIF | |||||
| endphoneme | |||||
| phoneme l | phoneme l | ||||
| import_phoneme en/l // use 'dark' [l] after a vowel | import_phoneme en/l // use 'dark' [l] after a vowel | ||||
| endphoneme | endphoneme | ||||
| // fricatives | |||||
| //================ | |||||
| phoneme s | |||||
| vls alv frc sib | |||||
| voicingswitch z | |||||
| lengthmod 3 | |||||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| IF prevPh(isPalatal) OR nextPh(S) OR nextPh(Z) THEN | |||||
| IF prevPh(j) THEN | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| ChangePhoneme(Z) | |||||
| ELSE | |||||
| ChangePhoneme(S) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) THEN | |||||
| ChangePhoneme(z) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF nextPh(isPause) THEN | |||||
| WAV(ufric/s_) | |||||
| ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN | |||||
| WAV(ufric/s!) | |||||
| ENDIF | |||||
| WAV(ufric/s) | |||||
| endphoneme | |||||
| phoneme z | |||||
| vcd alv frc sib | |||||
| voicingswitch s | |||||
| lengthmod 6 | |||||
| Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | |||||
| IF prevPh(isPalatal) OR nextPh(Z) THEN | |||||
| IF prevPh(j) THEN | |||||
| ELSE | |||||
| ChangePhoneme(Z) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF KlattSynth THEN | |||||
| Vowelin f1=0 f2=1390 -300 300 f3=0 0 | |||||
| Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(voc/z_) addWav(ufric/s_, 70) | |||||
| ENDIF | |||||
| FMT(voc/z) addWav(ufric/s_, 85) | |||||
| endphoneme | |||||
| phoneme f | |||||
| vls lbd frc | |||||
| voicingswitch v | |||||
| lengthmod 3 | |||||
| Vowelout f1=0 f2=1000 -500 -350 f3=-200 80 | |||||
| IF thisPh(isWordStart) THEN | |||||
| ELSE | |||||
| IF nextPh(isVoiced) THEN | |||||
| IF thisPh(isWordEnd) THEN | |||||
| ipa v | |||||
| ELSE | |||||
| IF nextPh(isVowel) OR nextPh(l) OR nextPh(**) OR nextPh(R) THEN | |||||
| ELSE | |||||
| ipa v | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF nextPh(isPause) THEN | |||||
| WAV(ufric/f_) | |||||
| ENDIF | |||||
| WAV(ufric/f) | |||||
| endphoneme | |||||
| phoneme v // = b | |||||
| vcd blb stp | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ELIF prevPh(m) THEN | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ChangePhoneme(b) | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(B) | |||||
| ELSE | |||||
| ChangePhoneme(b) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(b) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| CALL base1/b | |||||
| endphoneme | |||||
| // R | |||||
| //===================== | |||||
| phoneme R | |||||
| liquid trl | |||||
| lengthmod 6 | |||||
| ipa r | |||||
| IF thisPh(isWordEnd) AND nextPh(R) THEN | |||||
| ipa NULL | |||||
| ENDIF | |||||
| Vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||||
| Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||||
| FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65) | |||||
| endphoneme | |||||
| // plosives (oclusives) | |||||
| // ==================== | |||||
| phoneme b | |||||
| vcd blb stp | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ELIF prevPh(m) THEN | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(B) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| CALL base1/b | |||||
| endphoneme | |||||
| phoneme g | |||||
| vcd vel stp | |||||
| lengthmod 5 | |||||
| voicingswitch k | |||||
| Vowelin f1=2 f2=2300 200 300 f3=-300 80 | |||||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ELSE | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(Q) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| IF PreVoicing THEN | |||||
| FMT(g/xg) | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(g/g_) addWav(x/g_) | |||||
| ENDIF | |||||
| FMT(g/g) addWav(x/g2) | |||||
| endphoneme | |||||
| phoneme d | |||||
| vcd dnt stp | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ELSE | |||||
| ChangePhoneme(t) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(**) OR prevPh(R) OR prevPh(j) OR prevPh(w) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(D) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(t) | |||||
| ENDIF | |||||
| CALL base2/d | |||||
| endphoneme | |||||
| phoneme p | |||||
| vls blb stp | |||||
| lengthmod 2 | |||||
| voicingswitch b | |||||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | |||||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | |||||
| IF nextPh(isPause2) THEN | |||||
| WAV(ustop/p_unasp_, 80) | |||||
| ELIF nextPh(isRhotic) THEN | |||||
| WAV(ustop/pr) | |||||
| ELIF nextPh(l) THEN | |||||
| WAV(ustop/pl) | |||||
| ELIF thisPh(isWordStart) THEN // don't change it if it's word start | |||||
| ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| IF nextPh(w) OR nextPh(j) THEN | |||||
| ELSE | |||||
| ChangePhoneme(b) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(b) | |||||
| ENDIF | |||||
| WAV(ustop/p_unasp) | |||||
| endphoneme | |||||
| phoneme t // dental variant of /t/ | |||||
| vls dnt stp | |||||
| lengthmod 2 | |||||
| voicingswitch d | |||||
| Vowelin f1=0 f2=1600 -300 300 f3=-100 80 | |||||
| Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||||
| IF nextPh(isPause2) THEN | |||||
| WAV(ustop/t_dnt, 30) | |||||
| ELIF thisPh(isWordStart) THEN // don't change it if it's word start | |||||
| ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| IF nextPh(**) OR nextPh(w) OR nextPh(j) THEN | |||||
| ELSE | |||||
| ChangePhoneme(d) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(d) | |||||
| ENDIF | |||||
| WAV(ustop/t_dnt2, 60) | |||||
| endphoneme | |||||
| phoneme k | |||||
| vls vel stp | |||||
| lengthmod 2 | |||||
| voicingswitch g | |||||
| Vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||||
| Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||||
| IF nextPh(isPause2) THEN | |||||
| WAV(ustop/k_) | |||||
| ELIF nextPh(isRhotic) THEN | |||||
| WAV(ustop/kr) | |||||
| ELIF thisPh(isWordStart) THEN // don't change it if it's word start | |||||
| ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| IF nextPh(w) OR nextPh(j) THEN | |||||
| ELIF nextPh(n) OR nextPh(d) OR nextPh(z) THEN | |||||
| ChangePhoneme(g) | |||||
| ELIF thisPh(isWordEnd) THEN | |||||
| ChangePhoneme(g) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(g) | |||||
| ENDIF | |||||
| WAV(ustop/k_unasp, 70) | |||||
| endphoneme | |||||
| phoneme tS | |||||
| vls pla afr sib | |||||
| voicingswitch dZ | |||||
| lengthmod 2 | |||||
| Vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||||
| IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN | |||||
| ChangePhoneme(dZ) | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(dZ) | |||||
| ENDIF | |||||
| WAV(ustop/tsh) | |||||
| endphoneme |
| //==================================================== | |||||
| // Catalan balearic - based on Catalan (and Spanish and Base2) | |||||
| //==================================================== | |||||
| // plosives (oclusives) | |||||
| // ==================== | |||||
| // following https://giec.iec.cat/textgramatica/codi/4.2.1 | |||||
| phoneme p | |||||
| vls blb stp | |||||
| lengthmod 2 | |||||
| voicingswitch b | |||||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | |||||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | |||||
| IF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN | |||||
| IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(t) OR nextPh(s) OR nextPh(ts) THEN | |||||
| ChangePhoneme(t) | |||||
| ELIF nextPh(g) THEN | |||||
| ChangePhoneme(g) | |||||
| ELIF nextPh(Z) THEN | |||||
| ChangePhoneme(d) | |||||
| ELIF nextPh(f) THEN | |||||
| ChangePhoneme(f) | |||||
| ELIF nextPh(R) OR nextPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(m) THEN | |||||
| ChangePhoneme(m) | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| ChangePhoneme(b) | |||||
| ENDIF | |||||
| ELIF nextPh(isRhotic) THEN | |||||
| WAV(ustop/pr) | |||||
| ELIF nextPh(l) THEN | |||||
| WAV(ustop/pl) | |||||
| ELIF thisPh(isWordStart) THEN // don't change it if it's word start | |||||
| ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ChangePhoneme(b) | |||||
| ELIF nextPh(t) THEN | |||||
| ChangePhoneme(t) | |||||
| ELIF nextPh(s) THEN | |||||
| IF nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(d) | |||||
| ELSE | |||||
| ChangePhoneme(t) | |||||
| ENDIF | |||||
| ENDIF | |||||
| WAV(ustop/p_unasp) | |||||
| endphoneme | |||||
| phoneme t // dental variant of /t/ | |||||
| vls dnt stp | |||||
| lengthmod 2 | |||||
| voicingswitch d | |||||
| Vowelin f1=0 f2=1600 -300 300 f3=-100 80 | |||||
| Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||||
| IF nextPh(isPause2) THEN | |||||
| WAV(ustop/t_dnt, 30) | |||||
| ELIF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN | |||||
| IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(k) THEN | |||||
| ChangePhoneme(k) | |||||
| ELIF nextPh(b) THEN | |||||
| ChangePhoneme(b) | |||||
| ELIF nextPh(f) THEN | |||||
| ChangePhoneme(f) | |||||
| ELIF nextPh(p) THEN | |||||
| ChangePhoneme(p) | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| ChangePhoneme(d) | |||||
| ENDIF | |||||
| ELIF nextPh(isWordEnd) AND nextPh(s) THEN | |||||
| IF next2Ph(k) THEN | |||||
| ChangePhoneme(k) | |||||
| ELIF next2Ph(b) THEN | |||||
| ChangePhoneme(b) | |||||
| ELIF next2Ph(isVoiced) THEN | |||||
| ChangePhoneme(d) | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) THEN // don't change it if it's word start | |||||
| ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| IF nextPh(**) THEN | |||||
| ELSE | |||||
| ChangePhoneme(d) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(d) | |||||
| ENDIF | |||||
| WAV(ustop/t_dnt2, 60) | |||||
| endphoneme | |||||
| phoneme k | |||||
| vls vel stp | |||||
| lengthmod 2 | |||||
| voicingswitch g | |||||
| Vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||||
| Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||||
| IF nextPh(isPause2) THEN | |||||
| WAV(ustop/k_) | |||||
| ELIF nextPh(isRhotic) THEN | |||||
| WAV(ustop/kr) | |||||
| ELIF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN | |||||
| IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(t) OR nextPh(s) OR nextPh(ts) THEN | |||||
| ChangePhoneme(t) | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| ChangePhoneme(g) | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) THEN // don't change it if it's word start | |||||
| ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| IF nextPh(w) THEN | |||||
| ELIF nextPh(n) OR nextPh(d) OR nextPh(z) THEN | |||||
| ChangePhoneme(g) | |||||
| ENDIF | |||||
| ELIF nextPh(t) OR nextPh(ts) THEN | |||||
| ChangePhoneme(t) | |||||
| ELIF nextPh(s) THEN | |||||
| IF nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(d) | |||||
| ELSE | |||||
| ChangePhoneme(t) | |||||
| ENDIF | |||||
| ENDIF | |||||
| WAV(ustop/k_unasp, 70) | |||||
| endphoneme | |||||
| phoneme b | |||||
| vcd blb stp | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isNotVowel) AND NOT nextPh(isPause) THEN | |||||
| IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF NOT nextPh(isVoiced) THEN | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(s) OR nextPh(t) THEN | |||||
| ChangePhoneme(t) | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(B) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| CALL base1/b | |||||
| endphoneme | |||||
| phoneme g | |||||
| vcd vel stp | |||||
| lengthmod 5 | |||||
| voicingswitch k | |||||
| Vowelin f1=2 f2=2300 200 300 f3=-300 80 | |||||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isNotVowel) AND NOT nextPh(isPause) THEN | |||||
| IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF NOT nextPh(isVoiced) THEN | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(m) THEN | |||||
| ChangePhoneme(m) | |||||
| ELIF nextPh(d) THEN | |||||
| ChangePhoneme(g) | |||||
| ELIF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(Q) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| IF PreVoicing THEN | |||||
| FMT(g/xg) | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(g/g_) addWav(x/g_) | |||||
| ENDIF | |||||
| FMT(g/g) addWav(x/g2) // weaker [g] | |||||
| endphoneme | |||||
| phoneme d | |||||
| vcd dnt stp | |||||
| IF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN | |||||
| IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(p) THEN | |||||
| ChangePhoneme(p) | |||||
| ELIF NOT nextPh(isVoiced) THEN | |||||
| ChangePhoneme(t) | |||||
| ENDIF ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(m) THEN | |||||
| ChangePhoneme(m) | |||||
| ELIF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(**) OR prevPh(R) OR prevPh(j) OR prevPh(w) OR prevPh(s) OR prevPh(z) THEN | |||||
| ChangePhoneme(D) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(t) | |||||
| ENDIF | |||||
| CALL base2/d | |||||
| endphoneme | |||||
| // vowels | |||||
| //===================================================== | |||||
| phoneme e | |||||
| vwl starttype #e endtype #e | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(@) | |||||
| ENDIF | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme O | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(o) OR nextPh(O) THEN | |||||
| ipa NULL | |||||
| ELSE | |||||
| ChangeIfUnstressed(o) | |||||
| ENDIF | |||||
| ELIF thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(o) | |||||
| ENDIF | |||||
| FMT(vowel/oo) | |||||
| endphoneme | |||||
| phoneme o | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme @ // Schwa, e.g. alph**a** | |||||
| vwl starttype #@ endtype #@ | |||||
| length 140 | |||||
| FMT(vowel/@) | |||||
| endphoneme | |||||
| // fricatives | |||||
| // ==================================== | |||||
| phoneme v | |||||
| vcd lbd frc | |||||
| voicingswitch f | |||||
| lengthmod 6 | |||||
| Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||||
| Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 | |||||
| IF thisPh(isWordEnd) AND prevPh(**) AND nextPh(isNotVowel) THEN | |||||
| ipa NULL | |||||
| ENDIF | |||||
| IF KlattSynth THEN | |||||
| Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(klatt/v_) addWav(vocw/v) | |||||
| ENDIF | |||||
| FMT(klatt/v) addWav(vocw/v, 150) | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(voc/v_) addWav(vocw/v) | |||||
| ENDIF | |||||
| IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN | |||||
| length 70 | |||||
| ENDIF | |||||
| FMT(voc/v) addWav(vocw/v) | |||||
| endphoneme | |||||
| phoneme f | |||||
| vls lbd frc | |||||
| voicingswitch v | |||||
| lengthmod 3 | |||||
| Vowelout f1=0 f2=1000 -500 -350 f3=-200 80 | |||||
| IF thisPh(isWordEnd)THEN | |||||
| IF prevPh(**) THEN | |||||
| ipa NULL | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| ipa v | |||||
| ENDIF | |||||
| ELIF nextPh(s) THEN | |||||
| IF nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation | |||||
| ChangePhoneme(d) | |||||
| ELSE | |||||
| ChangePhoneme(t) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF nextPh(isPause) THEN | |||||
| WAV(ufric/f_) | |||||
| ENDIF | |||||
| WAV(ufric/f) | |||||
| endphoneme | |||||
| // liquid | |||||
| // ===================================== | |||||
| phoneme ** // "cara" | |||||
| liquid alv rhotic | |||||
| ipa ɾ | |||||
| lengthmod 3 | |||||
| Vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15 | |||||
| Vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20 | |||||
| IF nextPh(isWordEnd) AND nextPh(isNasal) THEN | |||||
| ipa NULL | |||||
| ENDIF | |||||
| IF prevPh(#i) OR prevPh(#e) THEN | |||||
| FMT(r3/@tap2) | |||||
| ENDIF | |||||
| FMT(r3/@tap) | |||||
| endphoneme | |||||
| phoneme l^ // "calla" | |||||
| liquid | |||||
| ipa ʎ | |||||
| lengthmod 7 | |||||
| Vowelout len=60 lenadd rate | |||||
| length 100 | |||||
| NextVowelStarts | |||||
| VowelStart(l^/j2@) | |||||
| VowelStart(l^/j2a) | |||||
| VowelStart(l^/j2e) | |||||
| VowelStart(l^/j2i) | |||||
| VowelStart(l^/j2o) | |||||
| VowelStart(l^/j2u) | |||||
| EndSwitch | |||||
| IF prevPh(isPause) THEN | |||||
| FMT(l^/_l^) | |||||
| ELIF prevPh(isVowel) THEN | |||||
| IF nextPh(isPause) THEN | |||||
| ChangePhoneme(j) | |||||
| ELIF nextPh(s) AND next2Ph(isPause) THEN | |||||
| ChangePhoneme(j) | |||||
| ELIF nextPh(isVowel) AND NOT thisPh(isWordEnd) AND NOT thisPh(isWordStart) THEN | |||||
| IF nextPh(isStressed) THEN | |||||
| IF nextPh(i) OR nextPh(e) THEN | |||||
| ipa NULL | |||||
| ELSE | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| ELIF prevPh(isStressed) THEN | |||||
| IF prevPh(i) OR prevPh(e) THEN | |||||
| ipa NULL | |||||
| ELSE | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(l^/l^) | |||||
| endphoneme | |||||
| // fricatives | |||||
| //================================0 | |||||
| phoneme s // dissimilation | |||||
| vls alv frc sib | |||||
| voicingswitch z | |||||
| lengthmod 3 | |||||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN | |||||
| ChangePhoneme(z) | |||||
| ELIF thisPh(isWordStart) THEN | |||||
| IF prevPh(t) THEN | |||||
| ChangePhoneme(ts) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF nextPh(isPause) THEN | |||||
| WAV(ufric/s_) | |||||
| ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN | |||||
| WAV(ufric/s!) | |||||
| ENDIF | |||||
| WAV(ufric/s) | |||||
| endphoneme | |||||
| // nasals | |||||
| // =========================== | |||||
| phoneme m | |||||
| vcd blb nas | |||||
| Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||||
| lengthmod 4 | |||||
| IF KlattSynth THEN | |||||
| Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(klatt/m_) | |||||
| ENDIF | |||||
| FMT(klatt/m) | |||||
| ENDIF | |||||
| NextVowelStarts | |||||
| VowelStart(m/m@) | |||||
| VowelStart(m/ma) | |||||
| VowelStart(m/me) | |||||
| VowelStart(m/mi) | |||||
| VowelStart(m/mo) | |||||
| VowelStart(m/mu) | |||||
| EndSwitch | |||||
| IF nextPh(f) OR nextPh(v) THEN | |||||
| ChangePhoneme(M) | |||||
| ELIF nextPh(t) OR nextPh(d) OR nextPh(s) OR nextPh(z) OR nextPh(R) OR nextPh(S) OR nextPh(Z) THEN | |||||
| ChangePhoneme(n) | |||||
| ELIF nextPh(l^) OR nextPh(n^) THEN | |||||
| ChangePhoneme(n^) | |||||
| ELIF nextPh(k) OR nextPh(g) THEN | |||||
| ChangePhoneme(N) | |||||
| ELIF thisPh(isWordEnd) THEN | |||||
| IF nextPh(j) THEN | |||||
| ChangePhoneme(j) | |||||
| ELIF nextPh(l) THEN | |||||
| ChangePhoneme(l) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN | |||||
| FMT(m/mj) | |||||
| ELIF prevPh(isPause) THEN | |||||
| FMT(m/_m) | |||||
| ELIF nextPh(isNotVowel) THEN | |||||
| FMT(m/m_) | |||||
| ENDIF | |||||
| endphoneme | |||||
| phoneme n | |||||
| vcd alv nas | |||||
| Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk | |||||
| lengthmod 4 | |||||
| IF KlattSynth THEN | |||||
| Vowelin f1=0 f2=1500 -200 200 f3=0 80 | |||||
| FMT(klatt/n) | |||||
| ENDIF | |||||
| NextVowelStarts | |||||
| VowelStart(n/n@) | |||||
| VowelStart(n/na) | |||||
| VowelStart(n/ne) | |||||
| VowelStart(n/ni) | |||||
| VowelStart(n/no) | |||||
| VowelStart(n/nu) | |||||
| EndSwitch | |||||
| IF nextPh(f) OR nextPh(v) THEN | |||||
| ChangePhoneme(M) | |||||
| ELIF nextPh(k) OR nextPh(g) THEN | |||||
| ChangePhoneme(N) | |||||
| ELIF nextPh(p) OR nextPh(b) OR nextPh(v) OR nextPh(m) THEN | |||||
| ChangePhoneme(m) | |||||
| ELIF thisPh(isWordEnd) THEN | |||||
| IF nextPh(l^) OR nextPh(n^) THEN | |||||
| ChangePhoneme(n^) | |||||
| ELIF nextPh(j) THEN | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| ENDIF | |||||
| IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN | |||||
| FMT(n/nj) | |||||
| ELIF prevPh(isPause) OR prevPh(n) THEN | |||||
| FMT(n/_n) | |||||
| ELIF nextPh(isNotVowel) THEN | |||||
| FMT(n/n_) | |||||
| ENDIF | |||||
| endphoneme |
| //==================================================== | |||||
| // Catalan valencian - based on Catalan (and Spanish and Base2) | |||||
| //==================================================== | |||||
| // vowels | |||||
| //============= | |||||
| phoneme a | |||||
| vwl starttype #a endtype #a | |||||
| length 180 | |||||
| IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(E) | |||||
| ENDIF | |||||
| FMT(vowel/a_6) | |||||
| endphoneme | |||||
| phoneme a2 // does not change in central accent | |||||
| vwl starttype #a endtype #a | |||||
| length 180 | |||||
| FMT(vowel/a_6) | |||||
| endphoneme | |||||
| phoneme e | |||||
| vwl starttype #e endtype #e | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordStart) THEN | |||||
| IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN | |||||
| ChangePhoneme(a) | |||||
| ELIF nextPh(j) AND next2Ph(S) THEN | |||||
| ChangePhoneme(a) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme e2 // don't reduce: "aeri", "aeròdrom". | |||||
| vwl starttype #e endtype #e | |||||
| length 170 | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme E | |||||
| vwl starttype #e endtype #e | |||||
| length 180 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordStart) THEN | |||||
| IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN | |||||
| ChangePhoneme(a) | |||||
| ELIF nextPh(j) AND next2Ph(S) THEN | |||||
| ChangePhoneme(a) | |||||
| ELSE | |||||
| ChangePhoneme(e) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(e) | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/e_mid) | |||||
| endphoneme | |||||
| phoneme E2 // don't reduce | |||||
| vwl starttype #e endtype #e | |||||
| length 180 | |||||
| ChangeIfUnstressed(e2) | |||||
| FMT(vowel/e_mid) | |||||
| endphoneme | |||||
| phoneme O | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| ChangePhoneme(o) | |||||
| ENDIF | |||||
| FMT(vowel/oo) | |||||
| endphoneme | |||||
| phoneme o | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme o2 | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| ChangeIfStressed(o) | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme i | |||||
| vwl starttype #i endtype #i | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) AND nextPh(isVowel) THEN | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| FMT(vowel/i) | |||||
| endphoneme | |||||
| // affricates | |||||
| //================ | |||||
| phoneme Z | |||||
| vcd pla frc sib | |||||
| voicingswitch S | |||||
| lengthmod 6 | |||||
| Vowelin f1=0 f2=2000 0 300 f3=-200 80 | |||||
| Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | |||||
| IF thisPh(isWordStart) OR prevPh(isNotVowel) THEN | |||||
| IF prevPh(d) THEN | |||||
| ELSE | |||||
| ChangePhoneme(dZ) | |||||
| ENDIF | |||||
| ENDIF | |||||
| endphoneme | |||||
| phoneme S | |||||
| vls pla frc sib | |||||
| voicingswitch Z | |||||
| lengthmod 3 | |||||
| Vowelin f1=0 f2=2100 100 300 f3=-100 80 | |||||
| Vowelout f1=0 f2=2100 100 300 f3=-100 80 | |||||
| IF thisPh(isWordStart) THEN // initial or post-consonant position | |||||
| ChangePhoneme(tS) | |||||
| ELIF prevPh(isNotVowel) THEN | |||||
| IF prevPh(j) THEN | |||||
| IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN | |||||
| ChangePhoneme(Z) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(tS) | |||||
| ENDIF | |||||
| ENDIF | |||||
| WAV(ufric/sh) | |||||
| endphoneme | |||||
| phoneme v | |||||
| vcd lbd frc | |||||
| voicingswitch f | |||||
| lengthmod 6 | |||||
| Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||||
| Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 | |||||
| IF KlattSynth THEN | |||||
| Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(klatt/v_) addWav(vocw/v) | |||||
| ENDIF | |||||
| FMT(klatt/v) addWav(vocw/v, 150) | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(voc/v_) addWav(vocw/v) | |||||
| ENDIF | |||||
| IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN | |||||
| length 70 | |||||
| ENDIF | |||||
| FMT(voc/v) addWav(vocw/v) | |||||
| endphoneme |
| //==================================================== | |||||
| // Catalan valencian - based on Catalan (and Spanish and Base2) | |||||
| //==================================================== | |||||
| // vowels | |||||
| //============= | |||||
| phoneme a | |||||
| vwl starttype #a endtype #a | |||||
| length 180 | |||||
| FMT(vowel/a_6) | |||||
| endphoneme | |||||
| phoneme a2 // does not change in central accent | |||||
| vwl starttype #a endtype #a | |||||
| length 180 | |||||
| FMT(vowel/a_6) | |||||
| endphoneme | |||||
| phoneme e | |||||
| vwl starttype #e endtype #e | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordStart) THEN | |||||
| IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN | |||||
| ChangePhoneme(a) | |||||
| ELIF nextPh(j) AND next2Ph(S) THEN | |||||
| ChangePhoneme(a) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme e2 // don't reduce | |||||
| vwl starttype #e endtype #e | |||||
| length 170 | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme E | |||||
| vwl starttype #e endtype #e | |||||
| length 180 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordStart) THEN | |||||
| IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN | |||||
| ChangePhoneme(a) | |||||
| ELIF nextPh(j) AND next2Ph(S) THEN | |||||
| ChangePhoneme(a) | |||||
| ELSE | |||||
| ChangePhoneme(e) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(e) | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/e_mid) | |||||
| endphoneme | |||||
| phoneme E2 // don't reduce | |||||
| vwl starttype #e endtype #e | |||||
| length 180 | |||||
| ChangeIfUnstressed(e2) | |||||
| FMT(vowel/e_mid) | |||||
| endphoneme | |||||
| phoneme O | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| ChangeIfUnstressed(o) | |||||
| FMT(vowel/oo) | |||||
| endphoneme | |||||
| phoneme o2 | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| ChangeIfStressed(O) | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme o | |||||
| vwl starttype #o endtype #o | |||||
| length 170 | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme u | |||||
| vwl starttype #u endtype #u | |||||
| length 160 | |||||
| IF thisPh(isUnstressed) THEN | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVowel) THEN | |||||
| IF nextPh(u) OR nextPh(w) THEN | |||||
| ELSE | |||||
| ChangePhoneme(w) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELIF thisPh(isWordStart) THEN | |||||
| IF prevPh(isVowel) THEN | |||||
| ChangePhoneme(w) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| FMT(vowel/u_bck) | |||||
| endphoneme | |||||
| phoneme i | |||||
| vwl starttype #i endtype #i | |||||
| length 170 | |||||
| IF thisPh(isUnstressed) AND nextPh(isVowel) THEN | |||||
| ChangePhoneme(j) | |||||
| ENDIF | |||||
| FMT(vowel/i) | |||||
| endphoneme | |||||
| // nasals | |||||
| //============== | |||||
| phoneme n | |||||
| vcd alv nas | |||||
| Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk | |||||
| lengthmod 4 | |||||
| IF KlattSynth THEN | |||||
| Vowelin f1=0 f2=1500 -200 200 f3=0 80 | |||||
| FMT(klatt/n) | |||||
| ENDIF | |||||
| NextVowelStarts | |||||
| VowelStart(n/n@) | |||||
| VowelStart(n/na) | |||||
| VowelStart(n/ne) | |||||
| VowelStart(n/ni) | |||||
| VowelStart(n/no) | |||||
| VowelStart(n/nu) | |||||
| EndSwitch | |||||
| IF nextPh(f) OR nextPh(v) THEN | |||||
| ChangePhoneme(M) | |||||
| ELIF nextPh(k) OR nextPh(g) THEN | |||||
| ChangePhoneme(N) | |||||
| ELIF nextPh(p) OR nextPh(b) OR nextPh(m) THEN | |||||
| ChangePhoneme(m) | |||||
| ENDIF | |||||
| IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN | |||||
| FMT(n/nj) | |||||
| ELIF prevPh(isPause) OR prevPh(n) THEN | |||||
| FMT(n/_n) | |||||
| ELIF nextPh(isNotVowel) THEN | |||||
| FMT(n/n_) | |||||
| ENDIF | |||||
| endphoneme | |||||
| // R | |||||
| //===================== | |||||
| phoneme R | |||||
| liquid trl | |||||
| lengthmod 6 | |||||
| ipa r | |||||
| IF thisPh(isWordEnd) THEN | |||||
| ChangePhoneme(**) | |||||
| ENDIF | |||||
| Vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||||
| Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||||
| FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65) | |||||
| endphoneme | |||||
| // affricates | |||||
| //================ | |||||
| phoneme Z | |||||
| vcd pla frc sib | |||||
| voicingswitch S | |||||
| lengthmod 6 | |||||
| Vowelin f1=0 f2=2000 0 300 f3=-200 80 | |||||
| Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | |||||
| ChangePhoneme(dZ) | |||||
| endphoneme | |||||
| phoneme S | |||||
| vls pla frc sib | |||||
| voicingswitch Z | |||||
| lengthmod 3 | |||||
| Vowelin f1=0 f2=2100 100 300 f3=-100 80 | |||||
| Vowelout f1=0 f2=2100 100 300 f3=-100 80 | |||||
| IF prevPh(i) OR prevPh(j) THEN | |||||
| IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN | |||||
| ChangePhoneme(Z) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(tS) | |||||
| ENDIF | |||||
| WAV(ufric/sh) | |||||
| endphoneme | |||||
| phoneme v | |||||
| vcd lbd frc | |||||
| voicingswitch f | |||||
| lengthmod 6 | |||||
| Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||||
| Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 | |||||
| IF KlattSynth THEN | |||||
| Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(klatt/v_) addWav(vocw/v) | |||||
| ENDIF | |||||
| FMT(klatt/v) addWav(vocw/v, 150) | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(voc/v_) addWav(vocw/v) | |||||
| ENDIF | |||||
| IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN | |||||
| length 70 | |||||
| ENDIF | |||||
| FMT(voc/v) addWav(vocw/v) | |||||
| endphoneme | |||||
| // Occlusive stops | |||||
| //================= | |||||
| phoneme b | |||||
| vcd blb stp | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ELIF prevPh(m) THEN | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| IF prevPh(**) OR prevPh(R) THEN //***"embarbussa"*** | |||||
| ELSE | |||||
| ChangePhoneme(B) | |||||
| ENDIF | |||||
| ENDIF | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(p) | |||||
| ENDIF | |||||
| CALL base1/b | |||||
| endphoneme | |||||
| phoneme g | |||||
| vcd vel stp | |||||
| lengthmod 5 | |||||
| voicingswitch k | |||||
| Vowelin f1=2 f2=2300 200 300 f3=-300 80 | |||||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
| IF thisPh(isWordEnd) THEN | |||||
| IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN | |||||
| ELSE | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority | |||||
| ELIF nextPh(isVoiced) THEN | |||||
| IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN | |||||
| IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN | |||||
| ChangePhoneme(Q) | |||||
| ENDIF | |||||
| ELIF nextPh(n) THEN | |||||
| ChangePhoneme(N) | |||||
| ENDIF | |||||
| ELSE | |||||
| ChangePhoneme(k) | |||||
| ENDIF | |||||
| IF PreVoicing THEN | |||||
| FMT(g/xg) | |||||
| ENDIF | |||||
| IF nextPh(isPause2) THEN | |||||
| FMT(g/g_) addWav(x/g_) | |||||
| ENDIF | |||||
| FMT(g/g) addWav(x/g2) | |||||
| endphoneme | |||||
| ENDIF | ENDIF | ||||
| endphoneme | endphoneme | ||||
| phoneme N // si**ng** | phoneme N // si**ng** | ||||
| vcd vel nas | vcd vel nas | ||||
| Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | ||||
| phonemetable ca es | phonemetable ca es | ||||
| include ph_catalan | include ph_catalan | ||||
| phonemetable ca-nw ca | |||||
| include ph_catalan_nw | |||||
| phonemetable ca-va ca | |||||
| include ph_catalan_va | |||||
| phonemetable ca-ba ca | |||||
| include ph_catalan_ba | |||||
| phonemetable an es | phonemetable an es | ||||
| include ph_aragon | include ph_aragon | ||||
| if (phoneme_tab[final_ph]->type != phVOWEL) { | if (phoneme_tab[final_ph]->type != phVOWEL) { | ||||
| mnem = phoneme_tab[final_ph]->mnemonic; | mnem = phoneme_tab[final_ph]->mnemonic; | ||||
| if (tr->translator_name == L('a', 'n')) { | |||||
| if ((tr->translator_name == L('a', 'n')) || (tr->translator_name == L('c', 'a'))) { | |||||
| if (((mnem != 's') && (mnem != 'n')) || phoneme_tab[final_ph2]->type != phVOWEL) | if (((mnem != 's') && (mnem != 'n')) || phoneme_tab[final_ph2]->type != phVOWEL) | ||||
| stressed_syllable = vowel_count - 1; // stress on last syllable | stressed_syllable = vowel_count - 1; // stress on last syllable | ||||
| } else if (tr->translator_name == L('i', 'a')) { | } else if (tr->translator_name == L('i', 'a')) { |
| if (name2 == L('c', 'a')) { | if (name2 == L('c', 'a')) { | ||||
| // stress last syllable unless word ends with a vowel | // stress last syllable unless word ends with a vowel | ||||
| tr->punct_within_word = ca_punct_within_word; | tr->punct_within_word = ca_punct_within_word; | ||||
| tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; | |||||
| tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | S_FIRST_PRIMARY; | |||||
| } else if (name2 == L('i', 'a')) { | } else if (name2 == L('i', 'a')) { | ||||
| tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; |
| test_phwav bn 7fc6c8c6b347677885c6e973ff4dc6b2b6fa6d59 "ma na Na pa ta t.a tSa ka p#a t#a t.#a tS#a k#a ba da d.a dZa ga b#a d#a d.#a g#a fa Ba sa za Sa Za ha Ha wa la ja ra *a Ra _:_ ma mE mO me mi mi mu m& mV" | test_phwav bn 7fc6c8c6b347677885c6e973ff4dc6b2b6fa6d59 "ma na Na pa ta t.a tSa ka p#a t#a t.#a tS#a k#a ba da d.a dZa ga b#a d#a d.#a g#a fa Ba sa za Sa Za ha Ha wa la ja ra *a Ra _:_ ma mE mO me mi mi mu m& mV" | ||||
| test_phwav bpy 7fc6c8c6b347677885c6e973ff4dc6b2b6fa6d59 "ma na Na pa ta t.a tSa ka p#a t#a t.#a tS#a k#a ba da d.a dZa ga b#a d#a d.#a g#a fa Ba sa za Sa Za ha Ha wa la ja ra *a Ra _:_ ma mE mO me mi mi mu m& mV" | test_phwav bpy 7fc6c8c6b347677885c6e973ff4dc6b2b6fa6d59 "ma na Na pa ta t.a tSa ka p#a t#a t.#a tS#a k#a ba da d.a dZa ga b#a d#a d.#a g#a fa Ba sa za Sa Za ha Ha wa la ja ra *a Ra _:_ ma mE mO me mi mi mu m& mV" | ||||
| test_phwav bs f3b9ea69a52d9cabc18007c0bb49c16583acef1b "ma na Na pa ta ka ba da ga tsa tSa tS;a dZa dZ;a fa sa Sa xa va za Za ja la l^a Ra r*a _:_ m@ m@2 ma ma: me me: mo mo: mi mi: mu mu: mA m& mE mU maI" | test_phwav bs f3b9ea69a52d9cabc18007c0bb49c16583acef1b "ma na Na pa ta ka ba da ga tsa tSa tS;a dZa dZ;a fa sa Sa xa va za Za ja la l^a Ra r*a _:_ m@ m@2 ma ma: me me: mo mo: mi mi: mu mu: mA m& mE mU maI" | ||||
| test_phwav ca 563b93f7de72fb4832f2908484bad4908680d7da "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu" | |||||
| test_phwav ca 4954e404110f20ce89e77a784996678aa1c7caf7 "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu" | |||||
| test_phwav ca-ba 8446e6833ba24abb13006a081d5ece232322d6ad "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu" | |||||
| test_phwav ca-nw c79f0b9bb228feab4db57e44822cd900793803d9 "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu" | |||||
| test_phwav ca-va e32d68647ebac8cfc16fcf0401cefbfc92681a5b "ma na n^a Na pa ta ka ba da ga tsa tSa dza dZa sa Sa za Za fa Ta xa va Q\"a ja wa la l^a Ra *a _:_ ma ma# me mE mE2 mO mo mi mU mu" | |||||
| test_phwav chr 90c90ca6f4c77cb6bbfaff2a6583825088aaa5cb "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@" | test_phwav chr 90c90ca6f4c77cb6bbfaff2a6583825088aaa5cb "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@" | ||||
| test_phwav cmn 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" | test_phwav cmn 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" | ||||
| test_phwav cmn-Latn-pinyin 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" | test_phwav cmn-Latn-pinyin 368d0fd8e646e37e402377328df39b1d6e832401 "na Na la ja pa pha fa ta tha ka kha tS;a tS;ha S;a s.a tsa tsha ts.a ts.ha N-a _:_ ma mA mai mAu m@ m@r mE mei mi mi[ mi. miA miAu miE mio miou mo mo- mou mong mu muA mua muai mu@ mei muo my myu my& myE my@ myi _:_ ma11 ma21 ma214 ma22 ma33 ma35 ma44 ma51 ma53 ma55" |
| t,ader pr'aj 'O*d#ek,Oi b'aNlad,eSi n'agO*,ik" "মালয়েশিয়ায় অবৈধ শ্রমিকদের বিরুদ্ধে চলমান 'মেগা-থ্রি' অভিযানে সে দেশে শত শত অভিবাসীকে আটক করেছে সে দেশের ইমিগ্রেশন পুলিশ। যাদের আটক করা হয়েছে, তাদের প্রায় অর্ধেকই বাংলাদেশী নাগরিক।" "Beng" | t,ader pr'aj 'O*d#ek,Oi b'aNlad,eSi n'agO*,ik" "মালয়েশিয়ায় অবৈধ শ্রমিকদের বিরুদ্ধে চলমান 'মেগা-থ্রি' অভিযানে সে দেশে শত শত অভিবাসীকে আটক করেছে সে দেশের ইমিগ্রেশন পুলিশ। যাদের আটক করা হয়েছে, তাদের প্রায় অর্ধেকই বাংলাদেশী নাগরিক।" "Beng" | ||||
| test_phon bs "l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Cyrl" | test_phon bs "l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Cyrl" | ||||
| test_phon bs "l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." "Latn" | test_phon bs "l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." "Latn" | ||||
| test_phon ca "d'ona# a#m'o* k'E s@**,as f'Elis | |||||
| a#jS;'O | |||||
| ill'us k'ompa#n^ Q@nj'ut | |||||
| Z;'a es Un l^w'it *R'EtUl Bla#B'is D'onz@_:_: k'e v#,e D,oBl@'ak" "Dóna amor que seràs feliç. Això, il·lús company geniüt, ja és un lluït rètol blavís d’onze kWh." "Latn" | |||||
| test_phon ca "d'on@ @m'oR k@ s@**'as f@l'is | |||||
| si n'o @nz @nt@n'Em p@** l^@Ngw'adZ@ | |||||
| @nt@Ng'Emnus p@** @m'oR" "Dóna amor que seràs feliç. Si no ens entenem per llenguatge, entenguem-nos per amor." "Latn" | |||||
| test_phon cs "n'exc j'iS hR^'i:Sne: s'aksof,oni J'a:blu: R'ozezv,utSi: s'i:n^ 'u:Jesn,i:mi t'o:ni v'aldzu | test_phon cs "n'exc j'iS hR^'i:Sne: s'aksof,oni J'a:blu: R'ozezv,utSi: s'i:n^ 'u:Jesn,i:mi t'o:ni v'aldzu | ||||
| t'aNga_! a kv'itskstepu | t'aNga_! a kv'itskstepu | ||||
| pR^'i:liZ Zl'ucoUtSki: k'u:n^ 'u:pjel J'a:belske: 'o:di" "Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu. Příliš žluťoučký kůň úpěl ďábelské ódy." "Latn" | pR^'i:liZ Zl'ucoUtSki: k'u:n^ 'u:pjel J'a:belske: 'o:di" "Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu. Příliš žluťoučký kůň úpěl ďábelské ódy." "Latn" |