lang=cs fix number not spoken after preposition with $alt1 attribute lang=cs Don't allow any thousands separator. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@12 d46cf337-b52f-0410-862d-fd96e6ae7743master
| vga $abbrev | vga $abbrev | ||||
| wgpo $abbrev | wgpo $abbrev | ||||
| wri $abbrev | wri $abbrev | ||||
| www veveve: | |||||
| www ve:ve:ve: | |||||
| // Exceptions | // Exceptions |
| Antigua ant'i:g@ | Antigua ant'i:g@ | ||||
| Antilles ant'Ili:z | Antilles ant'Ili:z | ||||
| Apennine ap@naIn | Apennine ap@naIn | ||||
| Armageddon A@ma2g'Ed@n | |||||
| Arkansas A@k@nsO: | Arkansas A@k@nsO: | ||||
| Athens aTInz | Athens aTInz | ||||
| Bahrain $2 | Bahrain $2 |
| š S@ | š S@ | ||||
| t t@ | t t@ | ||||
| v v@ | v v@ | ||||
| w dv'ost@-*UkovE | |||||
| w dv'ost@-*Uko||v@ | |||||
| x iks | x iks | ||||
| y ipsilon | y ipsilon | ||||
| z z@ | z z@ | ||||
| __ ts'r-t& | __ ts'r-t& | ||||
| _` g@-*'avIs | _` g@-*'avIs | ||||
| _{ 'otvo*,En&||v'itItS,&st& | _{ 'otvo*,En&||v'itItS,&st& | ||||
| _| okom,It& | |||||
| _| okom,Its& | |||||
| _} z'atvo*,En&||v'itItS,&st& | _} z'atvo*,En&||v'itItS,&st& | ||||
| // Conjunctions | // Conjunctions | ||||
| a $u $pause // and | a $u $pause // and | ||||
| i $u $pause // and | i $u $pause // and | ||||
| but $pause // but | |||||
| ali $pause // but | |||||
| nego $pause // but | nego $pause // but | ||||
| ili $u $pause // or | ili $u $pause // or | ||||
| e E | e E | ||||
| j) e e | j) e e | ||||
| e (j e | e (j e | ||||
| ej (K eI | |||||
| .group f | .group f | ||||
| f f | f f | ||||
| .group i | .group i | ||||
| i i | i i | ||||
| ij (K iI | |||||
| .group j | .group j | ||||
| j j | j j | ||||
| .group o | .group o | ||||
| o o | o o | ||||
| ou oU | ou oU | ||||
| oj (K oI | |||||
| o (r 8 | |||||
| .group p | .group p | ||||
| p p | p p | ||||
| .group u | .group u | ||||
| u u | u u | ||||
| uj (K wi | |||||
| .group v | .group v | ||||
| v v | v v |
| _8X 'Ot:i: | _8X 'Ot:i: | ||||
| _9X n'It:i: | _9X n'It:i: | ||||
| _0C h'u-:nd@-*e:d@2 | _0C h'u-:nd@-*e:d@2 | ||||
| _1C 'Et||h'u-:nd@-*e:d@2 | |||||
| _0M1 t'u-:s@n | _0M1 t'u-:s@n | ||||
| _1M2 m'Illi:;,u:n | |||||
| _0M1 'Et||t'u-:s@n | |||||
| _0M2 m'Illi:;,u:n@r | _0M2 m'Illi:;,u:n@r | ||||
| _1M2 'e:n||m'Illi:;,u:n | |||||
| _0and u:g | _0and u:g | ||||
| _dpt kOmmA | _dpt kOmmA | ||||
| // articles | // articles | ||||
| en $u | en $u | ||||
| et $u | |||||
| et Et $u | |||||
| ei $u | ei $u | ||||
| // auxillary verbs (be, have, can, etc) | // auxillary verbs (be, have, can, etc) | ||||
| være $u+ | være $u+ | ||||
| er $u | |||||
| er E:r $u | |||||
| var $u | var $u | ||||
| vært $u | vært $u | ||||
| // MAIN WORD DICTIONARY | // MAIN WORD DICTIONARY | ||||
| //********************* | //********************* | ||||
| pl 17 103 | pl 17 103 | ||||
| sk 25 120 | sk 25 120 | ||||
| cs 5 120 | cs 5 120 | ||||
| hr 19 127 | |||||
| hr 23 129 | |||||
| ru 36 120 | ru 36 120 | ||||
| it 28 112 | it 28 112 | ||||
| es 6 112 | es 6 112 | ||||
| 2 b/bo base hi | 2 b/bo base hi | ||||
| 2 b/bu base hi | 2 b/bu base hi | ||||
| 2 b/xb base hi | 2 b/xb base hi | ||||
| 14 d/d base fi fr hi hu pl ru it ro el sw | |||||
| 15 d/d_ base fi fr hi hu pl ru it ro el sw | |||||
| 15 d/d base fi fr hi hu pl hr ru it ro el sw | |||||
| 16 d/d_ base fi fr hi hu pl hr ru it ro el sw | |||||
| 1 d/d_dnt hi | 1 d/d_dnt hi | ||||
| 16 d/dr base fi fr hi hu pl ru it ro el sw | |||||
| 17 d/dr base fi fr hi hu pl hr ru it ro el sw | |||||
| 1 d/tap ro | 1 d/tap ro | ||||
| 2 d/tap1 base | 2 d/tap1 base | ||||
| 2 d/tap2 base | 2 d/tap2 base | ||||
| 2 d/tap3 base | 2 d/tap3 base | ||||
| 1 d/tap_i ro | 1 d/tap_i ro | ||||
| 12 d/xd base fi fr hi hu pl ru it ro el sw | |||||
| 13 d/xd base fi fr hi hu pl hr ru it ro el sw | |||||
| 1 d/xd_dnt hi | 1 d/xd_dnt hi | ||||
| 2 d/xd_pzd pl ru | 2 d/xd_pzd pl ru | ||||
| 1 d/x_tap base | 1 d/x_tap base | ||||
| 2 ustop/p_ base hi | 2 ustop/p_ base hi | ||||
| 1 ustop/percus10 base | 1 ustop/percus10 base | ||||
| 8 ustop/pl base fi hi hu hr it ro | 8 ustop/pl base fi hi hu hr it ro | ||||
| 9 ustop/pr base fi hi hu hr it ro | |||||
| 8 ustop/pr base fi hi hu it ro | |||||
| 7 ustop/p_unasp base fi hi hu hr it ro | 7 ustop/p_unasp base fi hi hu hr it ro | ||||
| 6 ustop/p_unasp_ fi hi hu hr it ro | 6 ustop/p_unasp_ fi hi hu hr it ro | ||||
| 2 ustop/t base hi | 2 ustop/t base hi | ||||
| 2 vdiph/eeu_3 en_n en_wm | 2 vdiph/eeu_3 en_n en_wm | ||||
| 1 vdiph/eey fi | 1 vdiph/eey fi | ||||
| 6 vdiph/ei nl it pt is vi zh_yue | 6 vdiph/ei nl it pt is vi zh_yue | ||||
| 1 vdiph/ei_2 hr | |||||
| 8 vdiph/eu en cy eo nl sk it pt vi | 8 vdiph/eu en cy eo nl sk it pt vi | ||||
| 1 vdiph/eu_2 fi | 1 vdiph/eu_2 fi | ||||
| 2 vdiph/&i fi hi | 2 vdiph/&i fi hi | ||||
| 3 vdiph/@i_3 en_wm ro zh_yue | 3 vdiph/@i_3 en_wm ro zh_yue | ||||
| 1 vdiph/&i_3 vi | 1 vdiph/&i_3 vi | ||||
| 1 vdiph/@i_4 vi | 1 vdiph/@i_4 vi | ||||
| 1 vdiph/ii ro | |||||
| 2 vdiph/ii hr ro | |||||
| 1 vdiph/i#i ro | 1 vdiph/i#i ro | ||||
| 4 vdiph/oi en_wm de it vi | 4 vdiph/oi en_wm de it vi | ||||
| 1 vdiph/oi_2 af | 1 vdiph/oi_2 af | ||||
| 10 vdiph/ooi en en_n en_us en_rp cy eo fi no zh_yue | 10 vdiph/ooi en en_n en_us en_rp cy eo fi no zh_yue | ||||
| 1 vdiph/ooi_2 af | 1 vdiph/ooi_2 af | ||||
| 1 vdiph/ooi_3 en_wm | |||||
| 2 vdiph/ooi_3 en_wm hr | |||||
| 2 vdiph/ou fi zh_yue | 2 vdiph/ou fi zh_yue | ||||
| 2 vdiph/ou_2 sk ro | 2 vdiph/ou_2 sk ro | ||||
| 1 vdiph/ou_3 is | 1 vdiph/ou_3 is | ||||
| 5 w/xw base | 5 w/xw base | ||||
| 20 x/b base hi ro is | 20 x/b base hi ro is | ||||
| 2 x/b_ base is | 2 x/b_ base is | ||||
| 7 x/d base hi el is | |||||
| 14 x/d_ base fi fr hi hu pl ru it ro el is sw | |||||
| 9 x/d base hi hr el is | |||||
| 15 x/d_ base fi fr hi hu pl hr ru it ro el is ++ | |||||
| 22 x/d_dnt base fi fr hi hu pl ru it ro sw | 22 x/d_dnt base fi fr hi hu pl ru it ro sw | ||||
| 6 x/d_pzd pl ru | 6 x/d_pzd pl ru | ||||
| 3 x/dzh base hi | 3 x/dzh base hi |
| endphoneme | endphoneme | ||||
| phoneme aI | |||||
| vowel starttype (a) endtype (i) | |||||
| length 250 | |||||
| formants vdiph/ai | |||||
| endphoneme | |||||
| phoneme E | phoneme E | ||||
| vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
| length 140 | length 140 | ||||
| endphoneme | endphoneme | ||||
| phoneme aI | |||||
| vowel starttype (a) endtype (i) | |||||
| length 230 | |||||
| formants vdiph/ai | |||||
| endphoneme | |||||
| phoneme eI | |||||
| vowel starttype (e) endtype (i) | |||||
| length 220 | |||||
| formants vdiph/ei_2 | |||||
| linkout ; | |||||
| endphoneme | |||||
| phoneme iI | |||||
| vowel starttype (i) endtype (i) | |||||
| length 250 | |||||
| formants vdiph/ii | |||||
| linkout ; | |||||
| endphoneme | |||||
| phoneme oI | |||||
| vowel starttype (o) endtype (i) | |||||
| length 220 | |||||
| formants vdiph/ooi_3 | |||||
| linkout ; | |||||
| endphoneme | |||||
| phoneme p | phoneme p | ||||
| vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | ||||
| vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/p_unasp | |||||
| wave ustop/p_unasp%120 | |||||
| before _ ustop/p_unasp_%80 | before _ ustop/p_unasp_%80 | ||||
| before r ustop/pr | |||||
| before l ustop/pl | before l ustop/pl | ||||
| switchvoicing b | switchvoicing b | ||||
| endphoneme | endphoneme | ||||
| endphoneme | endphoneme | ||||
| phoneme d | |||||
| vcd alv stop | |||||
| vowelin f1=2 f2=1700 -300 300 f3=-100 80 rms=45 | |||||
| vowelout f1=2 f2=1700 -300 300 f3=-100 80 | |||||
| formants d/d+x/d%50 | |||||
| before _ d/d_+x/d_ | |||||
| before r d/dr+x/d | |||||
| after _ NULL | |||||
| after @ d/xd | |||||
| lengthmod 5 | |||||
| switchvoicing t | |||||
| endphoneme | |||||
| phoneme x | phoneme x | ||||
| vls vel frc | vls vel frc | ||||
| vowelin f1=0 f2=2300 200 400 f3=-100 80 | vowelin f1=0 f2=2300 200 400 f3=-100 80 |
| if((f_errors = fopen_log(f_errors,fname,"w")) == NULL) | if((f_errors = fopen_log(f_errors,fname,"w")) == NULL) | ||||
| f_errors = stderr; | f_errors = stderr; | ||||
| sprintf(fname,"%s/%s",path_home,"phondata_manifest"); | |||||
| sprintf(fname,"%s/%s",path_home,"phondata-manifest"); | |||||
| if((f_phcontents = fopen_log(f_phcontents,fname,"w")) == NULL) | if((f_phcontents = fopen_log(f_phcontents,fname,"w")) == NULL) | ||||
| f_phcontents = stderr; | f_phcontents = stderr; | ||||
| fname_speech = WavFileName(); | fname_speech = WavFileName(); | ||||
| OpenWaveFile2(fname_speech); | OpenWaveFile2(fname_speech); | ||||
| first=1; | |||||
| first = 0; | |||||
| if(start > 0) | |||||
| first=1; // a selection, use fade-in | |||||
| sp2 = NULL; | sp2 = NULL; | ||||
| for(ix=start; ix<=end; ix++) | for(ix=start; ix<=end; ix++) | ||||
| { | { |
| tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
| tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word | tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word | ||||
| tr->langopts.numbers = 0x1c0d + 0x84000; | |||||
| // tr->langopts.numbers = 0x1c0d + 0x84000; | |||||
| tr->langopts.numbers = 0x1c01 + 0x84000; | |||||
| tr->langopts.thousands_sep = 0; //no thousands separator | |||||
| tr->langopts.decimal_sep = ','; | |||||
| if(name2 == L('c','s')) | if(name2 == L('c','s')) | ||||
| { | |||||
| tr->langopts.numbers2 = 0x8; // variant numbers before milliards | tr->langopts.numbers2 = 0x8; // variant numbers before milliards | ||||
| } | |||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
| SetLetterVowel(tr,'r'); | SetLetterVowel(tr,'r'); |
| int first_phoneme = 1; | int first_phoneme = 1; | ||||
| int source_ix; | int source_ix; | ||||
| int len; | int len; | ||||
| int limit; | |||||
| int sylimit; // max. number of syllables in a word to be combined with a preceding preposition | |||||
| char *new_language; | char *new_language; | ||||
| unsigned char bad_phoneme[4]; | unsigned char bad_phoneme[4]; | ||||
| { | { | ||||
| flags = translator->TranslateWord(word, next_pause, wtab); | flags = translator->TranslateWord(word, next_pause, wtab); | ||||
| if((flags & FLAG_ALT2_TRANS) && ((limit = langopts.param[LOPT_COMBINE_WORDS]) > 0)) | |||||
| if((flags & FLAG_ALT2_TRANS) && ((sylimit = langopts.param[LOPT_COMBINE_WORDS]) > 0)) | |||||
| { | { | ||||
| char *p2; | char *p2; | ||||
| int ok = 1; | int ok = 1; | ||||
| int flags2; | int flags2; | ||||
| int c_word2; | |||||
| char ph_buf[N_WORD_PHONEMES]; | char ph_buf[N_WORD_PHONEMES]; | ||||
| // LANG=cs,sk | // LANG=cs,sk | ||||
| p2 = word; | p2 = word; | ||||
| while(*p2 != ' ') p2++; | while(*p2 != ' ') p2++; | ||||
| if(limit & 0x100) | |||||
| utf8_in(&c_word2, p2+1, 0); // first character of the next word; | |||||
| if(!iswalpha(c_word2)) | |||||
| { | |||||
| ok =0; | |||||
| } | |||||
| if(sylimit & 0x100) | |||||
| { | { | ||||
| // only if the second word has $alt attribute | // only if the second word has $alt attribute | ||||
| strcpy(ph_buf,word_phonemes); | strcpy(ph_buf,word_phonemes); | ||||
| { | { | ||||
| *p2 = '-'; // replace next space by hyphen | *p2 = '-'; // replace next space by hyphen | ||||
| flags = translator->TranslateWord(word, next_pause, wtab); // translate the combined word | flags = translator->TranslateWord(word, next_pause, wtab); // translate the combined word | ||||
| if(CountSyllables(p) > (limit & 0xf)) | |||||
| if(CountSyllables(p) > (sylimit & 0xf)) | |||||
| { | { | ||||
| // revert to separate words | // revert to separate words | ||||
| *p2 = ' '; | *p2 = ' '; |
| espeak_VOICE *v; | espeak_VOICE *v; | ||||
| int variant=0; | int variant=0; | ||||
| char *p; | char *p; | ||||
| char variant_name[20]; | |||||
| static char buf[60]; | static char buf[60]; | ||||
| strncpy0(buf,name,sizeof(buf)); | strncpy0(buf,name,sizeof(buf)); | ||||
| variant = atoi(p+1); | variant = atoi(p+1); | ||||
| } | } | ||||
| // first check for a voice with this filename | |||||
| // first check for a voice with this filename | |||||
| if(LoadVoice(buf,1) != NULL) | if(LoadVoice(buf,1) != NULL) | ||||
| { | { | ||||
| voice_selected = first_voice; | voice_selected = first_voice; | ||||
| if(variant > 0) | |||||
| { | |||||
| // apply a voice variant | |||||
| sprintf(variant_name,"!variant%d",variant); | |||||
| LoadVoice(variant_name,2); | |||||
| } | |||||
| WavegenSetVoice(voice); | WavegenSetVoice(voice); | ||||
| return(EE_OK); | return(EE_OK); | ||||
| } | } |