diff --git a/phonemizer/backend/espeak/base.py b/phonemizer/backend/espeak/base.py index 387598b..e1ee6df 100644 --- a/phonemizer/backend/espeak/base.py +++ b/phonemizer/backend/espeak/base.py @@ -15,13 +15,12 @@ """Base class of espeak backends for the phonemizer""" import abc +import re from logging import Logger from typing import Optional, Union, Pattern from phonemizer.backend.base import BaseBackend from phonemizer.backend.espeak.wrapper import EspeakWrapper -from phonemizer.logger import get_logger -from phonemizer.punctuation import Punctuation from phonemizer.separator import Separator @@ -32,6 +31,9 @@ class BaseEspeakBackend(BaseBackend): facilities to find espeak library and read espeak version. """ + # a regular expression to find phonemes stresses in espeak output + _ESPEAK_STRESS_RE = re.compile(r"[ˈˌ'-]+") + def __init__(self, language: str, punctuation_marks: Optional[Union[str, Pattern]] = None, preserve_punctuation: bool = False, diff --git a/phonemizer/backend/espeak/espeak.py b/phonemizer/backend/espeak/espeak.py index 34e3faf..d693c3e 100644 --- a/phonemizer/backend/espeak/espeak.py +++ b/phonemizer/backend/espeak/espeak.py @@ -30,8 +30,6 @@ class EspeakBackend(BaseEspeakBackend): """Espeak backend for the phonemizer""" - # a regular expression to find phonemes stresses in espeak output - _ESPEAK_STRESS_RE = re.compile(r"[ˈˌ'-]+") # pylint: disable=too-many-arguments def __init__(self, language: str, @@ -88,7 +86,7 @@ def _phonemize_aux(self, text, offset, separator, strip): output = [] lang_switches = [] for num, line in enumerate(text, start=1): - line = self._espeak.text_to_phonemes(line, self._tie) + line = self._espeak.text_to_phonemes(line, self._tie, ipa=True) line, has_switch = self._postprocess_line( line, num, separator, strip) output.append(line) diff --git a/phonemizer/backend/espeak/mbrola-foldings/af1 b/phonemizer/backend/espeak/mbrola-foldings/af1 new file mode 100644 index 0000000..ef8d1ee --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/af1 @@ -0,0 +1,75 @@ +volume 16 + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 R NULL 0 r +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 x2 NULL 0 x +0 S NULL 0 s +0 Z NULL 0 z +0 _! NULL 0 ? +0 e@ NULL 0 e +0 A: NULL 0 a +0 o@ NULL 0 o +0 Y@ NULL 0 2 +0 a NULL 0 A +0 I NULL 0 @ +0 & NULL 0 { +0 W NULL 0 9 +0 eI NULL 0 & +0 @U NULL 0 $ +0 Yy NULL 0 } +0 A~ NULL 0 A +0 e~ NULL 0 E +0 o~ NULL 0 O +0 aI NULL 60 A j +0 AI NULL 75 a j +0 OI NULL 60 O j +0 oI NULL 70 u j +0 uI NULL 60 u j +0 aU NULL 60 A u +0 iu NULL 50 i u +0 e: NULL 0 E +0 i: NULL 0 i +0 u: NULL 0 u + +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 I2 NULL 0 i +0 a# NULL 0 a +0 aa NULL 0 a +0 0 NULL 0 O +0 A@ NULL 0 a +0 i@ NULL 0 e +0 i@3 NULL 0 e +0 e@ NULL 60 E @ +0 o@ NULL 70 O @ +0 O@ NULL 70 O @ +0 U@ NULL 60 u @ +0 O: NULL 0 O +0 oU NULL 0 $ +0 @2 NULL 0 @ +0 3 NULL 0 @ +0 3: NULL 0 @ +0 U NULL 0 u +0 V NULL 0 a +0 aI@ NULL 60 { @ +0 aU@ NULL 70 A @ +0 @L NULL 0 l +0 T NULL 0 t +0 D NULL 0 z +0 dZ NULL 40 d z +0 tS NULL 40 t s +0 c NULL 0 k + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/ar1 b/phonemizer/backend/espeak/mbrola-foldings/ar1 new file mode 100644 index 0000000..31aa473 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ar1 @@ -0,0 +1,68 @@ +volume 50 + +0 a : 50 a a +0 a NULL 0 a +0 A NULL 0 H +0 b b 20 b b +0 b NULL 0 b +1 dH dH 40 d. d. +1 dH a 50 d. a. +1 dH i 50 d. i. +1 dH u 50 d. u. +0 dH NULL 0 d. +0 d : 50 d d +0 D NULL 0 D +0 dZ NULL 0 Z +0 d NULL 0 d +0 f NULL 0 f +0 Q NULL 0 G +0 g NULL 0 g +1 H a 40 X a +1 H i 40 X i +0 h NULL 0 h +1 H u 40 X u +0 H NULL 0 X +0 i : 50 i i +0 i NULL 0 i +0 y NULL 0 y +0 j : 50 j j +0 j NULL 0 j +0 k NULL 0 k +0 l/ NULL 0 l +0 l NULL 0 l +0 m m 100 n m +0 m NULL 0 m +0 n NULL 0 n +4 ? NULL 0 _ +64 ? NULL 0 _ +0 ? NULL 0 ? +0 p NULL 0 p +0 q NULL 0 q +0 r/ NULL 0 r +0 r NULL 0 r +0 S : 50 S S +0 S NULL 0 S +1 s[ a 50 s. a. +1 s[ i 50 s. i. +1 s[ u 50 s. u. +0 s[ : 0 s. s. +0 s[ NULL 0 s. +0 s : 50 s s +0 s NULL 0 s +0 t : 50 t t +0 T NULL 0 T +1 t[ a 0 t. a. +1 t[ i 0 t. i. +1 t[ u 0 t. u. +0 t[ : 0 t. t. +0 t[ NULL 0 t. +0 t NULL 0 t +0 u : 50 u u +0 u NULL 0 u +0 w NULL 0 w +0 X NULL 0 x +1 Z a 0 z. a. +1 Z i 0 z. i. +1 Z u 0 z. u. +0 Z NULL 0 z. +0 z NULL 0 z diff --git a/phonemizer/backend/espeak/mbrola-foldings/ar2 b/phonemizer/backend/espeak/mbrola-foldings/ar2 new file mode 100644 index 0000000..cd41331 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ar2 @@ -0,0 +1,70 @@ +// This is complete duplicate of ar1 file except volume +// which is lower here to avoid saturation +volume 14 + +0 a : 50 a a +0 a NULL 0 a +0 A NULL 0 H +0 b b 20 b b +0 b NULL 0 b +1 dH dH 40 d. d. +1 dH a 50 d. a. +1 dH i 50 d. i. +1 dH u 50 d. u. +0 dH NULL 0 d. +0 d : 50 d d +0 D NULL 0 D +0 dZ NULL 0 Z +0 d NULL 0 d +0 f NULL 0 f +0 gH NULL 0 G +0 g NULL 0 g +1 H a 40 X a +1 H i 40 X i +0 h NULL 0 h +1 H u 40 X u +0 H NULL 0 X +0 i : 50 i i +0 i NULL 0 i +0 y NULL 0 y +0 j : 50 j j +0 j NULL 0 j +0 k NULL 0 k +0 l/ NULL 0 l +0 l NULL 0 l +0 m m 100 n m +0 m NULL 0 m +0 n NULL 0 n +4 ? NULL 0 _ +64 ? NULL 0 _ +0 ? NULL 0 ? +0 p NULL 0 p +0 q NULL 0 q +0 r/ NULL 0 r +0 r NULL 0 r +0 S : 50 S S +0 S NULL 0 S +1 s[ a 50 s. a. +1 s[ i 50 s. i. +1 s[ u 50 s. u. +0 s[ : 0 s. s. +0 s[ NULL 0 s. +0 s : 50 s s +0 s NULL 0 s +0 t : 50 t t +0 T NULL 0 T +1 t[ a 0 t. a. +1 t[ i 0 t. i. +1 t[ u 0 t. u. +0 t[ : 0 t. t. +0 t[ NULL 0 t. +0 t NULL 0 t +0 u : 50 u u +0 u NULL 0 u +0 w NULL 0 w +0 X NULL 0 x +1 Z a 0 z. a. +1 Z i 0 z. i. +1 Z u 0 z. u. +0 Z NULL 0 z. +0 z NULL 0 z diff --git a/phonemizer/backend/espeak/mbrola-foldings/ca b/phonemizer/backend/espeak/mbrola-foldings/ca new file mode 100644 index 0000000..6293a26 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ca @@ -0,0 +1,88 @@ +volume 17 + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 l2 NULL 0 l +0 r/ NULL 0 R +0 r/2 NULL 0 R +0 r- NULL 0 R +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @3 NULL 0 NULL +0 * NULL 0 R +0 : NULL 0 NULL + +0 Y NULL 0 2 +0 W NULL 0 9 +0 W2 NULL 0 9 +0 E2 NULL 0 E +0 o2 NULL 0 o +0 A~ NULL 0 a~ +0 E~ NULL 0 e~ +0 O~ NULL 0 o~ +0 W~ NULL 0 9~ +0 w^i NULL 50 H i +0 wA NULL 50 w a +0 r NULL 0 R +0 n^ NULL 75 n j +0 c NULL 0 k + +0 I NULL 0 i +0 U NULL 0 u +0 y" NULL 0 y +0 E NULL 0 e +0 E: NULL 0 E +0 h NULL 0 NULL +0 n2 NULL 0 n +0 p2 NULL 0 p +0 r2 NULL 0 R +0 t2 NULL 0 t +0 t3 NULL 0 t +0 z2 NULL 0 z +0 z3 NULL 0 z + +0 @- NULL 0 @ +0 a- NULL 0 a +0 e- NULL 0 e +0 y- NULL 0 y +0 i: NULL 0 i +0 i- NULL 0 i +0 u: NULL 0 u +0 eI NULL 60 E j +0 aU NULL 60 a w +0 oU NULL 0 o +0 o3 NULL 0 o +0 o- NULL 0 o +0 @L NULL 40 @ l +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 3 NULL 0 @ +0 a# NULL 0 a +0 I2 NULL 0 i +0 aa NULL 0 a +0 V NULL 0 @ +0 0 NULL 0 O +0 3: NULL 0 9 +0 aI NULL 60 a j +0 OI NULL 60 O j +0 e@ NULL 0 E +0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ +0 e@ NULL 60 E @ +0 o@ NULL 70 o @ +0 O@ NULL 70 O @ +0 O: NULL 0 O +0 O2 NULL 0 O +0 A: NULL 0 a +0 A@ NULL 70 a @ +0 U@ NULL 60 u @ +0 aI@ NULL 70 a @ +0 aU@ NULL 0 a + +0 dZ NULL 40 d Z +0 tS NULL 40 t S +0 T NULL 0 t +0 D NULL 0 z diff --git a/phonemizer/backend/espeak/mbrola-foldings/cmn b/phonemizer/backend/espeak/mbrola-foldings/cmn new file mode 100644 index 0000000..285aa08 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/cmn @@ -0,0 +1,182 @@ +// List below shows all Chinese phonememes from eSpeakNG +// with some of syllables of Mbrola cn1 voice +// from: http://www.tcts.fpms.ac.be/synthesis/mbrola/dba/cn1/cn1.zip +// Note, that one eSpeakNG phoneme is written with several letters, e.g. +// 'ai' is one phoneme. Look for details at `phonemes/ph_zh` file + +0 _ NULL 0 _ +0 @ NULL 0 a +0 ai NULL 0 ai +1 a n 0 an +0 Au NULL 50 ao +0 ei NULL 50 e i +0 A NULL 0 a +0 a NULL 0 a +0 E NULL 0 e +0 f NULL 0 f +0 i. NULL 0 i +0 i[ NULL 0 i +0 iA NULL 50 i a +0 iAu NULL 50 i ao +0 iE NULL 0 ie +0 i NULL 0 i +0 io NULL 50 i o +0 iou NULL 50 j ou +0 yE NULL 50 y e +0 yi NULL 50 y i +0 y NULL 0 y +0 y& NULL 50 y a +0 y@ NULL 50 y e +0 yu NULL 50 y u +0 j NULL 0 j +0 kh NULL 0 ch +0 k NULL 0 k +0 l NULL 0 l +0 N NULL 0 n +0 N- NULL 0 n +0 n NULL 0 n +0 @ NULL 0 @ +0 ong NULL 0 ong +0 o NULL 0 o +0 o- NULL 0 o +0 ou NULL 50 o u +0 ph NULL 50 p h +0 p NULL 0 p +0 @r NULL 0 r +0 S; NULL 0 x +0 s. NULL 0 x +0 th NULL 50 t _ +0 t NULL 0 t +0 tS;h NULL 0 x +0 ts.h NULL 0 x +0 tsh NULL 50 sh +0 tS; NULL 0 x +0 ts NULL 0 x +0 ts. NULL 0 x +0 uai NULL 50 u ai +0 uA NULL 50 u a +0 ua NULL 50 u a +0 uei NULL 50 u ei +0 u NULL 0 u +0 u@ NULL 50 u u +0 uo NULL 50 u o +0 x NULL 0 h +1 i e 0 ie +1 iE NULL 0 ie +1 tS; h 0 x +8 A NULL 0 a + +// TODO: To improve voice quality, +// many eSpeakNG phoneme pairs should be translated into syllables of Mbrola cn1 voice +// In general, additional lines should be in form: +// 1 ph1 ph2 0 mb1 +// where 1 indicates that two successive eSpeakNG phonemes ph1 and ph2 should be checked, +// but mb1 is one Mbrola syllable from list below. +// Look for details at: https://github.com/espeak-ng/espeak-ng/blob/master/docs/mbrola.md +// Full list of Mbrola cn1 voice syllable pairs is following: +// +// _-_ _-en j-iu _-o t-ao +// _-a en-_ _-ju o-_ t-e +// a-_ en-en ju-an _-ong t-eng +// a-a _-eng j-ue ong-_ _-ti +// _-ai eng-_ j-un ong-ong t-i +// ai-_ eng-eng j-v o-o ti-an +// ai-ai _-er _-k _-ou ti-ao +// _-an er-_ k-a ou-_ t-ie +// an-_ er-er k-ai ou-ou t-ing +// an-an _-f k-an _-p t-ong +// _-ang f-a k-ang p-a t-ou +// ang-_ f-an k-ao p-ai _-tu +// ang-ang f-ang k-e p-an t-u +// _-ao f-ei k-en p-ang tu-an +// ao-_ f-en k-eng p-ao t-ui +// ao-ao f-eng k-ong p-ei t-un +// _-b f-o k-ou p-en tu-o +// b-a f-ou _-ku p-eng _-u +// b-ai f-u k-u _-pi u-_ +// b-an _-g ku-a p-i _-ue +// b-ang g-a ku-ai pi-an ue-_ +// b-ao g-ai ku-an pi-ao ue-ue +// b-ei g-an ku-ang p-ie ui-_ +// b-en g-ang k-ui p-in ui-ui +// b-eng g-ao k-un p-ing _-un +// _-bi g-e ku-o p-o un-_ +// b-i g-ei _-l p-ou un-un +// bi-an g-en l-a p-u u-u +// bi-ao g-eng l-ai _-q _-v +// b-ie g-ong l-an _-qi v-_ +// b-in g-ou l-ang q-i v-v +// b-ing _-gu l-ao qi-a _-w +// b-o g-u l-e qi-an w-a +// b-u gu-a l-ei qi-ang w-ai +// _-c gu-ai l-eng qi-ao w-an +// c-a gu-an _-li q-ie w-ang +// c-ai gu-ang l-i q-in w-ei +// c-an g-ui li-a q-ing w-en +// c-ang g-un li-an qi-ong w-eng +// c-ao gu-o li-ang q-iu w-o +// c-e _-h li-ao _-qu w-u +// c-en h-a l-ie qu-an _-x +// c-eng h-ai l-in q-ue _-xi +// _-ch h-an l-ing q-un x-i +// ch-a h-ang l-iu q-v xi-a +// ch-ai h-ao ll-_ _-r xi-an +// ch-an h-e ll-ll r-an xi-ang +// ch-ang h-ei l-ong r-ang xi-ao +// ch-ao h-en l-ou r-ao x-ie +// ch-e h-eng _-lu r-e x-in +// ch-en h-ong l-u r-en x-ing +// ch-eng h-ou lu-an r-eng xi-ong +// ch-ll _-hu l-ue r-ll x-iu +// ch-ong h-u l-un r-ong _-xu +// ch-ou hu-a lu-o r-ou xu-an +// _-chu hu-ai l-v _-ru x-ue +// ch-u hu-an _-m r-u x-un +// chu-a hu-ang m-a ru-an x-v +// chu-ai h-ui m-ai r-ui _-z +// chu-an h-un m-an r-un z-a +// chu-ang hu-o m-ang ru-o z-ai +// ch-ui _-i m-ao _-s z-an +// ch-un i-_ m-e s-a z-ang +// chu-o _-ie m-ei s-ai z-ao +// c-ii ie-_ m-en s-an z-e +// c-ong ie-ie m-eng s-ang z-ei +// c-ou i-i _-mi s-ao z-en +// _-cu ii-_ m-i s-e z-eng +// c-u ii-ii mi-an s-en _-zh +// cu-an _-in mi-ao s-eng zh-a +// c-ui in-_ m-ie _-sh zh-ai +// c-un _-ing m-in sh-a zh-an +// cu-o ing-_ m-ing sh-ai zh-ang +// _-d ing-ing m-iu sh-an zh-ao +// d-a in-in m-o sh-ang zh-e +// d-ai _-iu m-ou sh-ao zh-ei +// d-an iu-_ m-u sh-e zh-en +// d-ang iu-iu _-n sh-ei zh-eng +// d-ao _-y n-a sh-en zh-ll +// d-e y-a n-ai sh-eng zh-ong +// d-ei y-an n-an sh-ll zh-ou +// d-en y-ang n-ang sh-ou _-zhu +// d-eng y-ao n-ao _-shu zh-u +// _-di y-e n-e sh-u zhu-a +// d-i y-i n-ei shu-a zhu-ai +// di-a y-in n-en shu-ai zhu-an +// di-an y-ing n-eng shu-an zhu-ang +// di-ao y-ong _-ni shu-ang zh-ui +// d-ie y-ou n-i sh-ui zh-un +// d-ing _-yu ni-an sh-un zhu-o +// d-iu yu-an ni-ang shu-o z-ii +// d-ong y-ue ni-ao s-ii z-ong +// d-ou y-un n-ie s-ong z-ou +// _-du y-v n-in s-ou _-zu +// d-u _-j n-ing _-su z-u +// du-an _-ji n-iu s-u zu-an +// d-ui j-i n-ong su-an z-ui +// d-un ji-a n-ou s-ui z-un +// du-o ji-an _-nu s-un zu-o +// _-e ji-ang n-u su-o +// e-_ ji-ao nu-an _-t +// e-e j-ie n-ue t-a +// _-ei j-in n-un t-ai +// ei-_ j-ing nu-o t-an +// ei-ei ji-ong n-v t-ang diff --git a/phonemizer/backend/espeak/mbrola-foldings/cr1 b/phonemizer/backend/espeak/mbrola-foldings/cr1 new file mode 100644 index 0000000..2916bc4 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/cr1 @@ -0,0 +1,97 @@ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ r 5 r _ +0 r 3 5 r _ +0 r/ NULL 0 r +0 R NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +2 ; i 0 NULL +0 ; NULL 0 j +0 - NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 r* NULL 0 NULL +0 R2 NULL 0 r + +0 I NULL 0 i +0 U NULL 0 u +0 8 NULL 0 o +0 E NULL 0 e +0 & NULL 0 a +0 A NULL 0 a +0 @ NULL 0 e +0 @2 NULL 0 e +0 aI NULL 60 a j +0 iI NULL 60 i j +0 a: NULL 0 a +0 e: NULL 0 e +0 i: NULL 0 i +0 o: NULL 0 o +0 u: NULL 0 u + +0 tS; NULL 0 tS' +0 dZ; NULL 0 dZ' +0 l^ NULL 0 L +0 n^ NULL 0 J +0 N NULL 0 n +0 h NULL 0 x + +// CR1 doesn't like same phonemes twice +0 d d 5 d _ +0 s s 5 s _ +0 z z 5 z _ +0 t t 5 t _ +0 m m 5 m _ +0 n n 5 n _ +0 r r 5 r _ +0 k k 5 k _ +0 e e 5 e _ +0 o o 5 o _ +0 a a 5 a _ +0 & a 5 a _ + +// map English phonemes to Croatian +0 3 r 5 r _ +0 @ NULL 0 a +0 eI NULL 60 e j +0 aU NULL 60 a u +0 oU NULL 0 o +0 @L NULL 40 e l +0 @2 NULL 0 e // @ +0 @5 NULL 0 e // @ +0 3 NULL 0 r // @ +0 a# NULL 0 a // @ +0 I2 NULL 0 i +0 I NULL 0 i +0 a NULL 0 a +0 aa NULL 0 a +0 V NULL 0 a // @ +0 U NULL 0 u +0 0 NULL 0 o +0 i: NULL 0 i +0 u: NULL 0 u +0 A: NULL 0 a +0 3: NULL 0 r // @ +0 aI NULL 60 a j +0 OI NULL 60 o j +0 i@ NULL 60 i r // @ +0 i@3 NULL 60 i r // @ +0 e@ NULL 70 e r +0 o@ NULL 70 o r // @ +0 O@ NULL 70 o r // @ +0 O NULL 0 o +0 O: NULL 0 a +0 A: NULL 0 a +0 A@ NULL 70 a r +0 U@ NULL 60 u r // @ +0 aI@ NULL 70 a r // @ +0 aU@ NULL 0 a + +0 T NULL 0 t +0 D NULL 0 z +0 w NULL 0 v \ No newline at end of file diff --git a/phonemizer/backend/espeak/mbrola-foldings/cs b/phonemizer/backend/espeak/mbrola-foldings/cs new file mode 100644 index 0000000..e89217d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/cs @@ -0,0 +1,26 @@ +0 l/2 NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 R NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 J NULL 0 d' +0 h NULL 0 h\ +0 n^ NULL 0 n' +0 R^ NULL 0 r' +0 R^/ NULL 0 r' +0 c NULL 0 t' +0 eI NULL 60 e i +0 aU NULL 60 a u +0 eU NULL 60 e u +0 oU NULL 60 o u +0 N NULL 0 n +0 Q NULL 0 x + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/de2 b/phonemizer/backend/espeak/mbrola-foldings/de2 new file mode 100644 index 0000000..d74ca43 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/de2 @@ -0,0 +1,81 @@ +0 I ; 0 i: +0 3 VWL 60 6 R + +0 b VWL 0 b +0 b NULL 0 p +0 d VWL 0 d +0 d NULL 0 t +0 g VWL 0 g +0 g NULL 0 k +0 z VWL 0 z +0 z NULL 0 s + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 6 +0 r- NULL 0 R +0 l- NULL 0 l +0 w/ NULL 0 U +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * j 0 6 +0 * NULL 0 R + +0 E2 NULL 0 E +0 y NULL 0 Y +0 W NULL 0 9 +0 A: NULL 0 a: +0 A NULL 0 a: +0 Y: NULL 0 2: +0 OI NULL 0 OY +0 3 NULL 0 6 +0 _| NULL 0 _ +0 pF NULL 0 pf +0 r NULL 0 R +0 V# NULL 0 6 +0 UR NULL 60 U R + +0 eI VWL 60 E j +0 eI NULL 0 e: +0 oU NULL 0 o: +0 W~ NULL 0 E~ +0 A~ NULL 0 a~ +0 O~ NULL 0 o~ + +// phonemes for Spanish words +0 e NULL 0 E +0 ** NULL 0 R +0 n^ NULL 40 n j + +// phonemes for English words +0 @L NULL 50 @ l +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 a# NULL 0 @ +0 I2 NULL 0 I +0 i NULL 0 i: +0 aa NULL 0 a +0 V NULL 0 a: +0 0 NULL 0 O +0 3: NULL 0 @ +0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ +0 e@ NULL 60 E 6 +0 o@ NULL 70 o: 6 +0 O@ NULL 70 O 6 +0 O: NULL 0 O +0 A@ NULL 70 a: 6 +0 U@ NULL 60 U @ +0 aI@ NULL 70 aI @ +0 aU@ NULL 70 aU @ +0 3: NULL 60 E: R + +0 dZ NULL 0 tS +0 w NULL 0 v +0 D NULL 0 v +0 T NULL 0 f +0 i NULL 0 i: +0 EI NULL 0 e: + diff --git a/phonemizer/backend/espeak/mbrola-foldings/de4 b/phonemizer/backend/espeak/mbrola-foldings/de4 new file mode 100644 index 0000000..148573c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/de4 @@ -0,0 +1,85 @@ + +0 T r 0 t +0 l eI 0 L +0 l oU 0 L +2 l oU 0 L +2 l @L 0 L +2 l l/2 0 L +2 l eI 0 L +0 r eI 0 r +0 r oU 0 r +2 r oU 0 r +0 r @L 0 r +2 r l/2 0 r +2 3 D 0 @ +2 3 T 0 @ +2 3 @L 0 @ +2 3 oU 0 @ +2 3 w 0 @ +2 3 eI 0 @ + + +0 l/2 NULL 0 L +0 l/ NULL 0 l +0 r/ NULL 0 6 +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 j +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 R +0 V# NULL 0 6 +0 UR NULL 60 U 6 + +0 E2 NULL 0 E +0 y NULL 0 Y +0 W NULL 0 9 +0 A: NULL 0 a: +0 A NULL 0 a: +0 Y: NULL 0 2: +0 OI NULL 0 OY +0 3 NULL 0 6 +0 pF NULL 0 pf +0 r NULL 0 R + +0 eI NULL 0 EI +0 oU NULL 0 @U +0 W~ NULL 0 E~ +0 A~ NULL 0 a~ +0 O~ NULL 0 o~ + +16 _| VWL 0 ? +16 _! VWL 0 ? +16 ? VWL 0 ? +16 _^_ VWL 0 NULL + +// phonemes for Spanish words +0 e NULL 0 E +0 ** NULL 0 R +0 n^ NULL 40 n j + +// phonemes for English words +0 @L NULL 0 L +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 a# NULL 0 @ +0 I2 NULL 0 I +0 i NULL 0 i: +0 aa NULL 0 a +0 V NULL 0 a: +0 0 NULL 0 O +0 3: NULL 0 @ +0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ +0 e@ NULL 60 E @ +0 o@ NULL 70 o: 6 +0 O@ NULL 70 O 6 +0 O: NULL 0 O +0 A@ NULL 70 a: 6 +0 U@ NULL 60 U @ +0 aI@ NULL 70 aI @ +0 aU@ NULL 70 aU @ + +0 dZ NULL 0 tS diff --git a/phonemizer/backend/espeak/mbrola-foldings/de6 b/phonemizer/backend/espeak/mbrola-foldings/de6 new file mode 100644 index 0000000..5d770ac --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/de6 @@ -0,0 +1,71 @@ + +2 w i: 0 v // i:w not allowed + +0 l/2 NULL 40 l +0 l/ NULL 0 l +0 r/ NULL 0 6 +0 r- NULL 0 R +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 R + +0 E2 NULL 0 E +0 y NULL 0 Y +0 W NULL 0 9 +0 A: NULL 0 a: +0 A NULL 0 a: +0 Y: NULL 0 2: +0 OI NULL 0 OY +0 3 NULL 0 6 +0 _| VWL 0 ? +0 _! VWL 0 ? +0 pF NULL 0 pf +0 r NULL 0 R +0 V# NULL 0 6 +0 UR NULL 60 U R + + +0 eI NULL 60 E j +0 oU NULL 60 @ w +0 W~ NULL 0 E~ +0 A~ NULL 0 a~ +0 O~ NULL 0 o~ + +// phonemes for Spanish words +0 e NULL 0 E +0 ** NULL 0 R +0 n^ NULL 40 n j + +// phonemes for English words (see docs/languages/gmw/en.md) +0 @L NULL 40 @ l +0 m- NULL 20 @ m +0 n- NULL 20 @ n +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 a# NULL 0 @ +0 I2 NULL 0 I +// --------- HAPPY vowel: +// * `i:` -- this is too long and gets clipped for the short HAPPY vowel, and de5 is missing `i:-w`. +// * `i` -- de5 and de6 are missing `l-i` (-ly), `R-i` (-ry), etc. +// * `I` -- works best (NOTE: This sounds like 'i', not like 'I'.) +0 i NULL 0 I +0 aa NULL 0 a +0 V NULL 0 a: +0 0 NULL 0 a: +0 3: NULL 0 @ +0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ +0 e@ NULL 60 E @ +0 o@ NULL 70 o: 6 +0 O@ NULL 70 o: 6 +0 O: NULL 0 O +0 A@ NULL 70 a: 6 +0 U@ NULL 60 U @ +0 aI@ NULL 70 aI @ +0 aU@ NULL 70 aU @ + +0 dZ NULL 0 tS diff --git a/phonemizer/backend/espeak/mbrola-foldings/de8 b/phonemizer/backend/espeak/mbrola-foldings/de8 new file mode 100644 index 0000000..d27bbff --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/de8 @@ -0,0 +1,48 @@ +volume 12 +0 3 NULL 0 e +0 3: NULL 50 e e +0 aI NULL 0 aI +0 A NULL 0 A +0 A~ NULL 0 A +0 a NULL 0 a +0 A: NULL 50 A A +0 a NULL 50 a a +0 aU NULL 0 aU +0 b NULL 0 b +0 d NULL 0 d +0 E NULL 0 E +0 e NULL 0 e +0 E: NULL 50 E E +0 e: NULL 50 e e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i NULL 0 i +0 i: NULL 50 i i +0 y NULL 0 Y +0 y: NULL 50 Y Y +0 j A 50 j a +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 l/ NULL 0 l +0 m b 50 m b +0 m NULL 0 m +0 n NULL 0 n +0 @ NULL 0 e +0 @- NULL 0 e +0 O NULL 0 O +0 o NULL 0 o +0 o: NULL 0 o: +0 O: NULL 50 O O +0 p NULL 0 b +0 r NULL 0 R +0 ts NULL 0 C +0 u NULL 0 U +0 u: NULL 50 U U +0 V NULL 0 v +0 v NULL 0 v +0 W NULL 0 v +0 x NULL 0 x +0 x NULL 0 x +0 z NULL 0 Z diff --git a/phonemizer/backend/espeak/mbrola-foldings/ee1 b/phonemizer/backend/espeak/mbrola-foldings/ee1 new file mode 100644 index 0000000..429f41c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ee1 @@ -0,0 +1,64 @@ + +0 A NULL 0 a +0 A1 NULL 0 a +0 a: NULL 50 a a +0 E NULL 0 e +0 E1 NULL 0 e +0 e: NULL 50 e e +0 I NULL 0 i +0 I1 NULL 0 i +0 i1 NULL 0 i +0 i: NULL 50 i i +0 O NULL 0 o +0 O1 NULL 0 o +0 o: NULL 50 o o +0 U NULL 0 u +0 U1 NULL 0 u +0 u: NULL 50 u u +0 8 NULL 0 7 +0 8: NULL 50 7 7 +0 & NULL 0 { +0 &: NULL 50 { { +0 Y NULL 0 2 +0 Y: NULL 50 2 2 +0 y: NULL 50 y y + +0 8u NULL 50 7 u +0 &i NULL 50 { i +0 Yi NULL 50 2 i +0 yi NULL 50 y i + +0 b : 0 p: +0 d : 0 t: +0 d^ NULL 0 d' +0 d^ : 0 d' +0 g : 0 k: +0 h : 0 h +0 j : 0 j +0 k : 0 k +0 l : 0 l +0 l/ NULL 0 l +0 l^ NULL 0 l' +0 l^ : 0 l' +0 m : 0 m +0 n : 0 n +0 n^ NULL 0 n' +0 n^ : 0 n' +0 N : 0 N +0 p : 0 p +0 R NULL 0 r +0 R : 0 r +0 b : 0 p +0 s2 NULL 0 s +0 s^ NULL 0 s' +0 s^ : 0 s' +0 S : 0 S +0 t : 0 t +0 t^ NULL 0 t' +0 t^ : 0 t' +0 v : 0 v +0 w NULL 0 v +0 Z NULL 0 S +0 z NULL 0 s + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/en1 b/phonemizer/backend/espeak/mbrola-foldings/en1 new file mode 100644 index 0000000..ca3ce58 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/en1 @@ -0,0 +1,34 @@ + +0 oU NULL 0 @U +0 a# NULL 0 @ +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 @/ NULL 0 @ +0 3 NULL 0 @ +0 I2 NULL 0 I +0 i NULL 0 I +0 a NULL 0 { +0 aa NULL 0 { +0 0 NULL 0 Q +0 E NULL 0 e +0 O NULL 0 O: +0 O@ NULL 0 O: +0 o@ NULL 0 O: +0 A@ NULL 0 A: +0 i@ NULL 0 I@ +0 i@3 NULL 0 I@ +0 IR NULL 0 3: +0 VR NULL 0 3: +0 @L NULL 0 5 +0 l/2 NULL 0 5 +0 r/ NULL 0 r +0 r- NULL 0 r +0 w/ NULL 0 w +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 aI@ NULL 60 aI @ +0 aU@ NULL 75 aU @ +0 x NULL 0 k +0 t2 NULL 0 t + diff --git a/phonemizer/backend/espeak/mbrola-foldings/es b/phonemizer/backend/espeak/mbrola-foldings/es new file mode 100644 index 0000000..8cf319a --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/es @@ -0,0 +1,80 @@ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 l^ NULL 0 L +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 i +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 : NULL 0 NULL + +0 ** NULL 0 r +0 R NULL 0 rr +0 R2 NULL 0 NULL +0 v# NULL 0 b +0 v NULL 0 b +0 j NULL 0 i +0 J NULL 0 L +0 J^ NULL 0 L +0 n^ NULL 0 J +0 N NULL 0 n +0 B NULL 0 b +0 D NULL 0 d +0 Q NULL 0 g +0 z NULL 0 s +2 T s 0 s +0 T s 0 s + +0 a/ NULL 0 a +0 E NULL 0 e +0 O NULL 0 o +0 aI NULL 60 a i +0 eI NULL 60 e i +0 oI NULL 60 o i +0 aU NULL 60 a u +0 eU NULL 60 e u + +0 dZ NULL 0 tS +0 S NULL 60 s jj +0 Z NULL 60 s jj + +0 @ NULL 0 e +0 @2 NULL 0 e +0 @5 NULL 0 u +0 0 NULL 0 o +0 V NULL 0 a +0 U NULL 0 u +0 I NULL 0 i +0 I2 NULL 0 i +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o i +0 aI@ NULL 60 a e +0 aU@ NULL 0 a +0 t2 NULL 0 t +0 h NULL 0 NULL + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/es3 b/phonemizer/backend/espeak/mbrola-foldings/es3 new file mode 100644 index 0000000..5156b7a --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/es3 @@ -0,0 +1,44 @@ +volume 15 +0 a NULL 0 a +0 a/ NULL 0 a +0 a: NULL 50 a a +0 B NULL 0 b +0 b NULL 0 b +0 D NULL 0 d +0 E NULL 0 e +0 e NULL 0 e +0 e/ NULL 0 e +0 e: NULL 50 e e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i NULL 0 i +0 i: NULL 50 i i +0 y NULL 0 y +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 l^ NULL 0 L +0 l/ NULL 0 l +0 m NULL 0 m +0 N NULL 0 n +0 n NULL 0 n +0 n^ NULL 0 n +0 ** NULL 0 h +0 o NULL 0 o +0 o/ NULL 0 o +0 o: NULL 50 o o +0 p NULL 0 p +0 Q NULL 0 H +0 q NULL 0 k +0 r NULL 0 r +0 s NULL 0 s +0 T NULL 0 t +0 t NULL 0 t +0 u NULL 0 u +0 u: NULL 50 u u +0 v NULL 0 b +0 v# NULL 0 b +0 w NULL 0 b +0 x NULL 0 H +0 z NULL 0 z diff --git a/phonemizer/backend/espeak/mbrola-foldings/es4 b/phonemizer/backend/espeak/mbrola-foldings/es4 new file mode 100644 index 0000000..87ec1cc --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/es4 @@ -0,0 +1,46 @@ +volume 15 +0 a NULL 0 a +0 a/ NULL 0 a +0 a: NULL 50 a a +0 B NULL 0 b +0 b NULL 0 b +0 D NULL 0 d +0 E NULL 0 e +0 e NULL 0 e +0 e/ NULL 0 e +0 e: NULL 50 e e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 jj +0 i NULL 0 i +0 i: NULL 50 i i +0 y NULL 0 i +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 L +0 l^ NULL 0 L +0 l/ NULL 0 L +0 m NULL 0 m +0 n^ NULL 0 J +0 N NULL 0 n +0 n NULL 0 n +0 ** NULL 0 jj +0 o NULL 0 o +0 o/ NULL 0 o +0 o: NULL 50 o o +0 p NULL 0 p +0 Q NULL 0 jj +0 q NULL 0 k +0 r NULL 0 r +0 R NULL 0 rr +0 s NULL 0 s +0 T NULL 0 T +0 t NULL 0 t +0 tS NULL 0 tS +0 u NULL 0 u +0 u: NULL 50 u u +0 v NULL 0 b +0 v# NULL 0 b +0 w NULL 0 b +0 x NULL 0 x +0 z NULL 0 z diff --git a/phonemizer/backend/espeak/mbrola-foldings/fr b/phonemizer/backend/espeak/mbrola-foldings/fr new file mode 100644 index 0000000..58553a0 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/fr @@ -0,0 +1,92 @@ +volume 17 + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 l2 NULL 0 l +0 r/ NULL 0 R +0 r/2 NULL 0 R +0 r- NULL 0 R +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @3 NULL 0 NULL +0 * NULL 0 R +0 : NULL 0 NULL + +0 Y NULL 0 2 +0 W NULL 0 9 +0 W2 NULL 0 9 +0 E2 NULL 0 E +0 o2 NULL 0 o +0 A~ NULL 0 a~ +0 E~ NULL 0 e~ +0 O~ NULL 0 o~ +0 W~ NULL 0 9~ +0 w^i NULL 50 H i +0 wA NULL 50 w a +0 r NULL 0 R +0 n^ NULL 75 n j +0 c NULL 0 k + +0 I NULL 0 i +0 U NULL 0 u +0 y" NULL 0 y +0 E: NULL 0 E +0 h NULL 0 NULL +0 n2 NULL 0 n +0 p2 NULL 0 p +0 r2 NULL 0 R +0 t2 NULL 0 t +0 t3 NULL 0 t +0 z2 NULL 0 z +0 z3 NULL 0 z + +0 @- NULL 0 @ +0 a- NULL 0 a +0 e- NULL 0 e +0 y- NULL 0 y +0 i: NULL 0 i +0 i- NULL 0 i +0 u: NULL 0 u +0 eI NULL 60 E j +0 aU NULL 60 a w +0 oU NULL 0 o +0 o3 NULL 0 o +0 o- NULL 0 o +0 @L NULL 40 @ l +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 3 NULL 0 @ +0 a# NULL 0 a +0 I2 NULL 0 i +0 aa NULL 0 a +0 V NULL 0 @ +0 0 NULL 0 O +0 3: NULL 0 9 +0 aI NULL 60 a j +0 OI NULL 60 O j +0 e@ NULL 0 E +0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ +0 e@ NULL 60 E @ +0 o@ NULL 70 o @ +0 O@ NULL 70 O @ +0 O: NULL 0 O +0 O2 NULL 0 O +0 A: NULL 0 a +0 A@ NULL 70 a @ +0 U@ NULL 60 u @ +0 aI@ NULL 70 a @ +0 aU@ NULL 0 a + +0 dZ NULL 40 d Z +0 tS NULL 40 t S +0 T NULL 0 t +0 D NULL 0 z + + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/gr1 b/phonemizer/backend/espeak/mbrola-foldings/gr1 new file mode 100644 index 0000000..b268694 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/gr1 @@ -0,0 +1,103 @@ +volume 15 + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ r 5 r _ +2 r p 0 R +2 r b 0 R +2 r t 0 R +2 r d 0 R +2 r k 0 R +2 r g 0 R +2 r m 0 R +2 r n 0 R +2 r l/2 0 R +2 r f 0 R +2 r v 0 R +2 r T 0 R +2 r s 0 R +2 r z 0 R + +0 r 3 5 r _ +0 r/ NULL 0 r +2 R z 0 R +0 R NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +2 ; i 0 NULL +0 ; NULL 0 j +0 - NULL 0 NULL +0 g- NULL 0 NULL + +1 @- * 0 R +0 @- NULL 0 NULL +0 * NULL 0 r + +0 N g 0 V +0 N J 0 V +0 N NULL 0 n +0 J NULL 0 q +0 Q NULL 0 G +1 m ; 0 M +0 n^ NULL 0 N +0 l^ NULL 0 L +0 ts NULL 0 S +0 dz NULL 0 Z +1 d z 0 Z +1 k s 0 k +1 p s 0 Y +0 s; NULL 0 s +0 z; NULL 0 z + +0 aI NULL 60 a i +0 oI NULL 60 o i +0 a/ NULL 0 a + + +// map English phonemes to Greek +0 3 NULL 60 e r +0 @ NULL 0 a +0 eI NULL 60 e i +0 aU NULL 60 a u +0 oU NULL 0 o +0 @L NULL 40 e l +0 @2 NULL 0 e // @ +0 @5 NULL 0 e // @ +0 3 NULL 0 r // @ +0 a# NULL 0 a // @ +0 I2 NULL 0 i +0 I NULL 0 i +0 a NULL 0 a +0 aa NULL 0 a +0 V NULL 0 a // @ +0 U NULL 0 u +0 0 NULL 0 o +0 i: NULL 0 i +0 u: NULL 0 u +0 A: NULL 0 a +0 3: NULL 60 e r // @ +//0 aI NULL 60 a j +0 OI NULL 60 o j +0 i@ NULL 60 i r // @ +0 i@3 NULL 60 i r // @ +0 e@ NULL 70 e r +0 o@ NULL 70 o r // @ +0 O@ NULL 70 o r // @ +0 O NULL 0 o +0 O: NULL 0 a +0 A: NULL 0 a +0 A@ NULL 70 a r +0 U@ NULL 60 u r // @ +0 aI@ NULL 70 a r // @ +0 aU@ NULL 0 a + +0 E NULL 0 e +0 w NULL 0 v +0 h NULL 0 x +0 tS VWL 0 c +0 tS NULL 0 S +0 dZ VWL 0 q +0 dZ NULL 0 Z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/gr2 b/phonemizer/backend/espeak/mbrola-foldings/gr2 new file mode 100644 index 0000000..8eea222 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/gr2 @@ -0,0 +1,103 @@ +volume 15 + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ r 5 r _ +2 r p 0 R +2 r b 0 R +2 r t 0 R +2 r d 0 R +2 r k 0 R +2 r g 0 R +2 r m 0 R +2 r n 0 R +2 r l/2 0 R +2 r f 0 R +2 r v 0 R +2 r T 0 R +2 r s 0 R +2 r z 0 R + +0 r 3 5 r _ +0 r/ NULL 0 r +2 R z 0 R +0 R NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +2 ; i 0 NULL +0 ; NULL 0 j +0 - NULL 0 NULL +0 g- NULL 0 NULL + +1 @- * 0 R +0 @- NULL 0 NULL +0 * NULL 0 r + +0 N g 0 V +0 N J 0 V +0 N NULL 0 n +0 J NULL 0 q +0 Q NULL 0 G +1 m ; 0 M +0 n^ NULL 0 N +0 l^ NULL 0 L +0 ts NULL 0 S +0 dz NULL 0 Z +1 d z 0 Z +1 k s 0 X +1 p s 0 Y +0 s; NULL 0 s +0 z; NULL 0 z + +0 aI NULL 60 a i +0 oI NULL 60 o i +0 a/ NULL 0 a + + +// map English phonemes to Greek +0 3 NULL 60 e r +0 @ NULL 0 a +0 eI NULL 60 e i +0 aU NULL 60 a u +0 oU NULL 0 o +0 @L NULL 40 e l +0 @2 NULL 0 e // @ +0 @5 NULL 0 e // @ +0 3 NULL 0 r // @ +0 a# NULL 0 a // @ +0 I2 NULL 0 i +0 I NULL 0 i +0 a NULL 0 a +0 aa NULL 0 a +0 V NULL 0 a // @ +0 U NULL 0 u +0 0 NULL 0 o +0 i: NULL 0 i +0 u: NULL 0 u +0 A: NULL 0 a +0 3: NULL 60 e r // @ +//0 aI NULL 60 a j +0 OI NULL 60 o j +0 i@ NULL 60 i r // @ +0 i@3 NULL 60 i r // @ +0 e@ NULL 70 e r +0 o@ NULL 70 o r // @ +0 O@ NULL 70 o r // @ +0 O NULL 0 o +0 O: NULL 0 a +0 A: NULL 0 a +0 A@ NULL 70 a r +0 U@ NULL 60 u r // @ +0 aI@ NULL 70 a r // @ +0 aU@ NULL 0 a + +0 E NULL 0 e +0 w NULL 0 v +0 h NULL 0 x +0 tS VWL 0 c +0 tS NULL 0 S +0 dZ VWL 0 q +0 dZ NULL 0 Z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/grc-de6 b/phonemizer/backend/espeak/mbrola-foldings/grc-de6 new file mode 100644 index 0000000..c6c6a74 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/grc-de6 @@ -0,0 +1,29 @@ +// use mbrola de6 German voice for "grc" (Ancient Greek) + + +0 i NULL 0 i: +0 e NULL 0 e: +0 E NULL 0 E: +0 a NULL 0 a: +0 a/ NULL 0 a: +0 O NULL 0 O +0 o NULL 0 o: +0 y NULL 0 Y + +0 aI NULL 60 a: j +0 EI NULL 70 E: j +0 OI NULL 70 O j +0 oI NULL 60 o: j +0 yI NULL 60 Y j +0 aU NULL 0 aU +0 eU NULL 60 e: w +0 EU NULL 70 E: w +0 OU NULL 70 O w + +0 l/ NULL 0 l +0 f NULL 0 pf + + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/he b/phonemizer/backend/espeak/mbrola-foldings/he new file mode 100644 index 0000000..a0cfd7d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/he @@ -0,0 +1,61 @@ +0 ' NULL 0 ' +0 ? NULL 0 ? +0 a NULL 0 a +0 b NULL 0 b +0 d NULL 0 d +0 D NULL 0 D +0 e NULL 0 e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i NULL 0 i +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 m NULL 0 m +0 n NULL 0 n +0 N NULL 0 N +0 o NULL 0 o +0 p NULL 0 p +0 Q NULL 0 Q +0 s NULL 0 s +0 S NULL 0 S +0 t NULL 0 t +0 T NULL 0 T +0 u NULL 0 u +0 v NULL 0 v +0 w NULL 0 w +0 X NULL 0 X +0 z NULL 0 z +0 Z NULL 0 Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/hn1 b/phonemizer/backend/espeak/mbrola-foldings/hn1 new file mode 100644 index 0000000..1125687 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/hn1 @@ -0,0 +1,27 @@ + +// Korean + +0 k- NULL 0 k_> +0 t- NULL 0 t_> +0 * NULL 0 4 +0 p- NULL 0 p_> +0 s- NULL 0 s_> +0 tS; NULL 0 ts\ +0 tS;- NULL 0 ts\_> +0 tSh; NULL 0 ts\_h +0 k_h NULL 0 ts\_h +0 tSh; NULL 0 ts\_h +0 kh NULL 0 k_h +0 th NULL 0 t_h +0 ph NULL 0 p_h +0 dZ; NULL 0 dz\ + +0 ng NULL 0 N + +0 @ NULL 0 V +0 j@ NULL 0 jV +0 Y NULL 0 2 +0 w@ NULL 0 wV +0 u- NULL 0 M +0 u-j NULL 0 M\i + diff --git a/phonemizer/backend/espeak/mbrola-foldings/hu1 b/phonemizer/backend/espeak/mbrola-foldings/hu1 new file mode 100644 index 0000000..c51bb59 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/hu1 @@ -0,0 +1,66 @@ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +2 ; i 0 NULL +0 ; NULL 0 j +0 - NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 R2 NULL 0 r + +0 e NULL 0 e: +0 A NULL 0 O +0 Y NULL 0 2 +0 Y: NULL 0 2: + +0 c NULL 0 t' +0 J NULL 0 d' +0 n^ NULL 60 n j +0 N NULL 0 n +0 C NULL 0 x +0 s2 NULL 0 s +0 t2 NULL 0 t + + +// map English phonemes to Hungarian +0 @ NULL 0 2 +0 eI NULL 60 e: j +0 aU NULL 60 a: u +0 oU NULL 0 o +0 @L NULL 40 2 l +0 @2 NULL 0 2 // @ +0 @5 NULL 0 2 // @ +0 3 NULL 0 2 // @ +0 a# NULL 0 a: // @ +0 I2 NULL 0 i +0 I NULL 0 i +0 a NULL 0 a: +0 aa NULL 0 a: +0 V NULL 0 O // @ +0 U NULL 0 u +0 0 NULL 0 O +0 A: NULL 0 O +0 3: NULL 0 2 // @ +0 aI NULL 60 a: j +0 OI NULL 60 o j +0 i@ NULL 60 i 2 // @ +0 i@3 NULL 60 i 2 // @ +0 e@ NULL 70 e: 2 +0 o@ NULL 70 o 2 // @ +0 O@ NULL 70 O 2 // @ +0 O: NULL 0 O +0 A: NULL 0 O +0 A@ NULL 70 O 2 +0 U@ NULL 60 u 2 // @ +0 aI@ NULL 70 a: 2 // @ +0 aU@ NULL 70 O 2 + +0 T NULL 0 t +0 D NULL 0 z +0 w NULL 0 v \ No newline at end of file diff --git a/phonemizer/backend/espeak/mbrola-foldings/ic1 b/phonemizer/backend/espeak/mbrola-foldings/ic1 new file mode 100644 index 0000000..4ad40c5 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ic1 @@ -0,0 +1,52 @@ + +0 r/ r# 0 NULL + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 u +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 ** NULL 0 NULL +0 * NULL 0 NULL + + +0 y NULL 0 Y +0 y: NULL 0 Y: +0 W NULL 0 9 +0 W: NULL 0 9: +0 eI NULL 0 ei +0 eI: NULL 0 ei: +0 aI NULL 0 ai +0 aI: NULL 0 ai: +0 oU NULL 0 ou +0 oU: NULL 0 ou: +0 aU NULL 0 au +0 aU: NULL 0 au: +0 Yy NULL 0 9y +0 Yy: NULL 0 9y: +0 OI NULL 0 Oi +0 yi NULL 0 Yi + +0 _| NULL 0 NULL +0 R _ 0 r0 +0 R NULL 0 r +0 R2 NULL 0 r +0 Q NULL 0 G +0 m# NULL 0 m0 +0 n# NULL 0 n0 +0 N# NULL 0 N0 +0 n^ NULL 0 J +0 n^# NULL 0 J0 +0 l# NULL 0 l0 +0 r# NULL 0 r0 +0 J NULL 0 J- +0 s2 NULL 0 NULL + +5 h l# 0 l0 +5 h n# 0 n0 +5 h r# 0 r0 diff --git a/phonemizer/backend/espeak/mbrola-foldings/id1 b/phonemizer/backend/espeak/mbrola-foldings/id1 new file mode 100644 index 0000000..a55ab95 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/id1 @@ -0,0 +1,80 @@ + +// ID1 and MS1 don't like same phonemes twice +0 s s 5 s _ +0 ? k 5 k _ +0 t t 5 t _ +0 m m 5 m _ +0 n n 5 n _ +0 p p 5 p _ +0 l/ l 5 l _ +0 h h 5 h _ +0 k k 5 k _ +0 z z 5 z _ +0 D D 5 z _ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 a/ NULL 0 V +2 ; i 0 NULL +0 ; NULL 0 NULL +0 - NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 NULL +0 R2 NULL 0 r +0 R NULL 0 r + +0 a NULL 0 V +0 E NULL 0 e +0 E2 NULL 0 e +0 i NULL 0 I +0 o NULL 0 Q +0 O NULL 0 Q +0 u NULL 0 U +// 'id1' has phonemes OI aI aU + + +0 n^ NULL 0 nY +0 ? NULL 0 k +0 S NULL 60 s j +0 v NULL 0 f +0 R NULL 0 r +0 x NULL 0 h + +// some English phonemes +0 A: NULL 60 V r +0 A@ NULL 60 V r +0 eI NULL 0 e +0 oU NULL 60 Q U +0 u: NULL 0 U +0 i: NULL 0 I +0 I2 NULL 0 I +0 I# NULL 0 I +0 3 NULL 0 @ +0 3: NULL 0 @ +0 e@ NULL 0 e +0 i@ NULL 60 I @ +0 i@3 NULL 60 I r +0 o@ NULL 60 Q @ +0 O@ NULL 60 Q @ +0 O: NULL 80 Q @ +0 U@ NULL 60 U @ +0 0 NULL 0 Q +0 a# NULL 0 @ +0 aa NULL 0 V +0 @L NULL 50 @ l +0 aI @ 5 aI _ +0 aI 3 5 aI _ +0 aU @ 5 aU _ +0 aI@ NULL 75 V @ +0 aI3 NULL 75 V r +0 aU@ NULL 75 V @ + +0 Z NULL 60 z j +0 T NULL 0 t +0 D NULL 0 z diff --git a/phonemizer/backend/espeak/mbrola-foldings/in b/phonemizer/backend/espeak/mbrola-foldings/in new file mode 100644 index 0000000..568264e --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/in @@ -0,0 +1,66 @@ +volume 15 + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 v +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 @ NULL 0 a +0 V NULL 0 a +0 a NULL 0 a +0 @2 NULL 0 a +0 @3 NULL 0 a +0 @4 NULL 0 a +0 i NULL 0 ii +0 i: NULL 0 ii +0 I NULL 0 ii +0 e: NULL 0 e +0 e NULL 0 e +0 E: NULL 0 ai +0 E NULL 0 ai +0 E~ NULL 0 ai +0 &: NULL 0 ai +0 a: NULL 0 aa +0 o: NULL 0 o +0 o NULL 0 o +0 O NULL 0 o +0 O: NULL 0 au +0 U NULL 0 uu +0 u: NULL 0 uu +0 aI NULL 0 ai +0 aU NULL 0 au + +0 o~ NULL 0 o +0 O~ NULL 0 au +0 u~ NULL 0 uu + +0 H NULL 0 h +0 p# NULL 0 ph +0 b# NULL 0 bh +0 t# NULL 0 th +0 d# NULL 0 dh +0 t. NULL 0 T +0 t.# NULL 0 Th +0 d. NULL 0 D +0 d.# NULL 0 Dh +0 c# NULL 0 ch +0 J NULL 0 j +0 J# NULL 0 jh +0 k# NULL 0 kh +0 g# NULL 0 gh +0 n. NULL 0 N +0 n^ NULL 0 N +0 j NULL 0 y +0 S NULL 0 sh +0 s. NULL 0 sh +0 l. NULL 0 l +0 w NULL 0 v + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/ir1 b/phonemizer/backend/espeak/mbrola-foldings/ir1 new file mode 100644 index 0000000..a89ff4c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ir1 @@ -0,0 +1,267 @@ +// eSpeak Phonemes to Mbrola +// Persian (Farsi) & English +// mb-ir1 Phonemes Translation +// Seyed Mahmood Taghavi Shahri +// mahmood.taghavi at Gmail.com +// http://www.amardan.ir +// License: GPL +// Release: 2013-11-07 + +// Limitation: Some English vowels can not be present or play with only two "ir1" diphones! +// I need ability of combine up to four Mbrola diphones for good eSpeak to Mbrola translation. +// Most English vowels can be present with two or three "ir1" diphones. But for playing them, +// Mbrola "ir1" don't allow consequence of Persian vowels and also begin with a Persian vowel. +// So in most case I forced to add "?" Persian consonant to do work with "ir1" specifications. + +// Persian vowels +2 A _ 0 ? a: +6 A i 0 ? a: +2 A i 0 y a: // Persian: ریاضی +2 A VWL 0 ? a: +2 A ; 0 ? a: +0 A NULL 0 a: +2 u _ 0 ? u +6 u i 0 ? u +2 u i 0 y u +2 u VWL 0 ? u +2 u ; 0 ? u +0 u NULL 0 u +2 i _ 0 ? i +6 i i 0 ? i +2 i i 0 y i +2 i 3: 0 i // Before phoneme end with "mb-ir1" consonant. +2 i @L 0 i // Before phoneme end with "mb-ir1" consonant. +2 i e@ 0 i // Before phoneme end with "mb-ir1" consonant. +2 i r- 0 i // Before phoneme end with "mb-ir1" consonant. +2 i VWL 0 ? i +2 i ; 0 ? i +0 i NULL 0 i +2 a _ 0 ? a +6 a i 0 ? a +2 a i 0 y a +2 a @L 0 a // Before phoneme end with "mb-ir1" consonant. +2 a VWL 0 ? a +2 a ; 0 ? a // English: specialty and +0 a NULL 0 a +2 e _ 0 ? e +6 e i 0 ? e +2 e i 0 y e +2 e VWL 0 ? e +2 e ; 0 ? e +0 e NULL 0 e +2 o _ 0 ? o +6 o i 0 ? o +2 o i 0 y o +2 o VWL 0 ? o +2 o ; 0 ? o +0 o NULL 0 o + +// Persian end of words +0 _ NULL 0 NULL +2 _ NULL 0 NULL + +// Persian & English consonants +0 ? NULL 0 ? +0 b NULL 0 b +0 d NULL 0 d +0 dZ NULL 0 j: +0 D NULL 50 z d +0 f NULL 0 f +0 h NULL 0 h +0 j NULL 0 y +0 l NULL 0 l +0 m NULL 0 m +0 n NULL 0 n +0 N NULL 50 n g: +0 p NULL 0 p +0 l/ NULL 0 l +1 q 1 0 q +0 q NULL 0 q +0 r NULL 0 r +0 R NULL 0 r +0 s NULL 0 s +0 S NULL 0 s: +0 t NULL 0 t +0 tS NULL 0 c: +0 T NULL 50 s t +0 v NULL 0 v +0 x NULL 0 x +0 z NULL 0 z +0 Z NULL 0 z: +0 g A 0 g +0 g u 0 g +0 g o 0 g +0 g @5 0 g +0 g A@ 0 g +0 g 0 0 g +0 g V 0 g +0 g u: 0 g +0 g U 0 g +0 g U@ 0 g +0 g O@ 0 g +0 g o@ 0 g +0 g OI 0 g +0 g NULL 0 g: +0 k A 0 k +0 k u 0 k +0 k o 0 k +0 k @5 0 k +0 k A@ 0 k +0 k 0 0 k +0 k V 0 k +0 k u: 0 k +0 k U 0 k +0 k U@ 0 k +0 k O@ 0 k +0 k o@ 0 k +0 k OI 0 k +0 k NULL 0 c + +// Persian & English others +0 ; NULL 0 _ +0 g- NULL 0 NULL +0 @- NULL 0 NULL + +// English vowels +0 w NULL 0 v // English: quite. Arabic: ولَد +8 a NULL 0 ? a +8 i NULL 0 ? i +0 @ NULL 50 ? e +8 3 NULL 50 ? e +2 3 i@ 50 e r // Before phoneme end with "mb-ir1" consonant. +2 3 VWL 50 ? e +2 3 ; 50 ? e +0 3 NULL 50 e r +0 3: NULL 50 ? r +8 @L NULL 50 ? l +2 @L VWL 50 ? l +2 @L ; 50 ? l +0 @L NULL 50 e l +0 @2 NULL 50 ? e +2 @5 g 0 u +2 @5 k 0 u +8 @5 NULL 0 ? u +2 @5 VWL 0 ? u +2 @5 ; 0 ? u +0 @5 NULL 0 u +8 aa NULL 0 ? a +2 aa @L 0 a // Before phoneme end with "mb-ir1" consonant. +2 aa VWL 0 ? a +2 aa ; 0 ? a +0 aa NULL 0 a +0 a# NULL 10 ? e +0 A: NULL 10 ? a: +2 A@ g 10 a: r +2 A@ k 10 a: r +8 A@ NULL 0 ? r +2 A@ VWL 0 ? r +2 A@ ; 0 ? r +0 A@ NULL 10 a: r +8 E NULL 0 ? e +2 E @L 0 e // Before phoneme end with "mb-ir1" consonant. +2 E l/2 0 e // Before phoneme end with "mb-ir1" consonant. +2 E VWL 0 ? e +2 E ; 0 ? e +0 E NULL 0 e +8 e@ NULL 50 ? r +2 e@ VWL 50 ? r +2 e@ ; 50 ? r +0 e@ NULL 50 e r +0 I NULL 50 ? i +8 I2 NULL 0 ? e +2 I2 3: 0 e // Before phoneme end with "mb-ir1" consonant. +2 I2 @L 0 e // Before phoneme end with "mb-ir1" consonant. +2 I2 VWL 0 ? e +2 I2 ; 0 ? e +0 I2 NULL 0 e +8 i: NULL 0 ? i +2 i: @L 0 i // Before phoneme end with "mb-ir1" consonant. +2 i: VWL 0 ? i +2 i: ; 0 ? i +0 i: NULL 0 i +0 i@ NULL 50 y r +2 0 g 0 a: +2 0 k 0 a: +8 0 NULL 0 ? a: +2 0 @L 0 a: // Before phoneme end with "mb-ir1" consonant. +2 0 VWL 0 ? a: +2 0 ; 0 ? a: +0 0 NULL 0 a: +2 V g 0 a: +2 V k 0 a: +8 V NULL 0 ? a: +2 V 3: 0 a: // Before phoneme end with "mb-ir1" consonant. +2 V @L 0 a: // Before phoneme end with "mb-ir1" consonant. +2 V A@ 0 a: // Before phoneme end with "mb-ir1" consonant. +2 V e@ 0 a: // Before phoneme end with "mb-ir1" consonant. +2 V VWL 0 ? a: +2 V ; 0 ? a: +0 V NULL 0 a: +2 u: g 0 u +2 u: k 0 u +8 u: NULL 0 ? u +2 u: @L 0 u // Before phoneme end with "mb-ir1" consonant. +2 u: VWL 0 ? u +2 u: ; 0 ? u +0 u: NULL 0 u +2 U g 0 u +2 U k 0 u +8 U NULL 0 ? u +2 U VWL 0 ? u +2 U ; 0 ? u +0 U NULL 0 u +2 U@ g 90 o r +2 U@ k 90 o r +8 U@ NULL 0 ? o +2 U@ VWL 0 ? o +2 U@ ; 0 ? o +0 U@ NULL 90 o r +0 O: NULL 10 ? a: +2 O@ g 70 o r +2 O@ k 70 o r // English: recording +8 O@ NULL 0 ? o +2 O@ VWL 10 ? o +2 O@ ; 10 ? o +0 O@ NULL 70 o r +2 o@ g 70 o r +2 o@ k 70 o r +8 o@ NULL 0 ? o +2 o@ VWL 0 ? o +2 o@ ; 0 ? o +0 o@ NULL 70 o r +0 aI NULL 0 ? a:y +0 eI NULL 0 ? ey +2 OI g 0 oy +2 OI k 0 oy +8 OI NULL 0 ? oy +2 OI VWL 0 ? oy +2 OI ; 0 ? oy +0 OI NULL 0 oy +0 aU NULL 0 ? ow +0 oU NULL 0 ? ow +8 aI@ NULL 0 ? ay +2 aI@ VWL 0 ? ay +2 aI@ ; 0 ? ay +0 aI@ NULL 90 ay ? +0 aU@ NULL 50 ? o +0 l/2 NULL 0 l // English: child +0 r- NULL 0 r // English: are available +0 i@3 NULL 50 ? r // English: career +0 I# NULL 50 ? n // English: genuine +0 VR NULL 50 ? r // English: sir +0 n^ NULL 90 ? n // English: n +0 th NULL 50 s t // English: th +0 ts NULL 50 t s // English: mhz +0 t# NULL 0 t // English: gettin +0 n- NULL 50 ? n // English: gettin +0 O~ NULL 50 ? n // English: frisson +0 tS; NULL 0 c: // English: ћ +0 Q NULL 0 g: // English: Miguel +0 Q" NULL 0 q // English: غ +0 z. NULL 0 z: // English: ڑ +0 IR NULL 50 ? r +0 C NULL 0 c: // German ich. +0 Y NULL 0 ? o // German ö, French oe. +0 l^ NULL 50 g: l // Italian gli. + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/it1 b/phonemizer/backend/espeak/mbrola-foldings/it1 new file mode 100644 index 0000000..15be980 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/it1 @@ -0,0 +1,58 @@ +// for voices "it1" "it2" +volume 20 + +0 aI NULL 60 A I +0 a NULL 0 A +0 a/ NULL 0 A2 +0 aU NULL 60 A U +0 b : 50 B B +0 b NULL 0 B +0 c NULL 0 ts +0 d : 50 D D +0 d NULL 0 D +0 e NULL 0 E +0 E NULL 0 E1 +0 e/ NULL 0 E2 +0 f NULL 0 F +0 g : 50 G G +0 g NULL 0 G +0 h NULL 0 H +0 i NULL 0 I +0 i/ NULL 0 I +0 I NULL 0 I2 +0 j/ NULL 0 I +0 k : 50 K K +0 k NULL 0 K +0 l NULL 0 L +0 l NULL 0 L +0 l/ NULL 0 L +0 l^ NULL 0 L +0 m NULL 0 M +0 n^ NULL 0 J +0 n NULL 0 N +0 N NULL 0 ng +0 _| NULL 0 _ +0 ; NULL 0 NULL +0 [ NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 R +0 oI NULL 60 O I +0 O NULL 0 O1 +0 o NULL 0 O1 +0 o/ NULL 0 O2 +0 p : 50 P P +0 p NULL 0 P +0 r NULL 0 R +0 R NULL 0 RR +0 s NULL 0 S +0 t : 50 T T +0 t NULL 0 T +0 U NULL 0 U +0 u NULL 0 U1 +0 v NULL 0 V +0 w2 NULL 0 VV +0 w/ NULL 0 V +0 w NULL 0 W +0 z NULL 0 Z +1 d z 0 dz + diff --git a/phonemizer/backend/espeak/mbrola-foldings/it3 b/phonemizer/backend/espeak/mbrola-foldings/it3 new file mode 100644 index 0000000..2c12887 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/it3 @@ -0,0 +1,46 @@ +// for voices "it3" "it4" +volume 15 + +0 r/ NULL 0 r +0 w/ NULL 0 w +0 l/ NULL 0 l +0 j/ NULL 0 i +0 ; NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 R NULL 0 r +0 _| NULL 0 _ + + +0 p : 50 p p +0 b : 50 b b +0 t : 50 t t +0 d : 50 d d +0 k : 50 k k +0 g : 50 g g + +1 d z 0 dz +0 n^ NULL 0 J +0 l^ NULL 0 L +0 N NULL 0 ng +0 n f 0 nf +0 w2 NULL 0 w + + +0 aI NULL 60 a1 i +0 aU NULL 60 a1 u +0 oI NULL 60 o1 i + +0 i NULL 0 i1 +0 I NULL 0 i +0 e NULL 0 e1 +0 e/ NULL 0 e +0 E NULL 0 E1 +0 a NULL 0 a1 +0 a/ NULL 0 a +0 O NULL 0 O1 +0 o NULL 0 o1 +0 o/ NULL 0 o +0 u NULL 0 u1 +0 U NULL 0 u + diff --git a/phonemizer/backend/espeak/mbrola-foldings/jp b/phonemizer/backend/espeak/mbrola-foldings/jp new file mode 100644 index 0000000..8e8f1f7 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/jp @@ -0,0 +1,45 @@ +volume 15 + +0 a: NULL 0 a: +0 a NULL 0 a +0 b NULL 0 b +0 C NULL 0 c +0 c NULL 0 c +0 d_z\ NULL 0 dZ +0 d NULL 0 d +0 e: NULL 0 e: +0 e NULL 0 e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i~ NULL 0 i +0 i: NULL 0 i: +0 i NULL 0 i +0 y NULL 0 y +0 _j NULL 0 j +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 m NULL 0 m +0 N\ NULL 0 n +0 n NULL 0 n +0 o: NULL 0 o: +0 o NULL 0 o +0 p\ NULL 0 p +0 p NULL 0 p +0 q NULL 0 q +0 r` NULL 0 r +0 r NULL 0 r +0 s\ NULL 0 S +0 s NULL 0 s +0 t_s\ NULL 0 tS +0 t_s NULL 0 ts +0 t NULL 0 t +0 u: NULL 0 u: +0 u~ NULL 0 U +0 u NULL 0 u +0 v NULL 0 v +0 w NULL 0 w +0 x NULL 0 x +0 z NULL 0 z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/la1 b/phonemizer/backend/espeak/mbrola-foldings/la1 new file mode 100644 index 0000000..f3b4f2f --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/la1 @@ -0,0 +1,35 @@ +0 r/ NULL 0 r +0 w/ NULL 0 w +0 ; NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +1 R * 0 r: +0 R NULL 0 r + +1 p 0 p_h +1 t 0 t_h +1 k 0 k_h + +0 p : 0 p: +0 b : 0 b: +0 t : 0 t: +0 d : 0 d: +0 k : 0 k: +0 g : 0 g: + +9 f f 0 f: +9 s s 0 s: +9 z z 0 z: +9 m m 0 m: +9 n n 0 n: + +9 j/ j 0 j: +0 j/ NULL 0 j +0 l/ NULL 0 l +9 l/2 l 0 l: +0 l/2 NULL 0 l + +0 aI NULL 0 aE +0 aU NULL 0 aU +0 oI NULL 0 oE +0 EU NULL 60 E U diff --git a/phonemizer/backend/espeak/mbrola-foldings/lt b/phonemizer/backend/espeak/mbrola-foldings/lt new file mode 100644 index 0000000..fce8aee --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/lt @@ -0,0 +1,53 @@ +//0 ' NULL 0 NULL +//0 , NULL 0 NULL +//0 ; NULL 0 NULL +0 ;; NULL 0 ' +0 @- NULL 0 NULL + +0 a: NULL 0 aa +0 i: NULL 0 ii +0 e NULL 0 E +0 e: NULL 0 ea +0 o: NULL 0 oo +0 u: NULL 0 uu + + +0 a : 0 aa +0 i : 0 ii +0 e : 0 ea +0 o : 0 oo +0 u : 0 uu + +0 ai NULL 50 a i +0 au NULL 50 a u +0 ei NULL 50 e i +0 eu NULL 50 e u +0 oi NULL 50 o i +0 ui NULL 50 u i + + +0 b; NULL 0 b' +0 c; NULL 0 c' +0 x; NULL 0 x' +0 tS; NULL 0 tS' +0 d; NULL 0 d' +0 dz; NULL 0 dz' +0 dZ; NULL 0 dZ' +0 ;ei NULL 0 ei +0 ;ie NULL 0 ie +0 f; NULL 0 f' +0 h; NULL 0 h' +0 j; NULL 0 j' +0 k; NULL 0 k' +0 l; NULL 0 l' +0 m; NULL 0 m' +0 n; NULL 0 n' +0 p; NULL 0 p' +0 r; NULL 0 r' +0 s; NULL 0 s' +0 S; NULL 0 S' +0 t; NULL 0 t' +0 v; NULL 0 v' +0 z; NULL 0 z' +0 Z; NULL 0 Z' + diff --git a/phonemizer/backend/espeak/mbrola-foldings/ma1 b/phonemizer/backend/espeak/mbrola-foldings/ma1 new file mode 100644 index 0000000..028b9d9 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ma1 @@ -0,0 +1,39 @@ +0 ? NULL 0 _ +0 @ NULL 0 @ +0 a/ NULL 0 V +0 ai NULL 0 aI +0 au NULL 0 aU +0 a NULL 0 V +0 b NULL 0 b +0 c NULL 0 c +0 d NULL 0 d +0 ei NULL 0 eI +0 E NULL 0 e +0 e NULL 0 e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i NULL 0 I +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 m NULL 0 m +0 n^ NULL 0 N +0 n NULL 0 n +0 oi NULL 0 oI +0 o NULL 0 o +0 p NULL 0 p +0 q NULL 0 Q +0 r/ NULL 0 r +0 * NULL 0 r +0 R NULL 0 r +0 r NULL 0 r +0 s NULL 0 s +0 t NULL 0 t +0 u NULL 0 U +0 v NULL 0 V +0 w NULL 0 w +0 x NULL 0 x +0 y NULL 0 y +0 z NULL 0 z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/mx1 b/phonemizer/backend/espeak/mbrola-foldings/mx1 new file mode 100644 index 0000000..e7b6bf1 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/mx1 @@ -0,0 +1,90 @@ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 i +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 : NULL 0 NULL + +0 ** NULL 0 r +2 R s 1 _ rr // s-rr, t-rr are unknown +2 R t 1 _ rr +0 R NULL 0 rr +0 R2 NULL 0 NULL +0 v# NULL 0 b +0 v NULL 0 b +0 j NULL 0 i +0 J NULL 0 jj +0 J^ NULL 0 jj +0 n^ NULL 0 J +0 N NULL 0 n + +0 B NULL 0 b +0 D NULL 0 d +0 Q NULL 0 g + +0 z NULL 0 s + + +// don't allow [u] next to a vowel, except [u] +0 u u 0 u +0 u VWL 0 w +2 u u 0 u +2 u VWL 0 w + +0 j NULL 0 i + +0 a/ NULL 0 a +0 E NULL 0 e +0 O NULL 0 o +0 aI NULL 60 a i +0 eI NULL 60 e i +0 oI NULL 60 o i +0 aU NULL 60 a w +0 eU NULL 60 e w + +0 S NULL 60 s i +0 Z NULL 60 s i + +0 @ NULL 0 e +0 @2 NULL 0 e +0 @5 NULL 0 u +0 0 NULL 0 o +0 V NULL 0 a +0 U NULL 0 u +0 I NULL 0 i +0 I2 NULL 0 i +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o i +0 aI@ NULL 60 a r +0 aU@ NULL 0 a +0 t2 NULL 0 t +0 h NULL 0 NULL + + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/mx2 b/phonemizer/backend/espeak/mbrola-foldings/mx2 new file mode 100644 index 0000000..466944c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/mx2 @@ -0,0 +1,90 @@ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 i +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 : NULL 0 NULL + +0 ** NULL 0 r +2 R s 1 _ rr // s-rr, t-rr are unknown +2 R t 1 _ rr +0 R NULL 0 rr +0 R2 NULL 0 NULL +0 v# NULL 0 b +0 v NULL 0 b +0 j NULL 0 i +0 J NULL 0 dZ +0 J^ NULL 0 dZ +0 n^ NULL 0 ny +0 N NULL 0 n + +0 B NULL 0 b +0 D NULL 0 d +0 Q NULL 0 g + +0 z NULL 0 s +0 x NULL 0 j + +// don't allow [u] next to a vowel, except [u] +0 u u 0 u +0 u VWL 0 w +2 u u 0 u +2 u VWL 0 w + +0 j NULL 0 i + +0 a/ NULL 0 a +0 E NULL 0 e +0 O NULL 0 o +0 aI NULL 60 a i +0 eI NULL 60 e i +0 oI NULL 60 o i +0 aU NULL 60 a w +0 eU NULL 60 e w + +0 S NULL 60 s i +0 Z NULL 60 s i + +0 @ NULL 0 e +0 @2 NULL 0 e +0 @5 NULL 0 u +0 0 NULL 0 o +0 V NULL 0 a +0 U NULL 0 u +0 I NULL 0 i +0 I2 NULL 0 i +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o i +0 aI@ NULL 60 a r +0 aU@ NULL 0 a +0 t2 NULL 0 t +0 h NULL 0 NULL + + + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/nl b/phonemizer/backend/espeak/mbrola-foldings/nl new file mode 100644 index 0000000..4bc1d3e --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/nl @@ -0,0 +1,77 @@ + +0 l/2 NULL 0 L +0 l/ NULL 0 L +0 r/ NULL 0 R +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 W +0 j/ NULL 0 J +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 t; NULL 0 tj +0 c NULL 0 tj +0 d; NULL 0 dj +0 J NULL 0 dj +0 n^ NULL 0 nj +0 v# NULL 0 w +0 s; NULL 0 S +0 C NULL 0 x +0 Q NULL 0 G + +0 8 NULL 0 Y +0 e: r/ 0 I: +0 e: NULL 0 e +0 Y: r/ 0 Y: +0 Y: NULL 0 2 +0 o: r/ 0 O: +0 o: NULL 0 o +0 a: NULL 0 a +0 EI NULL 0 Ei +0 Wy NULL 0 9y +0 VU NULL 0 Au +0 eU NULL 70 e W +0 yU NULL 70 y W +0 E2 NULL 0 E + + +// phonemes for English words +0 i: NULL 0 i +0 u: NULL 0 u +0 eI NULL 0 Ei +0 aU NULL 0 Au +0 oU NULL 0 o +0 @L NULL 40 @ l +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 3 NULL 0 @ +0 a# NULL 0 @ +0 I2 NULL 0 I +0 aa NULL 0 a +0 V NULL 0 2 +0 U NULL 0 u +0 0 NULL 0 O +0 3: NULL 0 2 +0 aI NULL 60 A J +0 OI NULL 60 O J +0 e@ NULL 0 E +0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ +0 e@ NULL 60 E @ +0 o@ NULL 70 o @ +0 O@ NULL 70 O @ +0 O: NULL 0 O +0 A: NULL 0 A +0 A@ NULL 70 A @ +0 U@ NULL 60 u @ +0 aI@ NULL 70 a @ +0 aU@ NULL 70 Au @ + +0 dZ VWL 0 dj +0 dZ NULL 0 tj +0 tS NULL 0 tj +0 T NULL 0 t +0 D NULL 0 z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/nz1 b/phonemizer/backend/espeak/mbrola-foldings/nz1 new file mode 100644 index 0000000..ee17619 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/nz1 @@ -0,0 +1,32 @@ +volume 15 + +1 a i 0 aI +0 a NULL 0 A +0 b NULL 0 b +0 c NULL 0 c +0 d NULL 0 d +1 e i 0 eI +0 e NULL 0 e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i NULL 0 i +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 m NULL 0 m +0 n NULL 0 n +1 o i 0 oI +0 o NULL 0 o +0 p NULL 0 p +0 q NULL 0 q +0 r NULL 0 r +0 s NULL 0 s +0 t NULL 0 t +0 u NULL 0 u +0 v NULL 0 v +0 w NULL 0 w +0 x NULL 0 x +0 y NULL 0 y +0 z NULL 0 z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/pl1 b/phonemizer/backend/espeak/mbrola-foldings/pl1 new file mode 100644 index 0000000..058b3f3 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/pl1 @@ -0,0 +1,73 @@ + +2 l/2 E 40 I l +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 R NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +2 ; i 0 NULL +0 ; NULL 0 j +0 - NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 a# NULL 0 a +0 y NULL 0 I +0 E NULL 0 e +0 O NULL 0 o +0 O~ NULL 0 o~ +0 E~ NULL 0 e~ +0 S; NULL 0 s' +0 Z; NULL 0 z' +0 ts; NULL 0 ts' +0 dz; NULL 0 dz' +0 n^ NULL 0 n' +0 c NULL 0 k +0 Q NULL 0 x +0 d; NULL 0 d +0 t; NULL 0 t + + +// map English phonemes to Polish +0 h NULL 0 x +0 @ NULL 0 I // @ +0 i: NULL 0 i +0 u: NULL 0 u +0 eI NULL 60 e j +0 aU NULL 60 a w +0 oU NULL 0 o +0 @L NULL 40 I l +0 @2 NULL 0 I // @ +0 @5 NULL 0 I // @ +0 3 NULL 0 I // @ +0 a# NULL 0 a // @ +0 I2 NULL 0 I +0 aa NULL 0 a +0 V NULL 0 a // @ +0 U NULL 0 u +0 0 NULL 0 o +0 A: NULL 0 a +0 3: NULL 0 I // @ +0 aI NULL 60 a j +0 OI NULL 60 o j +0 i@ NULL 60 i I // @ +0 i@3 NULL 60 i I // @ +0 e@ NULL 0 e +0 o@ NULL 70 o I // @ +0 O@ NULL 70 o I // @ +0 O: NULL 0 o +0 A: NULL 0 a +0 A@ NULL 0 a +0 U@ NULL 60 u I // @ +0 aI@ NULL 70 a I // @ +0 aU@ NULL 0 a + +0 T NULL 0 t +0 D NULL 0 z + + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/pt1 b/phonemizer/backend/espeak/mbrola-foldings/pt1 new file mode 100644 index 0000000..8319b96 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/pt1 @@ -0,0 +1,97 @@ +volume 15 + +0 l/ NULL 0 w +0 l/2 w 0 l +0 l/2 j 0 l +0 l/2 NULL 0 w +0 r/ NULL 0 r +0 r- NULL 0 r +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +8 * j 0 r +0 * VWL 0 r +0 * NULL 0 r +0 : NULL 0 NULL + + +0 tS NULL 0 t +0 dZ NULL 0 d +0 l^ NULL 0 L +0 n^ NULL 0 J +0 N NULL 0 n +0 x NULL 0 R +0 s# NULL 0 S +8 r VWL 0 r +0 r NULL 0 r +0 R NULL 0 r + +0 a/ NULL 0 a +0 A NULL 0 a +0 & NULL 0 6 +0 &/ NULL 0 6 +9 &~ N 0 6~ +0 &~ NULL 0 6~ +0 E NULL 0 E +9 eI m 0 6~j~ +9 eI N 0 6~j~ + +0 i/ NULL 0 i +9 i~ N 0 i~ +0 i~ NULL 0 i~ +9 o~ j/ 60 o~ i +9 o~ N 0 o~ +0 o~ NULL 0 o~ +0 O NULL 0 oo +9 u~ j/ 60 u~ i +9 u~ N 0 u~ +0 u~ NULL 0 u~ +0 U NULL 0 u +0 y NULL 0 @ +0 I NULL 0 @ + +0 aI NULL 60 a j +0 eI NULL 60 e j +0 EI NULL 60 E j +0 oI NULL 60 o j +0 OI NULL 60 O j +0 uI NULL 60 u j +0 aU NULL 55 a w +0 &U~ NULL 0 @ +0 eU NULL 55 e w +0 EU NULL 55 ee w +0 iU NULL 55 i w + + +// English phonemes +0 @ NULL 0 @ +0 T NULL 0 t +0 D NULL 0 z +0 0 NULL 0 o +0 V NULL 0 a +0 I2 NULL 0 @ +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o i +0 aI@ NULL 60 a e +0 aU@ NULL 0 a +0 t2 NULL 0 t + diff --git a/phonemizer/backend/espeak/mbrola-foldings/ptbr b/phonemizer/backend/espeak/mbrola-foldings/ptbr new file mode 100644 index 0000000..7789295 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ptbr @@ -0,0 +1,117 @@ +volume 15 + +0 l/ NULL 0 w +0 l/2 w 0 l +0 l/2 j 0 l +0 l/2 NULL 0 w +0 r/ NULL 0 r2 +0 r- NULL 0 r +0 w/ NULL 0 w +0 j/ NULL 0 y +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * @- 0 r2 +8 * j 0 r +0 * VWL 0 r +0 * NULL 0 r2 +0 : NULL 0 NULL + + +0 S NULL 0 x +0 Z NULL 0 j +0 tS NULL 0 t +0 dZ NULL 0 j +0 l^ NULL 0 h +0 n^ NULL 0 nh +0 N NULL 0 n +0 x NULL 0 rr +0 z _ 0 s2 +0 s VWL 0 s +0 s w 0 s +0 s j 0 s +0 s NULL 0 s2 +8 s# VWL 0 s +0 s# NULL 0 s2 +8 r VWL 0 r +0 r NULL 0 r2 +0 R NULL 0 r +0 j NULL 0 y + +// consonant combinations which are OK for br4 voice, but need epenthetic [i] for br1 br3 +0 k s 90 k i +0 k t 90 k i +0 p s 90 p i +0 p t 90 p i +0 b s 90 b i + +0 a/ NULL 0 a +0 A NULL 0 a +0 & NULL 0 a +0 &/ NULL 0 a +9 &~ N 0 am +0 &~ NULL 0 am +0 E NULL 0 ee +9 eI m 0 em +9 eI N 0 em + +0 i/ NULL 0 i +9 i N 0 im +9 i~ N 0 im +0 i~ NULL 0 im +9 o N 0 om +9 o~ j/ 60 om i +9 o~ N 0 om +0 o~ NULL 0 om +0 O NULL 0 oo +9 u~ j/ 60 um i +9 u~ N 0 um +0 u~ NULL 0 um +0 U NULL 0 o +0 y NULL 0 i + +0 aI NULL 60 a y +0 eI NULL 60 e y +0 EI NULL 60 ee y +0 oI NULL 60 o y +0 OI NULL 60 oo y +0 uI NULL 60 u y +0 aU NULL 55 a w +0 &U~ NULL 60 @ w +0 eU NULL 55 e w +0 EU NULL 55 ee w +0 iU NULL 55 i w + + +// English phonemes +0 @ NULL 0 @ +0 T NULL 0 t +0 D NULL 0 z +0 0 NULL 0 o +0 V NULL 0 a +0 I NULL 0 i +0 I2 NULL 0 i +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o i +0 aI@ NULL 60 a e +0 aU@ NULL 0 a +0 t2 NULL 0 t +0 h NULL 0 NULL + diff --git a/phonemizer/backend/espeak/mbrola-foldings/ptbr4 b/phonemizer/backend/espeak/mbrola-foldings/ptbr4 new file mode 100644 index 0000000..879c30d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ptbr4 @@ -0,0 +1,106 @@ +0 l/ NULL 0 w +0 l/2 w 0 l +0 l/2 j 0 l +0 l/2 NULL 0 w +0 r/ NULL 0 r2 +0 r- NULL 0 r +0 w/ NULL 0 w +0 j/ NULL 0 y +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +8 * j 0 r +0 * VWL 0 r +0 * NULL 0 r2 +0 : NULL 0 NULL + + +0 S NULL 0 x +0 Z NULL 0 j +0 tS NULL 0 t +0 dZ NULL 0 d +0 l^ NULL 0 lh +0 n^ NULL 0 nh +0 N NULL 0 n +0 x NULL 0 rr +0 z _ 0 s2 +0 s VWL 0 s +0 s w 0 s +0 s j 0 s +0 s NULL 0 s2 +8 s# VWL 0 s +0 s# NULL 0 s2 +8 r VWL 0 r +0 r NULL 0 r2 +0 R NULL 0 r +0 j NULL 0 y + +0 a/ NULL 0 a +0 A NULL 0 a +0 & NULL 0 a +0 &/ NULL 0 a +9 &~ N 0 an +0 &~ NULL 0 an +0 E NULL 0 ee +9 eI m 0 en +9 eI N 0 en + +0 i/ NULL 0 i +9 i N 0 in +9 i~ N 0 in +0 i~ NULL 0 in +9 o N 0 on +9 o~ j/ 60 on i +9 o~ N 0 on +0 o~ NULL 0 on +0 O NULL 0 oo +9 u~ j/ 60 un i +9 u~ N 0 un +0 u~ NULL 0 un +0 U NULL 0 w +0 y NULL 0 y +0 I NULL 0 y + +0 aI NULL 60 a y +0 eI NULL 60 e y +0 EI NULL 60 ee y +0 oI NULL 60 o y +0 OI NULL 60 oo y +0 uI NULL 60 u y +0 aU NULL 55 a w +0 &U~ NULL 0 @ +0 eU NULL 55 e w +0 EU NULL 55 ee w +0 iU NULL 55 i w + + +// English phonemes +0 @ NULL 0 @ +0 T NULL 0 t +0 D NULL 0 z +0 0 NULL 0 o +0 V NULL 0 a +0 I2 NULL 0 y +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o i +0 aI@ NULL 60 a e +0 aU@ NULL 0 a +0 t2 NULL 0 t + diff --git a/phonemizer/backend/espeak/mbrola-foldings/ro1 b/phonemizer/backend/espeak/mbrola-foldings/ro1 new file mode 100644 index 0000000..e4541fe --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/ro1 @@ -0,0 +1,95 @@ + +0 i/ NULL 0 i +0 y NULL 0 1 +0 l/ NULL 0 l +0 l/2 NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 g- NULL 0 NULL +0 w NULL 0 u +0 w/ NULL 0 u +0 * NULL 0 r +0 ; NULL 0 NULL +0 a e 15 a _ +0 a NULL 0 a +0 @- NULL 0 NULL +0 j NULL 0 i +0 j/ NULL 0 j +0 I^ _ 0 I +0 I^ NULL 20 I _ +0 @U NULL 60 @ w +0 aU NULL 60 a w +0 eU NULL 80 e u +0 iU NULL 60 i w +0 yU NULL 60 1 w +0 oU NULL 60 o w +0 @I NULL 60 @ j +0 iI NULL 60 i j +0 aI NULL 60 a j +0 eI NULL 100 e i +0 oI NULL 60 o j +0 uI NULL 60 u j +0 yI NULL 60 1 j +0 ea NULL 50 E a +0 eo NULL 50 E o +0 e[u NULL 50 E u +0 Oa NULL 50 O a +0 Y NULL 0 @ +0 Z NULL 0 J +0 ts NULL 0 T +0 tS _ 0 T // [C - _] not allowed +0 tS NULL 0 C +0 dZ NULL 0 G +0 l; NULL 0 l +0 m; NULL 0 m +0 n; NULL 0 n +0 p; NULL 0 p +0 t; NULL 0 t +0 ts; NULL 0 T +0 f; NULL 0 f +0 s; NULL 0 s +0 S; NULL 0 S +0 b; NULL 0 b +0 d; NULL 0 d +0 *; NULL 0 r +0 v; NULL 0 v +0 z; NULL 0 z +0 Z; NULL 0 J +0 w2 NULL 0 w +0 N NULL 0 n + +// phonemes for English words +0 i: NULL 0 i +0 u: NULL 0 u +0 I NULL 0 i +0 E NULL 0 e +0 @L NULL 40 @ l +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 3 NULL 0 @ +0 a# NULL 0 @ +0 I2 NULL 0 i +0 aa NULL 0 a +0 V NULL 0 @ +0 U NULL 0 u +0 0 NULL 0 o +0 3: NULL 0 @ +0 OI NULL 60 o J +0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ +0 e@ NULL 60 e @ +0 o@ NULL 70 o @ +0 O@ NULL 70 o @ +0 O: NULL 0 o +0 O NULL 0 o +0 A: NULL 0 e +0 A@ NULL 70 a @ +0 U@ NULL 60 u @ +0 aI@ NULL 70 a @ +0 aU@ NULL 0 a + +0 T NULL 0 t +0 D NULL 0 z +0 x NULL 0 k + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/sv b/phonemizer/backend/espeak/mbrola-foldings/sv new file mode 100644 index 0000000..e8b0ff0 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/sv @@ -0,0 +1,77 @@ +// 1 r/ d 0 rd +// 1 r/ t 0 rt +// 1 r/ n 0 rn +// 1 r/ s 0 rs +// 1 r/ l 0 rl + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 R NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 S; NULL 0 C +0 sx NULL 0 S +0 S NULL 0 rs +0 s. NULL 0 rs +0 u- NULL 0 }: +0 Y: NULL 0 2: +0 y NULL 0 Y +0 8 NULL 0 u0 +0 W NULL 0 2 +0 E NULL 0 e +0 E- NULL 0 e +0 @ N 0 e +0 a# NULL 0 a +0 E: r 0 {: +0 Y: r 0 9: +0 E r 0 { +0 W r 0 9 + +4 p VWL 0 ph +4 t VWL 0 th +4 k VWL 0 kh + + +// phonemes for English words +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 I2 NULL 0 I +0 i NULL 0 I +0 V NULL 0 u0 +0 aa NULL 0 a +0 0 NULL 0 A: +0 3 NULL 0 @ +0 3: NULL 0 2: +0 aI NULL 60 a j +0 eI NULL 60 e j +0 OI NULL 60 O j +0 aU NULL 60 a U +0 oU NULL 0 o: +0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ +0 e@ NULL 0 E: +0 o@ NULL 70 o: @ +0 O@ NULL 70 O @ +0 O: NULL 0 O +0 A@ NULL 0 A: +0 U@ NULL 60 U @ +0 @L NULL 40 @ l +0 aI@ NULL 70 a @ +0 aU@ NULL 70 A: u0 +0 T VWL 0 th +0 T NULL 0 t +0 D NULL 0 d +0 w NULL 0 v +0 z NULL 0 s +0 tS NULL 50 t rs +0 dZ NULL 50 d rs +0 Z NULL 0 rs + diff --git a/phonemizer/backend/espeak/mbrola-foldings/sv2 b/phonemizer/backend/espeak/mbrola-foldings/sv2 new file mode 100644 index 0000000..e7a0fea --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/sv2 @@ -0,0 +1,73 @@ +// mbrola sw2 voice doesn't have [rs] and other retroflex consonants + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 R NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r + +0 S; NULL 0 C +0 sx NULL 0 S +0 S NULL 50 r s +0 s. NULL 50 r s +0 u- NULL 0 }: +0 Y: NULL 0 2: +0 y NULL 0 Y +0 8 NULL 0 u0 +0 W NULL 0 2 +0 E NULL 0 e +0 E- NULL 0 e +0 @ N 0 e +0 a# NULL 0 a +0 E: r 0 {: +0 Y: r 0 9: +0 E r 0 { +0 W r 0 9 + +4 p VWL 0 ph +4 t VWL 0 th +4 k VWL 0 kh + + +// phonemes for English words +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 I2 NULL 0 I +0 i NULL 0 i +0 V NULL 0 u0 +0 aa NULL 0 a +0 0 NULL 0 A: +0 3 NULL 0 @ +0 3: NULL 0 2: +0 aI NULL 60 a j +0 eI NULL 60 e j +0 OI NULL 60 O j +0 aU NULL 60 a U +0 oU NULL 0 o: +0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ +0 e@ NULL 0 E: +0 o@ NULL 70 o: @ +0 O@ NULL 70 O @ +0 O: NULL 0 O +0 A@ NULL 0 A: +0 U@ NULL 60 U @ +0 @L NULL 40 @ l +0 aI@ NULL 70 a @ +0 aU@ NULL 70 A: u0 +0 T VWL 0 th +0 T NULL 0 t +0 D NULL 0 d +0 w NULL 0 v +0 z NULL 0 s +0 tS NULL 50 t s +0 dZ NULL 50 d s +0 Z NULL 0 s + diff --git a/phonemizer/backend/espeak/mbrola-foldings/tl1 b/phonemizer/backend/espeak/mbrola-foldings/tl1 new file mode 100644 index 0000000..871be01 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/tl1 @@ -0,0 +1,32 @@ +0 aI NULL 0 ai +0 aU NULL 0 au +0 d.# NULL 0 dh +0 t.# NULL 0 th +0 a NULL 0 a +0 b NULL 0 b +0 c NULL 0 c +0 d NULL 0 d +0 e NULL 0 e +0 f NULL 0 f +0 g NULL 0 g +0 h NULL 0 h +0 i NULL 0 i +0 J NULL 0 D +0 j NULL 0 j +0 k NULL 0 k +0 l NULL 0 l +0 m NULL 0 m +0 n NULL 0 n +0 o NULL 0 o +0 p NULL 0 p +0 q NULL 0 q +0 r NULL 0 r +0 s NULL 0 s +0 t NULL 0 t +0 u NULL 0 u +0 v NULL 0 v +0 w NULL 0 w +0 x NULL 0 x +0 y NULL 0 y +0 z NULL 0 z + diff --git a/phonemizer/backend/espeak/mbrola-foldings/tr1 b/phonemizer/backend/espeak/mbrola-foldings/tr1 new file mode 100644 index 0000000..5749053 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/tr1 @@ -0,0 +1,17 @@ + +0 i NULL 0 I +0 E NULL 0 e +0 O NULL 0 o +0 U NULL 0 u +0 W NULL 0 @' +0 Y NULL 0 y + +0 R NULL 0 r +0 * NULL 0 r +0 ** NULL 0 r +0 l/2 NULL 0 l +0 c NULL 0 k +0 J NULL 0 g +0 Q NULL 0 G +0 w NULL 0 v + diff --git a/phonemizer/backend/espeak/mbrola-foldings/us b/phonemizer/backend/espeak/mbrola-foldings/us new file mode 100644 index 0000000..8e905b5 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/us @@ -0,0 +1,54 @@ +0 a# NULL 0 @ +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 @/ NULL 0 @ +0 3 NULL 0 r= +0 I2 NULL 0 I +0 a NULL 0 { +0 aa NULL 0 { +0 @L NULL 0 l +0 l/2 NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 w/ NULL 0 w +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 x NULL 0 k_h +0 @- NULL 0 NULL +0 aI@ NULL 60 AI @ +0 aI3 NULL 60 AI r= +0 aU@ NULL 75 aU r + + +0 * NULL 0 4 +0 t# NULL 0 4 +0 3: NULL 0 r= +0 IR NULL 0 r= +0 VR NULL 0 r= +0 i: NULL 0 i +0 A: NULL 0 A +0 u: NULL 0 u +0 a NULL 0 { +0 eI NULL 0 EI +0 aI NULL 0 AI +0 oU NULL 0 @U +0 O: NULL 0 O + +0 0 NULL 0 A +0 O NULL 0 O +0 O2 NULL 0 O +0 O@ NULL 50 O r +0 o@ NULL 50 O r +0 A@ NULL 50 A r +0 e@ NULL 50 E r +0 U@ NULL 50 U r +0 i@ NULL 50 I @ +0 i@3 NULL 60 i r +0 I# NULL 0 @ + +4 p VWL 0 p_h +4 t VWL 0 t_h +4 k VWL 0 k_h +0 t2 NULL 0 t +0 ? NULL 0 t +0 n- NULL 0 n diff --git a/phonemizer/backend/espeak/mbrola-foldings/us3 b/phonemizer/backend/espeak/mbrola-foldings/us3 new file mode 100644 index 0000000..4c34b7b --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/us3 @@ -0,0 +1,52 @@ +0 a# NULL 0 @ +0 @2 NULL 0 @ +0 @5 NULL 0 @ +0 @/ NULL 0 @ +0 3 NULL 0 r= +0 I2 NULL 0 I +0 a NULL 0 { +0 aa NULL 0 { +0 @L NULL 0 l= +0 l/2 NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 w/ NULL 0 w +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 x NULL 0 k +0 @- NULL 0 NULL +0 aI@ NULL 60 AI @ +0 aI3 NULL 60 AI r= +0 aU@ NULL 75 aU r + + +0 * NULL 0 4 +2 t# n 0 t +0 t# NULL 0 4 +0 3: NULL 0 r= +0 IR NULL 0 r= +0 VR NULL 0 r= +0 i: NULL 0 i +0 A: NULL 0 A +0 u: NULL 0 u +0 a NULL 0 { +0 eI NULL 0 EI +0 aI NULL 0 AI +0 oU NULL 0 @U +0 O: NULL 0 O +0 I# NULL 0 @ + +0 0 NULL 0 A +0 O NULL 0 O +0 O@ NULL 50 O r +0 o@ NULL 50 O r +0 A@ NULL 50 A r +0 e@ NULL 50 E r +0 U@ NULL 50 U r +0 i@ NULL 50 I @ +0 i@3 NULL 60 i r +0 t2 NULL 0 t +0 ? NULL 0 t +0 n- NULL 0 n + + diff --git a/phonemizer/backend/espeak/mbrola-foldings/vz b/phonemizer/backend/espeak/mbrola-foldings/vz new file mode 100644 index 0000000..ddea69b --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-foldings/vz @@ -0,0 +1,113 @@ + +0 l/2 NULL 0 l +0 l/ NULL 0 l +0 r/ NULL 0 r +0 r- NULL 0 r +0 l- NULL 0 l +0 w/ NULL 0 w +0 j/ NULL 0 j +0 ; NULL 0 NULL +0 g- NULL 0 NULL +0 @- NULL 0 NULL +0 * NULL 0 r +0 : NULL 0 NULL + +0 ** NULL 0 r +2 R s 1 _ rr // s-rr, t-rr are unknown +2 R t 1 _ rr +0 R NULL 0 rr +0 R2 NULL 0 NULL +0 v# NULL 0 b +0 v NULL 0 b +0 j NULL 0 j +0 J NULL 0 L +0 J^ NULL 0 L +0 n^ NULL 0 J +0 N NULL 0 n + +2 b VWL 0 B +2 d VWL 0 D +2 g VWL 0 G +0 B NULL 0 B +0 D NULL 0 D +0 Q NULL 0 G +0 z NULL 0 s +0 s VWL 0 s +0 s t 0 s +2 s VWL 0 s2 +0 x NULL 0 h +2 tS _ 0 tS // consonant-tS are unknown +2 tS VWL 0 tS +2 tS NULL 1 _ tS + + +// vowels in stressed syllables +32 a NULL 0 a* +32 e NULL 0 e* +32 i NULL 0 i* +32 o NULL 0 o* +32 u NULL 0 u* + +// don't allow [i] next to a vowel, except [i] +0 i i 0 i +0 i VWL 0 j +1 i ; 0 j +2 i i 0 i +2 i VWL 0 j + + +// don't allow [u] next to a vowel, except [u] +0 u u 0 u +0 u VWL 0 w +2 u u 0 u +2 u VWL 0 w + +0 a/ NULL 0 a +0 E NULL 0 e +0 O NULL 0 o +0 aI NULL 60 a j +0 eI NULL 60 e j +0 oI NULL 60 o j +0 aU NULL 60 a w +0 eU NULL 60 e w + +0 dZ NULL 0 tS +0 S NULL 60 s j +0 Z NULL 60 s j + +0 @ NULL 0 e +0 @2 NULL 0 e +0 @5 NULL 0 u +0 0 NULL 0 o +0 V NULL 0 a +0 U NULL 0 u +0 I NULL 0 i +0 I2 NULL 0 i +0 A: NULL 0 a +0 A@ NULL 60 a r +0 o: NULL 0 o +0 O: NULL 0 o +0 O@ NULL 60 o r +0 o@ NULL 60 o r +0 i: NULL 0 i +0 i@ NULL 60 i a +0 i@3 NULL 60 i r +0 u: NULL 0 u +0 U@ NULL 60 u r +0 3 NULL 60 e r +0 3: NULL 60 e r +0 @L NULL 40 e l +0 a# NULL 0 a +0 aa NULL 0 a +0 e@ NULL 0 e r +0 oU NULL 0 o +0 OI NULL 60 o j +0 aI@ NULL 60 a r +0 aU@ NULL 0 a +0 t2 NULL 0 t +0 h NULL 0 NULL + + + + + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-af1 b/phonemizer/backend/espeak/mbrola-voices/mb-af1 new file mode 100644 index 0000000..03dac4f --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-af1 @@ -0,0 +1,7 @@ +name afrikaans-mbrola-1 +language af 7 +gender male + +pitch 82 117 +mbrola af1 af1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-af1-en b/phonemizer/backend/espeak/mbrola-voices/mb-af1-en new file mode 100644 index 0000000..71ecab7 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-af1-en @@ -0,0 +1,7 @@ +name en-afrikaans +language en 11 +gender male + +pitch 82 117 +mbrola af1 af1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ar1 b/phonemizer/backend/espeak/mbrola-voices/mb-ar1 new file mode 100644 index 0000000..cba9cbc --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ar1 @@ -0,0 +1,6 @@ +name arabic-mbrola-1 +language ar 1 +gender male + +pitch 82 117 +mbrola ar1 ar1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ar2 b/phonemizer/backend/espeak/mbrola-voices/mb-ar2 new file mode 100644 index 0000000..00f1a5e --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ar2 @@ -0,0 +1,6 @@ +name arabic-mbrola-2 +language ar 2 +gender male + +pitch 82 117 +mbrola ar2 ar2_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-br1 b/phonemizer/backend/espeak/mbrola-voices/mb-br1 new file mode 100644 index 0000000..0ef621a --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-br1 @@ -0,0 +1,12 @@ +language pt-br 6 +language pt 8 +name brazil-mbrola-1 +gender male + +pitch 82 117 +voicing 80 + +dictrules 2 3 4 + +mbrola br1 ptbr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-br2 b/phonemizer/backend/espeak/mbrola-voices/mb-br2 new file mode 100644 index 0000000..db558c5 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-br2 @@ -0,0 +1,12 @@ +language pt-br 6 +language pt 8 +name brazil-mbrola-2 +gender female + +pitch 115 195 +voicing 120 + +dictrules 2 3 4 + +mbrola br2 ptbr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-br3 b/phonemizer/backend/espeak/mbrola-voices/mb-br3 new file mode 100644 index 0000000..1f792d3 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-br3 @@ -0,0 +1,11 @@ +language pt-br 6 +language pt 8 +name brazil-mbrola-3 +gender male +pitch 80 120 + +dictrules 2 3 4 +voicing 120 + +mbrola br3 ptbr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-br4 b/phonemizer/backend/espeak/mbrola-voices/mb-br4 new file mode 100644 index 0000000..bd97ecf --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-br4 @@ -0,0 +1,12 @@ +language pt-br 6 +language pt 8 +name brazil-mbrola-4 +gender female + +pitch 140 220 +voicing 80 + +dictrules 2 3 4 + +mbrola br4 ptbr4_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ca1 b/phonemizer/backend/espeak/mbrola-voices/mb-ca1 new file mode 100644 index 0000000..1652604 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ca1 @@ -0,0 +1,6 @@ +language fr-ca 6 +language fr 10 +name fr-canadian-mbrola-1 +gender male +pitch 82 117 +mbrola ca1 ca_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ca2 b/phonemizer/backend/espeak/mbrola-voices/mb-ca2 new file mode 100644 index 0000000..f656612 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ca2 @@ -0,0 +1,6 @@ +language fr-ca 6 +language fr 10 +name fr-canadian-mbrola-2 +gender male +pitch 82 117 +mbrola ca2 ca_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-cn1 b/phonemizer/backend/espeak/mbrola-voices/mb-cn1 new file mode 100644 index 0000000..d524d39 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-cn1 @@ -0,0 +1,6 @@ +name chinese-mb-cn1 +language zh +mbrola cn1 zh_phtrans +pitch 100 280 +speed 90 +status testing diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-cr1 b/phonemizer/backend/espeak/mbrola-voices/mb-cr1 new file mode 100644 index 0000000..5585f87 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-cr1 @@ -0,0 +1,9 @@ +name croatian-mbrola-1 +language hr 7 +gender male + +dictrules 1 + +voicing 150 +pitch 82 117 +mbrola cr1 cr1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-cz1 b/phonemizer/backend/espeak/mbrola-voices/mb-cz1 new file mode 100644 index 0000000..1d53cba --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-cz1 @@ -0,0 +1,4 @@ +name czech-mbrola-1 +language cs 1 +gender female +mbrola cz1 cs_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-cz2 b/phonemizer/backend/espeak/mbrola-voices/mb-cz2 new file mode 100644 index 0000000..6d5e07b --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-cz2 @@ -0,0 +1,6 @@ +name czech-mbrola-2 +language cs 2 +gender male + +pitch 82 117 +mbrola cz2 cs_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de1 b/phonemizer/backend/espeak/mbrola-voices/mb-de1 new file mode 100644 index 0000000..78f1db8 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de1 @@ -0,0 +1,9 @@ +name german-mbrola-1 +language de 6 +gender female +voicing 80 +pitch 140 220 + +stressLength 400 400 400 400 500 500 500 500 +mbrola de1 de2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de1-en b/phonemizer/backend/espeak/mbrola-voices/mb-de1-en new file mode 100644 index 0000000..d7539a9 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de1-en @@ -0,0 +1,9 @@ +name en-german-1 +language en 9 +gender female + +voicing 80 +pitch 140 220 + +mbrola de1 de2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de2 b/phonemizer/backend/espeak/mbrola-voices/mb-de2 new file mode 100644 index 0000000..e2cdb07 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de2 @@ -0,0 +1,8 @@ +name german-mbrola-2 +language de 6 +gender male +voicing 80 +stressLength 400 400 400 400 500 500 500 500 + +mbrola de2 de2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de2-en b/phonemizer/backend/espeak/mbrola-voices/mb-de2-en new file mode 100644 index 0000000..2a28322 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de2-en @@ -0,0 +1,8 @@ +name en-german-2 +language en 9 +gender male + +voicing 80 + +mbrola de2 de2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de3 b/phonemizer/backend/espeak/mbrola-voices/mb-de3 new file mode 100644 index 0000000..d2ff8dd --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de3 @@ -0,0 +1,8 @@ +name german-mbrola-3 +language de 6 +gender female +voicing 80 +pitch 140 220 + +mbrola de3 de2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de3-en b/phonemizer/backend/espeak/mbrola-voices/mb-de3-en new file mode 100644 index 0000000..bb456fa --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de3-en @@ -0,0 +1,9 @@ +name en-german-3 +language en 9 +gender female + +voicing 80 +pitch 140 220 + +mbrola de3 de2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de4 b/phonemizer/backend/espeak/mbrola-voices/mb-de4 new file mode 100644 index 0000000..e9a2a4c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de4 @@ -0,0 +1,8 @@ +name german-mbrola-4 +language de 6 +gender male + +voicing 130 + +mbrola de4 de4_phtrans +stressLength 400 400 400 400 500 500 500 500 diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de4-en b/phonemizer/backend/espeak/mbrola-voices/mb-de4-en new file mode 100644 index 0000000..3a043c2 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de4-en @@ -0,0 +1,8 @@ +name en-german-4 +language en 9 +gender male + +voicing 130 + +mbrola de4 de4_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de5 b/phonemizer/backend/espeak/mbrola-voices/mb-de5 new file mode 100644 index 0000000..e9a5a45 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de5 @@ -0,0 +1,10 @@ +name german-mbrola-5 +language de 7 +gender female +stressLength 400 400 400 400 500 500 500 500 +pitch 140 220 +mbrola de5 de6_phtrans 22050 + +// avoid glottal stops. de5 assumes [?] between pause and vowel +replace 00 _! _ +replace 00 _| _ diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de5-en b/phonemizer/backend/espeak/mbrola-voices/mb-de5-en new file mode 100644 index 0000000..e30a025 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de5-en @@ -0,0 +1,7 @@ +name en-german-5 +language en 9 +gender female + +pitch 140 220 +mbrola de5 de6_phtrans 22050 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de6 b/phonemizer/backend/espeak/mbrola-voices/mb-de6 new file mode 100644 index 0000000..37397cd --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de6 @@ -0,0 +1,6 @@ +name german-mbrola-6 +language de 6 +gender male +stressLength 400 400 400 400 500 500 500 500 +mbrola de6 de6_phtrans 22050 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de6-en b/phonemizer/backend/espeak/mbrola-voices/mb-de6-en new file mode 100644 index 0000000..e60a284 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de6-en @@ -0,0 +1,6 @@ +name en-german-6 +language en 9 +gender male + +mbrola de6 de6_phtrans 22050 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de6-grc b/phonemizer/backend/espeak/mbrola-voices/mb-de6-grc new file mode 100644 index 0000000..a6e0f46 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de6-grc @@ -0,0 +1,6 @@ +name german-mbrola-6 +language grc 6 +gender male + +mbrola de6 grc-de6_phtrans 22050 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de7 b/phonemizer/backend/espeak/mbrola-voices/mb-de7 new file mode 100644 index 0000000..a211aed --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de7 @@ -0,0 +1,8 @@ +name german-mbrola-7 +language de 7 +gender female +stressLength 400 400 400 400 500 500 500 500 +voicing 150 +pitch 140 220 +mbrola de7 de6_phtrans 22050 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-de8 b/phonemizer/backend/espeak/mbrola-voices/mb-de8 new file mode 100644 index 0000000..2818e79 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-de8 @@ -0,0 +1,5 @@ +name german-mbrola-8 +language de 8 +gender male +mbrola de8 de8_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ee1 b/phonemizer/backend/espeak/mbrola-voices/mb-ee1 new file mode 100644 index 0000000..2c500b2 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ee1 @@ -0,0 +1,8 @@ +name estonian-mbrola-1 +language et +gender male + +pitch 75 125 +voicing 80 +mbrola ee1 ee1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-en1 b/phonemizer/backend/espeak/mbrola-voices/mb-en1 new file mode 100644 index 0000000..589231d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-en1 @@ -0,0 +1,9 @@ +name english-mb-en1 +language en-uk 3 +language en-gb 3 +language en 2 +gender male + +voicing 150 +pitch 82 117 +mbrola en1 en1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-es1 b/phonemizer/backend/espeak/mbrola-voices/mb-es1 new file mode 100644 index 0000000..e27f1e7 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-es1 @@ -0,0 +1,9 @@ +language es-es 7 +language es 7 +name spanish-mbrola-1 +gender male +pitch 82 117 + +mbrola es1 es_phtrans +voicing 120 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-es2 b/phonemizer/backend/espeak/mbrola-voices/mb-es2 new file mode 100644 index 0000000..64c52ae --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-es2 @@ -0,0 +1,8 @@ +language es-es 7 +language es 7 +name spanish-mbrola-2 +gender male +pitch 82 117 + +mbrola es2 es_phtrans 22050 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-es3 b/phonemizer/backend/espeak/mbrola-voices/mb-es3 new file mode 100644 index 0000000..7788c80 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-es3 @@ -0,0 +1,6 @@ +language es-es 3 +language es 3 +name spanish-mbrola-3 +gender female +pitch 140 260 +mbrola es3 es3_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-es4 b/phonemizer/backend/espeak/mbrola-voices/mb-es4 new file mode 100644 index 0000000..464d00b --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-es4 @@ -0,0 +1,5 @@ +language es-es 4 +language es 4 +name spanish-mbrola-4 +gender male +mbrola es4 es4_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr1 b/phonemizer/backend/espeak/mbrola-voices/mb-fr1 new file mode 100644 index 0000000..2e5c247 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr1 @@ -0,0 +1,12 @@ +language fr-fr 7 +language fr 7 +name french-mbrola-1 +gender male + +dictrules 1 +stressLength 180 180 180 180 0 0 220 220 +pitch 82 117 +voicing 70 + +mbrola fr1 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr1-en b/phonemizer/backend/espeak/mbrola-voices/mb-fr1-en new file mode 100644 index 0000000..b39db34 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr1-en @@ -0,0 +1,9 @@ +name en-french +language en 10 +gender male + +dictrules 1 +pitch 82 117 +voicing 70 +mbrola fr1 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr2 b/phonemizer/backend/espeak/mbrola-voices/mb-fr2 new file mode 100644 index 0000000..788c747 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr2 @@ -0,0 +1,7 @@ +language fr-fr 8 +language fr 8 +name french-mbrola-2 +gender female +pitch 140 220 +mbrola fr2 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr3 b/phonemizer/backend/espeak/mbrola-voices/mb-fr3 new file mode 100644 index 0000000..0c93a39 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr3 @@ -0,0 +1,7 @@ +language fr-fr 8 +language fr 8 +name french-mbrola-3 +gender male +pitch 82 117 +mbrola fr3 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr4 b/phonemizer/backend/espeak/mbrola-voices/mb-fr4 new file mode 100644 index 0000000..1933aea --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr4 @@ -0,0 +1,10 @@ +language fr-fr 7 +language fr 7 +name french-mbrola-4 +gender female + +dictrules 1 +pitch 140 220 +voicing 90 +mbrola fr4 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr4-en b/phonemizer/backend/espeak/mbrola-voices/mb-fr4-en new file mode 100644 index 0000000..60753f0 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr4-en @@ -0,0 +1,9 @@ +language en 10 +name en-french +gender female + +dictrules 1 +pitch 140 220 +voicing 90 +mbrola fr4 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr5 b/phonemizer/backend/espeak/mbrola-voices/mb-fr5 new file mode 100644 index 0000000..97208da --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr5 @@ -0,0 +1,7 @@ +language fr-be 6 +language fr 9 +name french-mbrola-5 +gender male +pitch 82 117 +mbrola fr5 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr6 b/phonemizer/backend/espeak/mbrola-voices/mb-fr6 new file mode 100644 index 0000000..3286da8 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr6 @@ -0,0 +1,7 @@ +language fr-fr 8 +language fr 8 +name french-mbrola-6 +gender male +pitch 82 117 +mbrola fr6 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-fr7 b/phonemizer/backend/espeak/mbrola-voices/mb-fr7 new file mode 100644 index 0000000..f72569d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-fr7 @@ -0,0 +1,6 @@ +language fr 8 +name french-mbrola-7 +gender male +pitch 82 117 +mbrola fr7 fr_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-gr1 b/phonemizer/backend/espeak/mbrola-voices/mb-gr1 new file mode 100644 index 0000000..bcf7381 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-gr1 @@ -0,0 +1,7 @@ +name greek-mbrola-1 +language el 7 +gender male + +pitch 82 117 +voicing 65 +mbrola gr1 gr1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-gr2 b/phonemizer/backend/espeak/mbrola-voices/mb-gr2 new file mode 100644 index 0000000..f67fdd6 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-gr2 @@ -0,0 +1,7 @@ +name greek-mbrola-2 +language el 2 +gender male + +pitch 82 117 +voicing 65 +mbrola gr2 gr2_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-gr2-en b/phonemizer/backend/espeak/mbrola-voices/mb-gr2-en new file mode 100644 index 0000000..c9bd20d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-gr2-en @@ -0,0 +1,7 @@ +name en-greek +language en 9 +gender male + +pitch 82 117 +voicing 65 +mbrola gr2 gr2_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-hb1 b/phonemizer/backend/espeak/mbrola-voices/mb-hb1 new file mode 100644 index 0000000..3d9ac21 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-hb1 @@ -0,0 +1,5 @@ +name hebrew-mbrola-1 +language he +gender male + +mbrola hb1 he_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-hb2 b/phonemizer/backend/espeak/mbrola-voices/mb-hb2 new file mode 100644 index 0000000..695b7c0 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-hb2 @@ -0,0 +1,5 @@ +name hebrew-mbrola-2 +language he +gender female +pitch 180 220 +mbrola hb2 he_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-hu1 b/phonemizer/backend/espeak/mbrola-voices/mb-hu1 new file mode 100644 index 0000000..195ea33 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-hu1 @@ -0,0 +1,7 @@ +name hungarian-mbrola-1 +language hu 7 +gender female + +pitch 140 220 +voicing 160 +mbrola hu1 hu1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-hu1-en b/phonemizer/backend/espeak/mbrola-voices/mb-hu1-en new file mode 100644 index 0000000..28ce375 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-hu1-en @@ -0,0 +1,7 @@ +name en-hungarian +language en 10 +gender female + +pitch 140 220 +voicing 160 +mbrola hu1 hu1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ic1 b/phonemizer/backend/espeak/mbrola-voices/mb-ic1 new file mode 100644 index 0000000..8b784f9 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ic1 @@ -0,0 +1,7 @@ +name icelandic-mbrola-1 +language is 6 +gender male + +voicing 180 +mbrola ic1 ic1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-id1 b/phonemizer/backend/espeak/mbrola-voices/mb-id1 new file mode 100644 index 0000000..aa57c31 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-id1 @@ -0,0 +1,8 @@ +name indonesian-mbrola-1 +language id 7 +gender male + +pitch 82 117 +voicing 120 +mbrola id1 id1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-in1 b/phonemizer/backend/espeak/mbrola-voices/mb-in1 new file mode 100644 index 0000000..ce0f4d9 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-in1 @@ -0,0 +1,5 @@ +name hindi-mbrola-1 +language hi 1 +gender male +mbrola in1 in_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-in2 b/phonemizer/backend/espeak/mbrola-voices/mb-in2 new file mode 100644 index 0000000..9794e2c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-in2 @@ -0,0 +1,6 @@ +name hindi-mbrola-2 +language hi 2 +gender female +pitch 140 220 +mbrola in2 in_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ir1 b/phonemizer/backend/espeak/mbrola-voices/mb-ir1 new file mode 100644 index 0000000..c47d207 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ir1 @@ -0,0 +1,22 @@ +name persian-mb-ir1 +language fa +gender male +phonemes fa +mbrola ir1 ir1_phtrans + +// "speed 82" adjust default speed of "mb-ir1" with eSpeak "fa". +speed 82 +// Please don't change this value. It's result of several tests. + +// "voicing 125" adjust output volume of "mb-ir1" with eSpeak "fa". +voicing 125 +// Please don't change this value. It's result of several tests. + +// "pitch 82 118" adjust default pitch of "mb-ir1" like other male voices. +pitch 82 118 +// Please don't change this value. The result male voice is good and natural. + +// If you want use Pinglish instead of English for reading, just delete // from start of next line. +// dictrules 1 +// "dictrules 1" read English text as Pinglish (Persian text that written with English alphabets). + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-it1 b/phonemizer/backend/espeak/mbrola-voices/mb-it1 new file mode 100644 index 0000000..a106b19 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-it1 @@ -0,0 +1,5 @@ +name italian-mbrola-1 +language it 8 +gender male +pitch 82 117 +mbrola it1 it1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-it2 b/phonemizer/backend/espeak/mbrola-voices/mb-it2 new file mode 100644 index 0000000..e2c1742 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-it2 @@ -0,0 +1,5 @@ +name italian-mbrola-2 +language it 8 +gender female +pitch 140 220 +mbrola it2 it1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-it3 b/phonemizer/backend/espeak/mbrola-voices/mb-it3 new file mode 100644 index 0000000..89f7dcd --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-it3 @@ -0,0 +1,9 @@ +name italian-mbrola-3 +language it 7 +gender male + +pitch 82 117 +voicing 65 +mbrola it3 it3_phtrans + +replace 03 i I // final unstressed "i" diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-it4 b/phonemizer/backend/espeak/mbrola-voices/mb-it4 new file mode 100644 index 0000000..cb3a6ff --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-it4 @@ -0,0 +1,9 @@ +name italian-mbrola-4 +language it 7 +gender female + +pitch 140 220 +voicing 60 +mbrola it4 it3_phtrans + +replace 03 i I // final unstressed "i" diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-jp1 b/phonemizer/backend/espeak/mbrola-voices/mb-jp1 new file mode 100644 index 0000000..f08eade --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-jp1 @@ -0,0 +1,4 @@ +name japanese-mbrola-1 +language ja 1 +gender male +mbrola jp1 jp_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-jp2 b/phonemizer/backend/espeak/mbrola-voices/mb-jp2 new file mode 100644 index 0000000..988d6fc --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-jp2 @@ -0,0 +1,6 @@ +pitch 120 260 +name japanese-mbrola-2 +language ja 2 +gender female +pitch 160 300 +mbrola jp2 jp_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-jp3 b/phonemizer/backend/espeak/mbrola-voices/mb-jp3 new file mode 100644 index 0000000..454792e --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-jp3 @@ -0,0 +1,5 @@ +name japanese-mbrola-3 +language ja 3 +gender female +pitch 160 300 +mbrola jp3 jp_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-la1 b/phonemizer/backend/espeak/mbrola-voices/mb-la1 new file mode 100644 index 0000000..7ef93a5 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-la1 @@ -0,0 +1,6 @@ +name latin-mbrola-1 +language la 7 +gender male + +pitch 82 117 +mbrola la1 la1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-lt1 b/phonemizer/backend/espeak/mbrola-voices/mb-lt1 new file mode 100644 index 0000000..f1cf4a3 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-lt1 @@ -0,0 +1,6 @@ +name lithuanian-mbrola-1 +language lt 7 +gender male + +pitch 82 117 +mbrola lt1 lt_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-lt2 b/phonemizer/backend/espeak/mbrola-voices/mb-lt2 new file mode 100644 index 0000000..234bad4 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-lt2 @@ -0,0 +1,6 @@ +name lithuanian-mbrola-2 +language lt 7 +gender male + +pitch 82 117 +mbrola lt2 lt_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ma1 b/phonemizer/backend/espeak/mbrola-voices/mb-ma1 new file mode 100644 index 0000000..fe62fbd --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ma1 @@ -0,0 +1,7 @@ +name malay-mbrola-1 +language ms 1 +gender female +pitch 140 260 +phonemes id +mbrola ma1 ma1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-mx1 b/phonemizer/backend/espeak/mbrola-voices/mb-mx1 new file mode 100644 index 0000000..99b723c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-mx1 @@ -0,0 +1,10 @@ +language es-mx 7 +language es 8 +name mexican-mbrola-1 +gender male +pitch 82 117 + +mbrola mx1 mx1_phtrans + +replace 00 T s + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-mx2 b/phonemizer/backend/espeak/mbrola-voices/mb-mx2 new file mode 100644 index 0000000..f46f0be --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-mx2 @@ -0,0 +1,10 @@ +language es-mx 7 +language es 8 +name mexican-mbrola-2 +gender male +pitch 82 117 + +mbrola mx2 mx2_phtrans + +replace 00 T s + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-nl1 b/phonemizer/backend/espeak/mbrola-voices/mb-nl1 new file mode 100644 index 0000000..3c2c6a1 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-nl1 @@ -0,0 +1,5 @@ +name dutch-mbrola-1 +language nl 9 +gender male +mbrola nl1 nl_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-nl2 b/phonemizer/backend/espeak/mbrola-voices/mb-nl2 new file mode 100644 index 0000000..273f98b --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-nl2 @@ -0,0 +1,9 @@ +language nl 7 +name dutch-mbrola-2 +gender male + +pitch 82 117 +voicing 130 + +mbrola nl2 nl_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-nl2-en b/phonemizer/backend/espeak/mbrola-voices/mb-nl2-en new file mode 100644 index 0000000..ad0ac40 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-nl2-en @@ -0,0 +1,9 @@ +language en 10 +name en-dutch +gender male + +pitch 82 117 +voicing 130 + +mbrola nl2 nl_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-nl3 b/phonemizer/backend/espeak/mbrola-voices/mb-nl3 new file mode 100644 index 0000000..390afba --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-nl3 @@ -0,0 +1,6 @@ +name dutch-mbrola-3 +language nl 9 +gender female +pitch 130 200 +mbrola nl3 nl_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-nz1 b/phonemizer/backend/espeak/mbrola-voices/mb-nz1 new file mode 100644 index 0000000..7d84ed8 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-nz1 @@ -0,0 +1,5 @@ +name maori-mbrola-1 +language mi +gender male +mbrola nz1 nz1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-pl1 b/phonemizer/backend/espeak/mbrola-voices/mb-pl1 new file mode 100644 index 0000000..cedeb46 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-pl1 @@ -0,0 +1,7 @@ +name polish-mbrola-1 +language pl 7 +gender female + +pitch 140 220 +voicing 120 +mbrola pl1 pl1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-pl1-en b/phonemizer/backend/espeak/mbrola-voices/mb-pl1-en new file mode 100644 index 0000000..9ba872a --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-pl1-en @@ -0,0 +1,6 @@ +name en-polish +language en 11 +gender female + +pitch 140 220 +mbrola pl1 pl1_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-pt1 b/phonemizer/backend/espeak/mbrola-voices/mb-pt1 new file mode 100644 index 0000000..9a8f38e --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-pt1 @@ -0,0 +1,11 @@ +language pt-pt 7 +language pt 7 +name portugal-mbrola-1 +gender female +pitch 145 240 + +dictrules 1 +voicing 70 + +mbrola pt1 pt1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ro1 b/phonemizer/backend/espeak/mbrola-voices/mb-ro1 new file mode 100644 index 0000000..14417c1 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ro1 @@ -0,0 +1,7 @@ +name romanian-mbrola-1 +language ro 7 +gender male + +pitch 82 117 +mbrola ro1 ro1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-ro1-en b/phonemizer/backend/espeak/mbrola-voices/mb-ro1-en new file mode 100644 index 0000000..f310f86 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-ro1-en @@ -0,0 +1,7 @@ +name en-romanian +language en 9 +gender male + +pitch 82 117 +mbrola ro1 ro1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-sw1 b/phonemizer/backend/espeak/mbrola-voices/mb-sw1 new file mode 100644 index 0000000..57ee32a --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-sw1 @@ -0,0 +1,9 @@ +name swedish-mbrola-1 +language sv 7 +gender male + +pitch 82 117 +voicing 120 + +mbrola sw1 sv_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-sw1-en b/phonemizer/backend/espeak/mbrola-voices/mb-sw1-en new file mode 100644 index 0000000..627af2f --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-sw1-en @@ -0,0 +1,9 @@ +name en-swedish +language en 11 +gender male + +pitch 82 117 +voicing 120 + +mbrola sw1 sv_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-sw2 b/phonemizer/backend/espeak/mbrola-voices/mb-sw2 new file mode 100644 index 0000000..55cfa0d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-sw2 @@ -0,0 +1,9 @@ +name swedish-mbrola-2 +language sv 8 +gender female + +pitch 140 220 +voicing 130 + +mbrola sw2 sv2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-sw2-en b/phonemizer/backend/espeak/mbrola-voices/mb-sw2-en new file mode 100644 index 0000000..015cc9c --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-sw2-en @@ -0,0 +1,9 @@ +name en-swedish-f +language en 10 +gender female + +pitch 140 220 +voicing 130 + +mbrola sw2 sv2_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-tl1 b/phonemizer/backend/espeak/mbrola-voices/mb-tl1 new file mode 100644 index 0000000..3f4cceb --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-tl1 @@ -0,0 +1,6 @@ +name telugu-mbrola-1 +language te +gender female +pitch 160 260 +mbrola tl1 tl1_phtrans + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-tr1 b/phonemizer/backend/espeak/mbrola-voices/mb-tr1 new file mode 100644 index 0000000..97a337d --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-tr1 @@ -0,0 +1,7 @@ +name turkish-mbrola-1 +language tr 7 +gender male + +mbrola tr1 tr1_phtrans +dictrules 1 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-tr2 b/phonemizer/backend/espeak/mbrola-voices/mb-tr2 new file mode 100644 index 0000000..1dfbf95 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-tr2 @@ -0,0 +1,10 @@ +name turkish-mbrola-1 +language tr 7 +gender female + +pitch 160 230 +voicing 170 + +mbrola tr2 tr1_phtrans +dictrules 1 + diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-us1 b/phonemizer/backend/espeak/mbrola-voices/mb-us1 new file mode 100644 index 0000000..3dd7526 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-us1 @@ -0,0 +1,12 @@ +name us-mbrola-1 +language en-us +language en 8 +gender female + +phonemes en-us +dictrules 3 6 + +stressLength 170 135 205 205 0 0 245 275 + +pitch 140 220 +mbrola us1 us_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-us2 b/phonemizer/backend/espeak/mbrola-voices/mb-us2 new file mode 100644 index 0000000..de799f0 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-us2 @@ -0,0 +1,13 @@ +name us-mbrola-2 +language en-us +language en 7 +gender male + +phonemes en-us +dictrules 3 6 + +stressLength 170 135 205 205 0 0 245 275 + +pitch 82 117 +voicing 80 +mbrola us2 us_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-us3 b/phonemizer/backend/espeak/mbrola-voices/mb-us3 new file mode 100644 index 0000000..c538b13 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-us3 @@ -0,0 +1,13 @@ +name us-mbrola-3 +language en-us +language en 8 +gender male + +phonemes en-us +dictrules 3 6 + +stressLength 170 135 205 205 0 0 245 275 + +voicing 150 +pitch 82 117 +mbrola us3 us3_phtrans diff --git a/phonemizer/backend/espeak/mbrola-voices/mb-vz1 b/phonemizer/backend/espeak/mbrola-voices/mb-vz1 new file mode 100644 index 0000000..d64a9e5 --- /dev/null +++ b/phonemizer/backend/espeak/mbrola-voices/mb-vz1 @@ -0,0 +1,11 @@ +language es-vz 7 +language es 8 +name venezuala-mbrola-1 +gender male +pitch 82 117 + +mbrola vz1 vz_phtrans + +dictrules 3 +replace 00 T s +voicing 200 diff --git a/phonemizer/backend/espeak/mbrola.py b/phonemizer/backend/espeak/mbrola.py index 5ef15c9..80fe507 100644 --- a/phonemizer/backend/espeak/mbrola.py +++ b/phonemizer/backend/espeak/mbrola.py @@ -13,15 +13,18 @@ # You should have received a copy of the GNU General Public License # along with phonemizer. If not, see . """Mbrola backend for the phonemizer""" - import pathlib +import re import shutil import sys +from dataclasses import dataclass from logging import Logger from pathlib import Path -from typing import Union, Optional, List, Dict +from typing import Union, Optional, List, Dict, Pattern, Tuple from phonemizer.backend.espeak.base import BaseEspeakBackend +from phonemizer.backend.espeak.language_switch import get_language_switch_processor, BaseLanguageSwitch, LanguageSwitch +from phonemizer.backend.espeak.words_mismatch import BaseWordsMismatch, get_words_mismatch_processor, WordMismatch from phonemizer.backend.espeak.wrapper import EspeakWrapper from phonemizer.separator import Separator @@ -106,3 +109,242 @@ def _postprocess_line(self, line: str, num: int, phonemes += separator.phone return phonemes + + +@dataclass +class Phoneme: + pho: str + stressed: bool + + +class FoldingState: + + def __init__(self, words: List[List[str]]): + pass + + @property + def current_phoneme(self) -> Phoneme: + pass + + @property + def substitute_current(self, phonemes: Tuple[str]): + pass + + @property + def is_word_start(self) -> bool: + pass + + @property + def is_word_end(self) -> bool: + pass + + +@dataclass +class FoldingRule: + mode: int + espeak_ph1: str + espeak_ph2: Optional[Union[int, str]] + mbrola_ph1: str + mbrola_ph2: Optional[str] = None + + def matches(self) -> int: # returns a matching score + pass + + +class MbrolaFolding: + COMMENTS_RE = re.compile("//.*") + + def __init__(self, path: Path, lang: str): + self.path = path + self.lang = lang + self.rules = [] + + with open(self.path) as mbrola_folding: + for line in mbrola_folding: + + if line == "volume": + continue + # removing comments + line = re.sub(self.COMMENTS_RE, "", line) + + # full-comment line or empty line + if not line: + continue + + row = line.split(" ") + control_mode = int(row[0]) + espeak_ph1 = row[1] + espeak_ph2 = None if row[2] == "NULL" else row[2] + mbrola_ph1 = row[3] + if len(row) == 4: + rule = FoldingRule(control_mode, espeak_ph1, espeak_ph2, mbrola_ph1) + elif len(row) == 5: + mbrola_ph2 = row[4] + rule = FoldingRule(control_mode, espeak_ph1, espeak_ph2, mbrola_ph1, mbrola_ph2) + + self.rules.append(rule) + + def fold(self, phonemes: List[str]) -> List[str]: + # TODO: use list of words instead of list of phonemes + # TODO: investigate stressed phonemes + # TODO: iterate over phonemes then rules to find best matching one, then use rule to fold + pass + + +@dataclass +class VoiceConfig: + name: str + languages: List[str] + mbrola_voice: str + + +class EspeakMbrolaNoSynthBackend(BaseEspeakBackend): + MBROLA_FOLDINGS_FOLDER = Path(__file__).parent / "mbrola-foldings" + MBROLA_VOICES_FOLDER = Path(__file__).parent / "mbrola-voices" + voice_config_re = re.compile("([a-z]+) (.*)") + + # pylint: disable=too-many-arguments + def __init__(self, language: str, + punctuation_marks: Optional[Union[str, Pattern]] = None, + preserve_punctuation: bool = False, + with_stress: bool = False, + language_switch: LanguageSwitch = 'keep-flags', + words_mismatch: WordMismatch = 'ignore', + logger: Optional[Logger] = None): + super().__init__( + language, punctuation_marks=punctuation_marks, + preserve_punctuation=preserve_punctuation, logger=logger) + + self._espeak.set_voice(language) + self._with_stress = with_stress + self._lang_switch: BaseLanguageSwitch = get_language_switch_processor( + language_switch, self.logger, self.language) + self._words_mismatch: BaseWordsMismatch = get_words_mismatch_processor( + words_mismatch, self.logger) + + # TODO : figure out system for voices + # - load voices from mbrola-voices/ + # - get espeak voice from config file + # - get phoneme translation rules from config file + + @staticmethod + def name(): + return 'espeak-mbrola' + + @classmethod + def _parse_voice_config(cls, path: Path) -> VoiceConfig: + config_dict = dict() + languages = [] + with open(path) as config_file: + for line in config_file: + line = line.strip() + if not line: + continue + + key, value = re.match(cls.voice_config_re, line).group(1, 2) + if key == "language": + languages.append(value.split(" ")[0]) + else: + config_dict[key] = value.strip() + languages.sort(key=lambda el: len(el), reverse=True) + + assert set(config_dict).issuperset({"mbrola", "name"}) + assert languages + + return VoiceConfig( + name=config_dict["name"], + languages=languages, + mbrola_voice=config_dict["mbrola"].split(" ")[0] + ) + + @classmethod + def list_voice_configs(cls) -> List[VoiceConfig]: + configs = [] + for config_filepath in cls.MBROLA_VOICES_FOLDER.iterdir(): + if not config_filepath.is_file(): + continue + configs.append(cls._parse_voice_config(config_filepath)) + return configs + + @classmethod + def supported_languages(cls): + espeak = { + voice.language: voice.name + for voice in EspeakWrapper().available_voices()} + + def _phonemize_aux(self, text, offset, separator, strip): + output = [] + lang_switches = [] + for num, line in enumerate(text, start=1): + line = self._espeak.text_to_phonemes(line, tie=False, ipa=False) + line, has_switch = self._postprocess_line( + line, num, separator, strip) + output.append(line) + if has_switch: + lang_switches.append(num + offset) + + return output, lang_switches + + def _process_stress(self, word): + # remove the stresses on phonemes + return re.sub(self._ESPEAK_STRESS_RE, '', word) + + def _postprocess_line(self, line: str, num: int, + separator: Separator, strip: bool) -> Tuple[str, bool]: + # espeak can split an utterance into several lines because + # of punctuation, here we merge the lines into a single one + line = line.strip().replace('\n', ' ').replace(' ', ' ') + + # due to a bug in espeak-ng, some additional separators can be + # added at the end of a word. Here a quick fix to solve that + # issue. See https://github.com/espeak-ng/espeak-ng/issues/694 + line = re.sub(r'_+', '_', line) + line = re.sub(r'_ ', ' ', line) + + line, has_switch = self._lang_switch.process(line) + if not line: + return '', has_switch + + out_line = '' + for word in line.split(' '): + word = self._process_stress(word.strip()) + if not strip and self._tie is None: + word += '_' + word = self._process_tie(word, separator) + out_line += word + separator.word + + if strip and separator.word: + # erase the last word separator from the line + out_line = out_line[:-len(separator.word)] + + return out_line, has_switch + + def _phonemize_preprocess(self, text: List[str]) -> Tuple[Union[str, List[str]], List]: + text, punctuation_marks = super()._phonemize_preprocess(text) + self._words_mismatch.count_text(text) + return text, punctuation_marks + + def _phonemize_postprocess(self, phonemized, punctuation_marks, separator: Separator, strip: bool): + text = phonemized[0] + switches = phonemized[1] + + self._words_mismatch.count_phonemized(text) + self._lang_switch.warning(switches) + + phonemized = super()._phonemize_postprocess(text, punctuation_marks, separator, strip) + return self._words_mismatch.process(phonemized) + + @staticmethod + def _flatten(phonemized) -> List: + """Specialization of BaseBackend._flatten for the espeak backend + + From [([1, 2], ['a', 'b']), ([3],), ([4], ['c'])] to [[1, 2, 3, 4], + ['a', 'b', 'c']]. + + """ + flattened = [] + for i in range(len(phonemized[0])): + flattened.append( + list(itertools.chain( + c for chunk in phonemized for c in chunk[i]))) + return flattened diff --git a/phonemizer/backend/espeak/wrapper.py b/phonemizer/backend/espeak/wrapper.py index 84a79f5..bfb4110 100644 --- a/phonemizer/backend/espeak/wrapper.py +++ b/phonemizer/backend/espeak/wrapper.py @@ -265,7 +265,7 @@ def _get_voice(self): return EspeakVoice.from_ctypes(voice) return None # pragma: nocover - def text_to_phonemes(self, text: str, tie: bool = False) -> str: + def text_to_phonemes(self, text: str, tie: bool = False, ipa: bool = True) -> str: """Translates a text into phonemes, must call set_voice() first. This method is used by the Espeak backend. Wrapper on the @@ -302,12 +302,13 @@ def text_to_phonemes(self, text: str, tie: bool = False) -> str: # output phonemes in IPA and separated by _, or with a tie character if # required. See comments for the function espeak_TextToPhonemes in # speak_lib.h of the espeak sources for details. + ipa_flag = 0x02 if ipa else 0x00 if self.version <= (1, 48, 3): # pragma: nocover - phonemes_mode = 0x03 | 0x01 << 4 + phonemes_mode = 0x03 | 0x01 << 4 # TODO for ipa elif tie: - phonemes_mode = 0x02 | 0x01 << 7 | ord('͡') << 8 + phonemes_mode = ipa_flag | 0x01 << 7 | ord('͡') << 8 else: - phonemes_mode = ord('_') << 8 | 0x02 + phonemes_mode = ord('_') << 8 | ipa_flag result = [] while text_ptr.contents.value is not None: