| @@ -102,16 +102,16 @@ _9 n'i | |||
| _10 t'i | |||
| _11 'Elv@ | |||
| _12 t'Vl | |||
| _13 tR'&#d@-n // PB & changed to &# | |||
| _13 tR'?&#d@-n // PB & changed to &# | |||
| _14 fj'ord@-n | |||
| _15 f'emt@-n | |||
| _15 f'Emd@-n | |||
| _16 s'ajsd@-n | |||
| _17 s'Wd@-n // PP Y changed to W | |||
| _18 '&d@-n // PB a changed to & | |||
| _18 '?&d@-n // PB a changed to & | |||
| _19 n'ed@-n | |||
| _2X t'y:w | |||
| _2X t'y:?u | |||
| _3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] | |||
| _4X f'W:V //PB [f'W:*3] changed to [ f'W:V] | |||
| _4X f'?W:_|V //PB [f'W:*3] changed to [ f'?W:V] | |||
| _5X h&l't*Es // PB [a] changed to [&], e changed to E | |||
| _6X t*'Es // PB changed from e to E | |||
| _7X h&lfj'&rs // PV a changed to & | |||
| @@ -187,7 +187,7 @@ fra $u+ // from | |||
| ved $u+ // at | |||
| om $u+ $brk // about, within | |||
| med $u+ // with | |||
| af & // PB changed from [a?] to [&] - sound too short in a sentence | |||
| af &_| // PB changed from [a?] to [&] - sound too short in a sentence | |||
| // Also removed $u from 'af' and other words. They disappeared. | |||
| ad &: // PB added 'ad' | |||
| ad &D $atend $sentence // PB "Det må ikke skille os ad." | |||
| @@ -221,10 +221,10 @@ hvis ves $u+ // PB - whose | |||
| // possessive pronouns | |||
| min min $u | |||
| mit mit $u | |||
| mine m'in@ | |||
| mine m'in3 | |||
| din d'in $u+ | |||
| dit d'it $u | |||
| dine d'ine | |||
| dine d'in3 | |||
| deres dE:Vs $u | |||
| hans $u+ | |||
| hendes $u+ | |||
| @@ -288,7 +288,6 @@ night _^_EN | |||
| the _^_EN | |||
| skinhead _^_EN | |||
| skinheads _^_EN | |||
| street _^_EN | |||
| boy _^_EN | |||
| square _^_EN | |||
| apple _^_EN | |||
| @@ -11125,18 +11124,18 @@ tournure $alt | |||
| // exceptions | |||
| alene &l'en@ // alone | |||
| egen a:j@n | |||
| egen _|aj@-n | |||
| mc mak' $capital // PB McDonald | |||
| egne a:in@ | |||
| egne ajn@- | |||
| enter entV | |||
| ide id'e // idea | |||
| idé id'e // idea | |||
| tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] | |||
| ny ny // new | |||
| også Vs@ // also | |||
| også Vs@- // also | |||
| idet id'e // in so far as | |||
| (rub og stub) R'Ob||V||sd'Ob | |||
| tre tr'e // the number 3 | |||
| tre tr'E // the number 3 | |||
| rejicere rejis'eV // PB should not be pronounced [raje] | |||
| rejicerer rejis'eV // PB | |||
| rejiceres rejis'eVs // PB | |||
| @@ -11151,6 +11150,7 @@ konfirmanderne kVnferm'&nd3-n@ // PB | |||
| konfirmandernes kVnferm'&nd3-n@s // PB | |||
| giv g'i // PB the v shouldn't be pronounced | |||
| giver gir // PB the v shouldn't be pronounced | |||
| opgiver Vpgir // PB | |||
| jaloux sj&'lu // PB jaloux | |||
| aficionado afisjo'na:do // PB | |||
| breakdance brEig'da:ns // PB breakdance | |||
| @@ -11184,7 +11184,7 @@ shampu Sjambo // PB Danish pronunciation - oo has been replaced b | |||
| wien v'i:n // PB Wien - the town of Vienna | |||
| calais kal'E // PB Calais - town in France | |||
| date dejt // PB date - stævnemøde | |||
| siger sir // PB silent d | |||
| //siger sir // PB silent d | |||
| (tids nok) tis||n'Vk // PB silent d | |||
| skateboardet sk'eitbo@d3D // PB | |||
| (hole in one) h'oulinw,0n // PB English golf expression used in Danish | |||
| @@ -11253,10 +11253,15 @@ ikes ajks // PB | |||
| (deres kvarter) dE:Vs||kvA'ter // PB | |||
| (det kvarter) de||kvA'ter // PB | |||
| (i kvarter) i||kv'A:dV | |||
| (at have) &||h&: // PB the verb 'have', not the noun 'have' = garden | |||
| (vil have) vel||h'&: // PB | |||
| (du have) du||h&: // PB | |||
| (må have) m'O:||h&: // PB | |||
| (at have) &||h& // PB the verb 'have', not the noun 'have' = garden | |||
| (vil have) vel||h'& // PB | |||
| (ville have) v?il3||h'& // PB | |||
| (du have) du||h& // PB | |||
| (må have) mO:||h& // PB | |||
| (skal have) sk?&||h& // PB | |||
| (helst have) h'Elst||h& | |||
| (gerne have) g'Ern3||h& | |||
| (kan have) k?&n||h& // PB | |||
| (ikke have) ege||h& // PB | |||
| // PB 'hav' = ocean - 'hav' = have (a nice day) | |||
| (et hav) ed||hAu | |||
| @@ -3678,6 +3678,7 @@ Disney dIzni | |||
| Dolce d0ltSeI | |||
| Dvorak d@-vo@Zak | |||
| Emory Em3ri | |||
| Fleming flEmIN | |||
| Folger foUldZ3 | |||
| Genghis dZENgIs | |||
| Gibson gIbs@n | |||
| @@ -730,7 +730,6 @@ concerto $alt2 $noun | |||
| concordo $alt | |||
| conforto $alt $verb | |||
| consolo $alt2 $noun | |||
| contivermos $alt | |||
| controle $alt2 $noun | |||
| controlo $alt2 $noun | |||
| coreia $alt | |||
| @@ -741,12 +740,8 @@ corto $alt | |||
| corveta $alt2 | |||
| corvos $alt | |||
| coto $alt2 | |||
| couberdes $alt | |||
| coubermos $alt | |||
| cratera $alt | |||
| crede $alt2 | |||
| der $alt | |||
| derdes $alt | |||
| desapego $alt2 $noun | |||
| descabelo $alt | |||
| descordo $alt | |||
| @@ -779,9 +774,6 @@ envelope $alt | |||
| envolto $alt2 | |||
| enxerto $alt2 $noun | |||
| epopeia $alt | |||
| erga $alt2 | |||
| ergam $alt2 | |||
| ergo $alt2 | |||
| eritreia $alt | |||
| erro $alt2 $noun | |||
| erros $alt2 | |||
| @@ -799,8 +791,6 @@ espiroqueta $alt2 | |||
| espoleta $alt2 | |||
| esposa $alt2 | |||
| esqueleto $alt2 | |||
| estiverdes $alt | |||
| estivermos $alt | |||
| estrela $alt2 | |||
| estrofe $alt | |||
| estorno $alt $verb | |||
| @@ -818,8 +808,6 @@ fera $alt | |||
| ferozes $alt | |||
| fezes $alt | |||
| ?1 fixe fiSy | |||
| fizerdes $alt | |||
| fizermos $alt | |||
| foda $alt2 $verb | |||
| folheto $alt2 | |||
| folga $alt | |||
| @@ -857,8 +845,6 @@ grozo $alt $verb | |||
| hemorroida $alt | |||
| hoje $alt2 | |||
| horrores $alt2 | |||
| houverdes $alt | |||
| houvermos $alt | |||
| ideia $alt | |||
| insonoro $alt | |||
| interesse $alt2 $noun | |||
| @@ -869,9 +855,6 @@ lebre $alt | |||
| lopes $alt | |||
| maior $alt | |||
| maleta $alt2 | |||
| mantiverdes $alt | |||
| mantiveres $alt | |||
| mantivermos $alt | |||
| marcelo $alt | |||
| marmelo $alt | |||
| marreta $alt2 | |||
| @@ -892,7 +875,6 @@ minueto $alt2 | |||
| miolo $alt2 | |||
| miolos $alt | |||
| moeda $alt | |||
| modos $alt | |||
| molho $alt2 $noun | |||
| monera $alt | |||
| morcego $alt2 | |||
| @@ -913,15 +895,13 @@ naquele $alt2 $nounf | |||
| nervo $alt2 | |||
| novos $alt | |||
| obstetra $alt | |||
| obtivera $alt | |||
| obtivermos $alt | |||
| odisseia $alt | |||
| onu $1 | |||
| olho $alt2 $noun | |||
| osso $alt2 | |||
| ossos $alt | |||
| opereta $alt2 | |||
| ordens $alt | |||
| osso $alt2 | |||
| ossos $alt | |||
| ostra $alt2 | |||
| ovos $alt | |||
| pachorra $alt2 | |||
| @@ -937,8 +917,6 @@ pastora $alt2 | |||
| pedra $alt | |||
| pelego $alt2 | |||
| pelo $alt $verb | |||
| pesque $alt | |||
| pesquem $alt | |||
| peso $alt $verb | |||
| piloto $alt2 $noun | |||
| pintora $alt2 | |||
| @@ -957,15 +935,9 @@ poxa p'oS& | |||
| preço $alt2 | |||
| primavera $alt | |||
| provo $alt | |||
| puder $alt | |||
| puderdes $alt | |||
| pudermos $alt | |||
| puserdes $alt | |||
| quarteto $alt2 | |||
| queda $alt | |||
| quinteto $alt2 | |||
| quiserdes $alt | |||
| quisermos $alt | |||
| recomeço $alt2 $noun | |||
| recordo $alt | |||
| recorto $alt | |||
| @@ -1006,8 +978,6 @@ sopro $alt2 $noun | |||
| soro $alt2 | |||
| sorvete $alt2 | |||
| sossego $alt2 $noun | |||
| souberdes $alt | |||
| soubermos $alt | |||
| suborno $alt $verb | |||
| sufoco $alt2 $noun | |||
| sufocos $alt2 | |||
| @@ -1017,8 +987,6 @@ tapete $alt2 | |||
| tempero $alt2 $noun | |||
| teta $alt2 | |||
| tetra $alt | |||
| tiverdes $alt | |||
| tivermos $alt | |||
| tocha $alt | |||
| toga $alt | |||
| topo $alt $verb | |||
| @@ -1039,7 +1007,6 @@ valeta $alt2 | |||
| vanessa $alt2 | |||
| velozes $alt | |||
| verme $alt | |||
| vierem $alt | |||
| violeta $alt2 | |||
| violoncelo $alt | |||
| voga $alt | |||
| @@ -19,8 +19,8 @@ | |||
| .L02 e em | |||
| .L03 a am o | |||
| .L04 a am e em o ue uem | |||
| .L05 r ra ram re rem rdes | |||
| .L06 ra ram ste re rem | |||
| .L05 r ra ram re rem rde rmo | |||
| .L06 ra ram ste re rem rmo | |||
| .L07 sse ssem ste | |||
| @@ -345,13 +345,18 @@ | |||
| sf) e (ra_ E // esfera, biosfera | |||
| //sort | |||
| _d) e (L05_ E | |||
| _vi) e (L05_ E | |||
| fiz) e (L05_ E | |||
| pus) e (L05_ E / com- im- de- | |||
| tiv) e (L05_ E // es- | |||
| _com) e (L05_ e | |||
| _pud) e (L05_ E | |||
| _coub) e (L05_ E | |||
| _exag) e (L05_ E | |||
| _houv) e (L05_ E | |||
| _perd) e (L05_ e | |||
| _quis) e (L05_ E | |||
| _soub) e (L05_ E | |||
| _rend) e (L06_ e | |||
| _vend) e (L06_ e | |||
| @@ -369,6 +374,7 @@ respond) e (L06_ e // cor- | |||
| _tem) e (L07_ e | |||
| colh) e (L07_ e // & es- | |||
| corr) e (L07_ e // per- con- in- so- dis- | |||
| nasc) e (L07_ e / re- | |||
| torc) e (L07_ e // con- | |||
| venc) e (L07_ e // con- | |||
| vert) e (L07_ e // in- re- con- | |||
| @@ -384,11 +390,14 @@ respond) e (L06_ e // cor- | |||
| _aborrec) e (L07_ e | |||
| _adoec) e (L07_ e | |||
| _adormec) e (L07_ e | |||
| _agradec) e (L07_ e | |||
| _amanhec) e (L07_ e | |||
| _anoitec) e (L07_ e | |||
| _arrepend) e (L07_ e | |||
| _cresc) e (L07_ e | |||
| _defend) e (L07_ e | |||
| _depend) e (L07_ e | |||
| _emagrec) e (L07_ e | |||
| _enlouquec) e (L07_ e | |||
| _entristec) e (L07_ e | |||
| _envaidec) e (L07_ e | |||
| @@ -416,14 +425,13 @@ respond) e (L07_ e // cor- | |||
| _p) e (quL02_ E | |||
| _s) e (quL02_ E | |||
| l) e (que_ E | |||
| _sug) e (rL02_ E | |||
| _imp) e (rL03_ E | |||
| _sev) e (rL03_ E | |||
| _reit) e (rL03_ E | |||
| _sinc) e (rL03_ E | |||
| _g) e (rL04_ E | |||
| g) e (rL04_ E / su- refri- | |||
| qu) e (rL04_ E / re- | |||
| _op) e (rL04_ E | |||
| _qu) e (rL04_ E | |||
| _alt) e (rL04_ E | |||
| _sup) e (rL04_ E | |||
| _tol) e (rL04_ E | |||
| @@ -434,6 +442,7 @@ respond) e (L07_ e // cor- | |||
| _p) e (rdL02_ E | |||
| _l) e (rdL03_ E | |||
| _h) e (rdL04_ E | |||
| _) e (rgL03_ e | |||
| _) e (rguL02_ E | |||
| _alb) e (rguL02_ E | |||
| _enx) e (rguL02_ E | |||
| @@ -445,6 +454,7 @@ respond) e (L07_ e // cor- | |||
| _cr) e (scL02_ E | |||
| _p) e (scL03_ E | |||
| _m) e (sclL04 E | |||
| _p) e (squL02_ E | |||
| _l) e (ssL02_ e | |||
| _esp) e (ssL03_ e | |||
| _c) e (stL03_ e | |||
| @@ -464,6 +474,7 @@ _obsol) e (tL03_ e | |||
| _embel) e (zL04_ E | |||
| _acont) e (çL01_ e | |||
| _arref) e (çL01_ e | |||
| _emagr) e (çL03 | |||
| par) e (çL03_ e // a- re- com- rea- desa- | |||
| _ado) e (çL03_ e | |||
| _aqu) e (çL03_ e | |||
| @@ -478,6 +489,7 @@ _arref) e (çL01_ e | |||
| _ofer) e (çL03_ e | |||
| abast) e (çL03_ e // re- | |||
| _aborr) e (çL03_ e | |||
| _agrad) e (çL03_ e | |||
| _amanh) e (çL03_ e | |||
| _anoit) e (çL03_ e | |||
| _enfraqu) e (çL03_ e | |||
| @@ -803,6 +815,7 @@ _desabr) o (chL04_ O | |||
| _c) o (pL03_ O | |||
| _ens) o (pL04_ O | |||
| _s) o (prL04_ O | |||
| _) o (ptL04_ O | |||
| _enf) o (rquL02_ O | |||
| c) o (rrL01_ o // escorra, incorra, corra, recorra | |||
| _m) o (rrL01_ o | |||
| @@ -1095,4 +1108,3 @@ _desabr) o (chL04_ O | |||
| __) - (_D m'enUs | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| @@ -4,6 +4,8 @@ gender male | |||
| words 1 | |||
| pitch 80 118 | |||
| dict_min 100000 | |||
| //for some dialects | |||
| //[en]: replace ng with n | |||
| @@ -12,3 +12,4 @@ gender male | |||
| dictrules 1 | |||
| words 1 | |||
| dict_min 10000 | |||
| @@ -4,3 +4,4 @@ gender male | |||
| replace 03 a a# | |||
| dict_min 20000 | |||
| @@ -2,22 +2,72 @@ | |||
| phoneme @ | |||
| vowel starttype #@ endtype #@ | |||
| unstressed | |||
| length 110 | |||
| length 60 | |||
| FMT(vowel/@_3) | |||
| endphoneme | |||
| phoneme @- // very short schwa | |||
| vowel starttype #@ endtype #@ | |||
| unstressed nonsyllabic | |||
| ipa ə | |||
| IF nextPhW(*) OR nextPhW(r) THEN | |||
| ipa NULL // @-* is used to make 'r' | |||
| ENDIF | |||
| length 40 | |||
| FMT(vowel/@-) | |||
| endphoneme | |||
| // ToDo: change [@] to [a#] if adjacent to [r] or [R] | |||
| phoneme 3 | |||
| vowel starttype #a endtype #a | |||
| unstressed | |||
| length 110 | |||
| length 40 | |||
| FMT(vowel/a#_3) | |||
| endphoneme | |||
| // PB sort of schwa [ɐ] (0250+032F) | |||
| // "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d] | |||
| phoneme 3- // used for 'r' after a vowel (to create a diphthong) | |||
| liquid | |||
| lengthmod 7 | |||
| ipa ɐ̯ | |||
| FMT(r/a_) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 150 | |||
| IfNextVowelAppend(;) | |||
| // IfNextVowelAppend(;) | |||
| IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // PB "tie", "stige", "krige" vowel + vowel: extra length | |||
| // What is causing this very short [i] in words with final [@-]? | |||
| // NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n] | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN | |||
| length 240 | |||
| ENDIF | |||
| // "siden" | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "lise" | |||
| IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| // PB "Bishop" | |||
| IF nextPhW(S) AND next2PhW(V) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "pjækkeri", "røveri" | |||
| IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "vilje" | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 90 | |||
| ENDIF | |||
| FMT(vowel/i_4) | |||
| endphoneme | |||
| @@ -25,7 +75,7 @@ endphoneme | |||
| // sviret vs. svirret | |||
| phoneme ?i | |||
| vowel starttype #i endtype #i | |||
| length 95 | |||
| length 90 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/i_4) | |||
| endphoneme | |||
| @@ -41,6 +91,42 @@ endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "delte", "mante", "evig" [evi] | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "prinsen" - TEST | |||
| IF nextPhW(n) AND next2PhW(s) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "slesk", "sleske" short vowel | |||
| IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN | |||
| length 90 | |||
| ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN | |||
| length 90 | |||
| // "skriften" - very broad: short before 2 consonants | |||
| ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN | |||
| length 90 | |||
| ENDIF | |||
| // PB "ring", "ringe" | |||
| IF nextPhW(N) THEN | |||
| length 90 | |||
| ENDIF | |||
| // PB "enig", "enige", "evig" | |||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "labyrinter" , "labyrinten" - short followed by 2 consonants | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 60 | |||
| ENDIF | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| @@ -48,13 +134,44 @@ endphoneme | |||
| // "skille" vs. "skele", "pille" vs. "pile" | |||
| phoneme ?e | |||
| vowel starttype #e endtype #e | |||
| length 95 | |||
| length 90 | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // example? | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 50 | |||
| ENDIF | |||
| // "værelse", "breve" | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "fest", "feste" short vowel | |||
| IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN | |||
| length 90 | |||
| ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN | |||
| length 90 | |||
| // PB knægten | |||
| ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN | |||
| length 90 | |||
| // "femten", "tænker" - very broad: short before 2 consonants | |||
| ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN | |||
| length 90 | |||
| // PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li] | |||
| ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN | |||
| length 130 | |||
| ENDIF | |||
| // "ære", "kærester", "ærefrygt" - longer E | |||
| IF nextPhW(V) THEN | |||
| length 180 | |||
| ENDIF | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| @@ -62,21 +179,57 @@ endphoneme | |||
| // "læsse" vs. "læse" | |||
| phoneme ?E | |||
| vowel starttype #e endtype #e | |||
| length 95 | |||
| length 90 | |||
| // PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ] | |||
| // Changed now [f'?E3-V] but it won't do any harm | |||
| IF nextPhW(V) THEN | |||
| length 120 | |||
| ENDIF | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| phoneme & | |||
| vowel starttype #e endtype #e | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // PB "sable", "sabler", "anede", "David" | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "stadig" [st&Di] | |||
| IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||
| length 180 | |||
| // "stadigt" [st&Dit] | |||
| ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN | |||
| length 180 | |||
| // "latin" [l&t'in] | |||
| ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "ae", "aer", "dagen" vowel + vowel: extra length | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 240 | |||
| ENDIF | |||
| // "Alfie", "alfer" - short before 2 consonants | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "Omaha" | |||
| IF thisPh(isWordEnd) THEN | |||
| length 90 | |||
| ENDIF | |||
| FMT(vowel/ee_2) | |||
| endphoneme | |||
| // PB Experimental glottal a | |||
| // e.g. the last a in "staldkarl" | |||
| // "sale" vs. "sal" | |||
| phoneme ?& | |||
| vowel starttype #e endtype #e | |||
| length 95 | |||
| length 90 | |||
| FMT(vowel/ee_2) | |||
| endphoneme | |||
| @@ -84,44 +237,150 @@ endphoneme | |||
| phoneme &# | |||
| vowel starttype #e endtype #e | |||
| length 120 | |||
| IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/&) | |||
| endphoneme | |||
| // PB short &# | |||
| // "revl" vs. "tremme" | |||
| phoneme ?&# | |||
| vowel starttype #e endtype #e | |||
| length 90 | |||
| FMT(vowel/&) | |||
| endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/a_2) | |||
| endphoneme | |||
| // PB short (glottal) a | |||
| // "bragt" | |||
| phoneme ?a | |||
| vowel starttype #a endtype #a | |||
| length 90 | |||
| FMT(vowel/a_2) | |||
| endphoneme | |||
| phoneme A | |||
| vowel starttype #a endtype #a | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "far", "bastard" - a bit longer followed by [r] | |||
| IF nextPhW(r) THEN | |||
| length 120 | |||
| ENDIF | |||
| FMT(vowel/a_3) | |||
| endphoneme | |||
| // PB glottal a | |||
| // "drab" vs. "drabelig" | |||
| phoneme ?A | |||
| vowel starttype #a endtype #a | |||
| length 90 | |||
| // "straffeattest", "straffe" - a bit longer after R | |||
| IF prevPhW(R) AND nextPhW(isNotVowel) THEN | |||
| length 120 | |||
| ENDIF | |||
| FMT(vowel/a_3) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 150 | |||
| // Short vowel followed by consonant and NOT consonant + 3 or V or @ | |||
| // "blus" vs. "bluse" and "bluser" | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // "hue", "suge", "uge" | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| // extra length followed by 3 or V or @ | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 240 | |||
| ENDIF | |||
| // "umulig" | |||
| IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||
| length 180 | |||
| ENDIF | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| // PB glottal u | |||
| // "gud" vs. "guden" - [guD] [g?D@n] | |||
| // "tude" vs. "tuden" - [tuD3] [t?uD@n] | |||
| phoneme ?u | |||
| vowel starttype #u endtype #u | |||
| length 95 | |||
| length 90 | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // "tro" | |||
| IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "modig" - long vowel after consonant + [i] | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/o_2) | |||
| endphoneme | |||
| // PB Short o | |||
| // "patron" vs. "kone" | |||
| phoneme ?o | |||
| vowel starttype #o endtype #o | |||
| length 95 | |||
| FMT(vowel/o_2) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // PB "gået" | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "rådig" | |||
| IF nextVowel(i) AND nextVowel(isFinalVowel) THEN | |||
| length 180 | |||
| ENDIF | |||
| FMT(vowel/o_5) | |||
| endphoneme | |||
| @@ -129,46 +388,151 @@ endphoneme | |||
| // "toget" vs. "tåget" | |||
| phoneme ?O | |||
| vowel starttype #o endtype #o | |||
| length 95 | |||
| length 90 | |||
| FMT(vowel/o_5) | |||
| endphoneme | |||
| phoneme V | |||
| vowel starttype #@ endtype #@ | |||
| length 150 | |||
| // "sport" [spV:t] | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| // PB short V in "holder", "solder" | |||
| IF nextPhW(isNotVowel) AND next2Ph(V) THEN | |||
| length 90 | |||
| ENDIF | |||
| // PB "snorke", "snorker", årlig | |||
| IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN | |||
| length 180 | |||
| ENDIF | |||
| // "sove" [sVw3] - longer followed by w + 3 | |||
| IF nextPhW(w) AND next2PhW(3) THEN | |||
| length 220 | |||
| ENDIF | |||
| FMT(vowel/V_4) | |||
| endphoneme | |||
| // PB Glottal (short) å | |||
| // "forstår" vs. "kåre" | |||
| phoneme ?V | |||
| vowel starttype #@ endtype #@ | |||
| length 100 | |||
| FMT(vowel/V_4) | |||
| endphoneme | |||
| phoneme 0 | |||
| vowel starttype #o endtype #o | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/oo_2) | |||
| endphoneme | |||
| // ?B short 0 "sukker" | |||
| phoneme ?0 | |||
| vowel starttype #o endtype #o | |||
| length 90 | |||
| FMT(vowel/oo_2) | |||
| endphoneme | |||
| phoneme y | |||
| vowel starttype #i endtype #i | |||
| // experiment: changed to short from 150 | |||
| length 150 | |||
| // Short vowel followed by consonant and NOT consonant + 3 or V | |||
| // "lyd" vs. "lyde" and "lyder" | |||
| IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // "syg" [sy] | |||
| IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "skyd" | |||
| IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "dydig" [dyDi] | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN | |||
| length 220 | |||
| ENDIF | |||
| // PB "kryster" - short y | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 80 | |||
| ENDIF | |||
| // PB "gryden" | |||
| FMT(vowel/y) | |||
| endphoneme | |||
| // PB glottal y | |||
| // PB Short y | |||
| // "kylling" vs. "kyle", "krybbe" vs. "krybe" | |||
| phoneme ?y | |||
| vowel starttype #i endtype #i | |||
| length 95 | |||
| length 70 | |||
| FMT(vowel/y) | |||
| endphoneme | |||
| phoneme Y | |||
| vowel starttype #i endtype #i | |||
| length 150 | |||
| IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/yy) | |||
| endphoneme | |||
| phoneme W | |||
| vowel starttype #@ endtype #@ | |||
| length 150 | |||
| length 160 | |||
| // Shorter vowel when followed by consonant | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // "kløe" vowel + vowel: extra length | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
| length 220 | |||
| ENDIF | |||
| // "klø" short W when word ends with W | |||
| IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
| length 90 | |||
| ENDIF | |||
| // røde" W + 1 consonant + 3 or W or @ | |||
| IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN | |||
| length 160 | |||
| ENDIF | |||
| // PB "nødig", "nødigt", "kølige" | |||
| IF nextVowel(i) THEN | |||
| length 160 | |||
| ENDIF | |||
| // "møve" [mWw@-] | |||
| IF nextPhW(w) AND nextVowel(@-) THEN | |||
| length 160 | |||
| ENDIF | |||
| // "børnebog" | |||
| IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/oe) | |||
| endphoneme | |||
| @@ -176,7 +540,7 @@ endphoneme | |||
| // "prøv" vs. "prøve" | |||
| phoneme ?W | |||
| vowel starttype #@ endtype #@ | |||
| length 80 | |||
| length 95 | |||
| FMT(vowel/oe) | |||
| endphoneme | |||
| @@ -184,12 +548,38 @@ endphoneme | |||
| phoneme W# | |||
| vowel starttype #@ endtype #@ | |||
| length 150 | |||
| IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/V) | |||
| endphoneme | |||
| // PB short W# | |||
| // "rømme" | |||
| phoneme ?W# | |||
| vowel starttype #@ endtype #@ | |||
| length 90 | |||
| FMT(vowel/V) | |||
| endphoneme | |||
| phoneme aI | |||
| vowel starttype #a endtype #i | |||
| length 250 | |||
| length 300 | |||
| IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 150 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
| length 300 | |||
| ENDIF | |||
| // PB "drej" vs. "dreje" | |||
| IF thisPh(isWordEnd) THEN | |||
| length 140 | |||
| ENDIF | |||
| FMT(vdiph/ai) | |||
| endphoneme | |||
| @@ -209,25 +599,24 @@ phoneme v // approximant, not fricative | |||
| voicingswitch f | |||
| endphoneme | |||
| // PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ] | |||
| phoneme r // used for 'r' after a vowel (to create a diphthong) | |||
| liquid | |||
| lengthmod 7 | |||
| IF nextPhW(isVowel) THEN | |||
| ipa ɐ̯ | |||
| IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN | |||
| ChangePhoneme(R) | |||
| ENDIF | |||
| FMT(r/a_) | |||
| endphoneme | |||
| phoneme R | |||
| lengthmod 7 | |||
| lengthmod 6 | |||
| liquid | |||
| ipa ʁ | |||
| FMT(r/aa) | |||
| endphoneme | |||
| // don't weaken consonants at end of word or before a stop | |||
| phoneme s | |||
| @@ -243,11 +632,10 @@ phoneme s | |||
| WAV(ufric/s) | |||
| endphoneme | |||
| phoneme p | |||
| vls blb stop | |||
| voicingswitch b | |||
| lengthmod 2 | |||
| lengthmod 7 | |||
| Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
| Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||
| @@ -265,12 +653,10 @@ phoneme p | |||
| WAV(ustop/p) | |||
| endphoneme | |||
| phoneme t | |||
| vls alv stop | |||
| voicingswitch d | |||
| lengthmod 2 | |||
| lengthmod 7 | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| @@ -280,3 +666,28 @@ phoneme t | |||
| WAV(ustop/t, 90) | |||
| endphoneme | |||
| phoneme j | |||
| liquid palatal | |||
| lengthmod 7 | |||
| IF nextPhW(isVowel) THEN | |||
| NextVowelStarts | |||
| VowelStart(j/j@) | |||
| VowelStart(j/ja) | |||
| VowelStart(j/je,-60) | |||
| VowelStart(j/ji) | |||
| VowelStart(j/jo) | |||
| VowelStart(j/ju) | |||
| EndSwitch | |||
| Vowelout len=70 | |||
| VowelEnding(j/xj, -30) | |||
| IF prevPh(isPause) THEN | |||
| FMT(j/_j) | |||
| ENDIF | |||
| ELSE | |||
| // no vowel follows | |||
| Vowelout len=70 | |||
| FMT(j/j_) | |||
| ENDIF | |||
| endphoneme | |||
| @@ -35,7 +35,7 @@ | |||
| #define mkdir(p1,p2) mkdir(p1) | |||
| #define PATHSEP '\\' | |||
| #define USE_PORTAUDIO | |||
| //#define USE_PORTAUDIO | |||
| //#define USE_NANOSLEEP | |||
| #define NO_VARIADIC_MACROS | |||
| #define __cdecl | |||
| @@ -61,7 +61,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
| #define N_PATH_HOME 120 | |||
| #define N_PATH_HOME 230 | |||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
| extern void strncpy0(char *to,const char *from, int size); | |||
| @@ -35,7 +35,7 @@ | |||
| #define mkdir(p1,p2) mkdir(p1) | |||
| #define PATHSEP '\\' | |||
| #define USE_PORTAUDIO | |||
| //#define USE_PORTAUDIO | |||
| //#define USE_NANOSLEEP | |||
| #define NO_VARIADIC_MACROS | |||
| #define __cdecl | |||
| @@ -61,7 +61,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
| #define N_PATH_HOME 120 | |||
| #define N_PATH_HOME 230 | |||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
| extern void strncpy0(char *to,const char *from, int size); | |||
| @@ -2,7 +2,7 @@ | |||
| [Setup] | |||
| AppName=eSpeak | |||
| AppVerName=eSpeak version 1.46.31 | |||
| AppVerName=eSpeak version 1.46.42 | |||
| AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
| WindowVisible=yes | |||
| @@ -18,6 +18,11 @@ Name: "{group}\TTSApp"; Filename: "{app}\TTSApp.exe"; WorkingDir: "{app}" | |||
| [InstallDelete] | |||
| Type: files; Name: "{app}\espeak.dll" | |||
| Type: files; Name: "{app}\espeak-data\voices\*" | |||
| Type: filesandordirs; Name: "{app}\espeak-data\voices\en" | |||
| Type: filesandordirs; Name: "{app}\espeak-data\voices\asia" | |||
| Type: filesandordirs; Name: "{app}\espeak-data\voices\europe" | |||
| Type: filesandordirs; Name: "{app}\espeak-data\voices\other" | |||
| Type: filesandordirs; Name: "{app}\espeak-data\voices\test" | |||
| Type: filesandordirs; Name: "{app}\docs" | |||
| @@ -161,6 +166,7 @@ begin | |||
| $41: Result := 'sw'; | |||
| //$44: Result := 'tt'; | |||
| $49: Result := 'ta'; | |||
| $46: Result := 'pa'; | |||
| $4b: Result := 'kn'; | |||
| //$50: Result := 'mn'; | |||
| $52: Result := 'cy'; | |||
| @@ -208,6 +214,7 @@ begin | |||
| 'an': value := $40a; // Aragon, use code for Spanish | |||
| 'az': value := $42c; | |||
| 'bg': value := $402; | |||
| 'bn': value := $445; | |||
| 'bs': value := $41a; // should be $141a but Jaws crashes on startup | |||
| 'ca': value := $403; | |||
| 'cs': value := $405; | |||
| @@ -247,6 +254,7 @@ begin | |||
| 'ne': value := $461; | |||
| 'nl': value := $413; | |||
| 'no': value := $414; | |||
| 'pa': value := $446; | |||
| 'pl': value := $415; | |||
| 'pt': value := $416; | |||
| 'ro': value := $418; | |||
| @@ -60,7 +60,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
| #define N_PATH_HOME 220 | |||
| #define N_PATH_HOME 230 | |||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
| extern void strncpy0(char *to,const char *from, int size); | |||
| @@ -63,7 +63,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
| #define N_PATH_HOME 120 | |||
| #define N_PATH_HOME 230 | |||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
| extern void strncpy0(char *to,const char *from, int size); | |||
| @@ -65,7 +65,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
| #define N_PATH_HOME 220 | |||
| #define N_PATH_HOME 230 | |||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
| extern void strncpy0(char *to,const char *from, int size); | |||
| @@ -310,6 +310,11 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
| p++; // skip over the zero which terminates the list for this hash value | |||
| } | |||
| if((tr->dict_min_size > 0) && (size < tr->dict_min_size)) | |||
| { | |||
| fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | |||
| } | |||
| return(0); | |||
| } // end of LoadDictionary | |||
| @@ -76,9 +76,9 @@ int LookupMnem(MNEM_TAB *table, const char *string); | |||
| #ifdef PLATFORM_WINDOWS | |||
| #define N_PATH_HOME 220 | |||
| #define N_PATH_HOME 230 | |||
| #else | |||
| #define N_PATH_HOME 150 | |||
| #define N_PATH_HOME 160 | |||
| #endif | |||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.46.42 06.Mar.13"; | |||
| const char *version_string = "1.46.43 07.Mar.13"; | |||
| const int version_phdata = 0x014640; | |||
| int option_device_number = -1; | |||
| @@ -217,6 +217,7 @@ static const char transpose_map_latin[] = { | |||
| tr->charset_a0 = charsets[1]; // ISO-8859-1, this is for when the input is not utf8 | |||
| dictionary_name[0] = 0; | |||
| tr->dict_condition=0; | |||
| tr->dict_min_size = 0; | |||
| tr->data_dictrules = NULL; // language_1 translation rules file | |||
| tr->data_dictlist = NULL; // language_2 dictionary lookup file | |||
| @@ -436,7 +437,7 @@ Translator *SelectTranslator(const char *name) | |||
| int name2 = 0; | |||
| Translator *tr; | |||
| static const short stress_lengths_equal[8] = {250, 250, 250, 250, 0, 0, 250, 250}; | |||
| static const short stress_lengths_equal[8] = {230, 230, 230, 230, 0, 0, 230, 230}; | |||
| static const unsigned char stress_amps_equal[8] = {18,18, 18,18, 18,18, 18,18 }; | |||
| static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; | |||
| @@ -445,7 +446,7 @@ Translator *SelectTranslator(const char *name) | |||
| static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 }; | |||
| static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
| static const short stress_lengths_ta[8] = {240, 240, 250, 250, 0, 0, 270, 270}; | |||
| static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; | |||
| static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; | |||
| // convert name string into a word of up to 4 characters, for the switch() | |||
| @@ -555,6 +555,7 @@ typedef struct | |||
| unsigned char stress_amps_r[8]; | |||
| short stress_lengths[8]; | |||
| int dict_condition; // conditional apply some pronunciation rules and dict.lookups | |||
| int dict_min_size; | |||
| const unsigned short *charset_a0; // unicodes for characters 0xa0 to oxff | |||
| const wchar_t *char_plus_apostrophe; // single chars + apostrophe treated as words | |||
| const wchar_t *punct_within_word; // allow these punctuation characters within words | |||
| @@ -354,7 +354,7 @@ void TranslDlg::ReadVoice(int variant) | |||
| wxString filename; | |||
| char *p; | |||
| char vname[40]; | |||
| char fname[sizeof(path_home)+10]; | |||
| char fname[sizeof(path_home)+30]; | |||
| if(variant) | |||
| { | |||
| @@ -25,7 +25,7 @@ typedef struct { | |||
| int phoneme_tab_ix; // phoneme table number | |||
| int pitch_base; // Hz<<12 | |||
| int pitch_range; // standard = 0x1000 | |||
| int speedf1; | |||
| int speedf2; | |||
| int speedf3; | |||
| @@ -106,6 +106,7 @@ enum { | |||
| V_KLATT, | |||
| V_FAST, | |||
| V_SPEED, | |||
| V_DICTMIN, | |||
| // these need a phoneme table to have been specified | |||
| V_REPLACE, | |||
| @@ -154,6 +155,7 @@ static MNEM_TAB keyword_tab[] = { | |||
| {"klatt", V_KLATT}, | |||
| {"fast_test2", V_FAST}, | |||
| {"speed", V_SPEED}, | |||
| {"dict_min", V_DICTMIN}, | |||
| // these just set a value in langopts.param[] | |||
| {"l_dieresis", 0x100+LOPT_DIERESES}, | |||
| @@ -552,9 +554,10 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| char phonemes_name[40]; | |||
| char option_name[40]; | |||
| const char *language_type; | |||
| char buf[200]; | |||
| char buf[sizeof(path_home)+30]; | |||
| char path_voices[sizeof(path_home)+12]; | |||
| int dict_min = 0; | |||
| int stress_amps[8]; | |||
| int stress_lengths[8]; | |||
| int stress_add[8]; | |||
| @@ -965,6 +968,10 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| SetSpeed(3); | |||
| break; | |||
| case V_DICTMIN: | |||
| sscanf(p,"%d",&dict_min); | |||
| break; | |||
| default: | |||
| if((key & 0xff00) == 0x100) | |||
| { | |||
| @@ -1007,6 +1014,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| } | |||
| voice->phoneme_tab_ix = ix; | |||
| new_translator->phoneme_tab_ix = ix; | |||
| new_translator->dict_min_size = dict_min; | |||
| LoadDictionary(new_translator, new_dictionary, control & 4); | |||
| if(dictionary_name[0]==0) | |||
| return(NULL); // no dictionary loaded | |||
| @@ -1031,6 +1039,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| translator = new_translator; | |||
| } | |||
| // relative lengths of different stress syllables | |||
| for(ix=0; ix<stress_lengths_set; ix++) | |||
| { | |||