Added new phonemes [s.] and [z.] (as common phonemes), use in Lang=ru, Lang=sv, Lang=hi Remake WAV files for [s;] and [z;] phonemes. espeak_Terminate(), set pointers to NULL after free(). espeak_Initialize(), returns EE_INTERNAL_ERROR (-1) if fails to allocate memory. Change to the default tone setting (array: tone_points in voices.cpp). git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@5 d46cf337-b52f-0410-862d-fd96e6ae7743master
 jonsd
					
					18 years ago
						jonsd
					
					18 years ago
				| ऱ r@ | ऱ r@ | ||||
| व v@ | व v@ | ||||
| श S@ | श S@ | ||||
| ष S@ // should be retroflex [S] | ष s.@ // should be retroflex [S] | ||||
| स s@ | स s@ | ||||
| ह H@ | ह H@ | ||||
| क़ q@ | क़ q@ | 
| ?1 श (_ S | ?1 श (_ S | ||||
| .group ष | .group ष | ||||
| ष SV //?? or retroflex [S] | ष s.V //?? or retroflex [S] | ||||
| ष (B S //?? | ष (B s. //?? | ||||
| ?1 ष (_ S //?? | ?1 ष (_ s. //?? | ||||
| .group स | .group स | ||||
| स sV | स sV | 
| _3 t;r'i | _3 t;r'i | ||||
| _4 ts;It'yr;I | _4 ts;It'yr;I | ||||
| _5 p;'jat; | _5 p;'jat; | ||||
| _6 S'Es;t; | _6 s.'Es;t; | ||||
| _7 s;'em | _7 s;'em | ||||
| _8 v'os;E2m | _8 v'os;E2m | ||||
| _9 d;'ev;It; | _9 d;'ev;It; | ||||
| _13 tr;In'AttsVt; | _13 tr;In'AttsVt; | ||||
| _14 ts;It'y@-*nVttsVt; | _14 ts;It'y@-*nVttsVt; | ||||
| _15 p;Itn'AttsVt; | _15 p;Itn'AttsVt; | ||||
| _16 SE#stn'AttsVt; | _16 s.E#stn'AttsVt; | ||||
| _17 s;Imn'AttsVt; | _17 s;Imn'AttsVt; | ||||
| _18 vOs;Imn'AttsVt; | _18 vOs;Imn'AttsVt; | ||||
| _19 d;E2v;Itn'AttsVt; | _19 d;E2v;Itn'AttsVt; | ||||
| _3X tr;'ittsVt; | _3X tr;'ittsVt; | ||||
| _4X s'o@-*Ok | _4X s'o@-*Ok | ||||
| _5X p;Id;d;Is;'jat | _5X p;Id;d;Is;'jat | ||||
| _6X SE2z;d;d;Is;'jat | _6X s.E2z;d;d;Is;'jat | ||||
| _7X s;'emd;E2s;It | _7X s;'emd;E2s;It | ||||
| _8X v'os;E2md;E2s;It | _8X v'os;E2md;E2s;It | ||||
| _9X d;E2v;In'ostO | _9X d;E2v;In'ostO | ||||
| _3C tr;'ista | _3C tr;'ista | ||||
| _4C ts;It'yr;E2sta | _4C ts;It'yr;E2sta | ||||
| _5C p;,It;s'ot | _5C p;,It;s'ot | ||||
| _6C S,E#s;t;s'ot | _6C s.,E#s;t;s'ot | ||||
| _7C s;,Ims'ot | _7C s;,Ims'ot | ||||
| _8C vOs;Ims'ot | _8C vOs;Ims'ot | ||||
| _9C d;E2v;It;s'ot | _9C d;E2v;It;s'ot | ||||
| // questions | // questions | ||||
| что Sto $u $pause // what, that | что s.to $u $pause // what, that | ||||
| // misc. | // misc. | 
| .group ж | .group ж | ||||
| _) ж (_ ZE | _) ж (_ z.E | ||||
| ж (кY S | ж (кY s. | ||||
| ж (кь S | ж (кь s. | ||||
| ж (пY S | ж (пY s. | ||||
| ж (пь S | ж (пь s. | ||||
| ж (сь S | ж (сь s. | ||||
| ж (сY S | ж (сY s. | ||||
| ж (ть S | ж (ть s. | ||||
| ж (тY S | ж (тY s. | ||||
| ж (фь S | ж (фь s. | ||||
| ж (фY S | ж (фY s. | ||||
| ж (ффь S | ж (ффь s. | ||||
| ж (ффY S | ж (ффY s. | ||||
| ж (хь S | ж (хь s. | ||||
| ж (хY S | ж (хY s. | ||||
| ж (хкY S | ж (хкY s. | ||||
| ж (хкь S | ж (хкь s. | ||||
| ж z. | |||||
| ж Z | |||||
| .group з | .group з | ||||
| _) з (_ zE | _) з (_ zE | ||||
| з (сь s; | з (сь s; | ||||
| з (сY s; | з (сY s; | ||||
| з (ж Z | з (ж z. | ||||
| з (ш S | з (ш s. | ||||
| з (щ s;s; | з (щ s;s; | ||||
| з (ч s;s; | з (ч s;s; | ||||
| з z | з z | ||||
| .group о | .group о | ||||
| о o | о o | ||||
| о (B oj | |||||
| о (Cь oj | |||||
| о (FY oj | |||||
| .group п | .group п | ||||
| _) п (_ pE | _) п (_ pE | ||||
| с (дY z; | с (дY z; | ||||
| с (дB z; | с (дB z; | ||||
| с (ж Z | с (ж z. | ||||
| с (ш S | с (ш s. | ||||
| с (щ s;s; | с (щ s; | ||||
| с (ч s;s; | с (ч s; | ||||
| с s | с s | ||||
| т (ж d | т (ж d | ||||
| т t | т t | ||||
| .group у | .group у | ||||
| _) у (_ u | _) у (_ u | ||||
| .group ш | .group ш | ||||
| _) ш (_ SA | _) ш (_ s.A | ||||
| ш (б Z | ш (б z. | ||||
| ш (бь Z | ш (бь z. | ||||
| ш (бY Z | ш (бY z. | ||||
| ш (бмь Z | ш (бмь z. | ||||
| ш (бмY Z | ш (бмY z. | ||||
| ш (бвь Z | ш (бвь z. | ||||
| ш (бвY Z | ш (бвY z. | ||||
| ш (г Z | ш (г z. | ||||
| ш (гь Z | ш (гь z. | ||||
| ш (гY Z | ш (гY z. | ||||
| ш (д Z | ш (д z. | ||||
| ш (дь Z | ш (дь z. | ||||
| ш (дY Z | ш (дY z. | ||||
| ш (дB Z | ш (дB z. | ||||
| ш (ж Z | ш (ж z. | ||||
| ш (з Z | ш (з z. | ||||
| ш (зь Z | ш (зь z. | ||||
| ш (зY Z | ш (зY z. | ||||
| ш S | ш s. | ||||
| .group щ | .group щ | ||||
| _) щ (_ S;ja | _) щ (_ S;ja | 
| .group r | .group r | ||||
| r r | r r | ||||
| r) r | r) r | ||||
| rs S | rs s. | ||||
| rsi (o rsx' | rsi (o rsx' | ||||
| rsk Sk | rsk s.k | ||||
| rsk (i rsx | rsk (i rsx | ||||
| rss S | rss s. | ||||
| rg (_ rj | rg (_ rj | ||||
| radera rad'e:ra | radera rad'e:ra | ||||
| .group a | .group a | ||||
| a a: | a a: | ||||
| ai a:I | ai a:I | ||||
| qu kw | qu kw | ||||
| .group r | .group r | ||||
| r D | r z; | ||||
| .group s | .group s | ||||
| s s | s s | 
| 33 phoneme tables | 33 phoneme tables | ||||
| new total | new total | ||||
| base 89 89 | base 91 91 | ||||
| en 52 136 | en 52 138 | ||||
| en_n 29 136 | en_n 29 138 | ||||
| en_us 36 136 | en_us 36 138 | ||||
| en_sc 39 138 | en_sc 39 140 | ||||
| en_rp 34 136 | en_rp 34 138 | ||||
| en_wm 30 136 | en_wm 30 138 | ||||
| af 37 120 | af 37 122 | ||||
| cy 30 115 | cy 30 117 | ||||
| de 28 112 | de 28 114 | ||||
| eo 15 101 | eo 15 103 | ||||
| fi 40 120 | fi 40 122 | ||||
| fr 32 113 | fr 32 115 | ||||
| fr_ca 11 113 | fr_ca 11 115 | ||||
| hi 50 125 | hi 50 127 | ||||
| hu 24 106 | hu 24 108 | ||||
| nl 25 109 | nl 25 111 | ||||
| pl 17 100 | pl 17 102 | ||||
| sk 22 115 | sk 22 117 | ||||
| cs 6 116 | cs 6 118 | ||||
| hr 15 119 | hr 15 121 | ||||
| ru 35 116 | ru 36 119 | ||||
| it 28 109 | it 28 111 | ||||
| es 7 109 | es 7 111 | ||||
| pt 25 124 | pt 25 126 | ||||
| pt_pt 17 124 | pt_pt 17 126 | ||||
| ro 36 133 | ro 36 135 | ||||
| el 7 109 | el 7 111 | ||||
| sv 25 111 | sv 25 113 | ||||
| no 29 115 | no 29 117 | ||||
| vi 41 126 | vi 41 128 | ||||
| zh_yue 32 117 | zh_yue 32 119 | ||||
| sw 14 98 | sw 14 100 | ||||
| 3 b/b base hi ro | 3 b/b base hi ro | ||||
| 2 b/b_ base hi | 2 b/b_ base hi | ||||
| 1 ufric/sh_ base | 1 ufric/sh_ base | ||||
| 2 ufric/sh_pzd base ro | 2 ufric/sh_pzd base ro | ||||
| 3 ufric/sh_pzd_ base | 3 ufric/sh_pzd_ base | ||||
| 5 ufric/s_pzd base ro | 2 ufric/sh_rfx base | ||||
| 3 ufric/s_pzd base ro | |||||
| 2 ufric/s_pzd_ base | |||||
| 1 ufric/sx_sv sv | 1 ufric/sx_sv sv | ||||
| 1 ufric/th base | 1 ufric/th base | ||||
| 1 ufric/th_ base | 1 ufric/th_ base | ||||
| 1 vdiph/y#y fi | 1 vdiph/y#y fi | ||||
| 2 vdiph/y#y_2 af zh_yue | 2 vdiph/y#y_2 af zh_yue | ||||
| 1 vdiph/y#y_3 nl | 1 vdiph/y#y_3 nl | ||||
| 2 vnasal/aa_n en fr | 1 vnasal/aa_n en | ||||
| 1 vnasal/aa_n3 af | 2 vnasal/aa_n3 af fr | ||||
| 2 vnasal/ee_n en fr_ca | 2 vnasal/ee_n en fr_ca | ||||
| 3 vnasal/ee_n2 hi pl pt_pt | 3 vnasal/ee_n2 hi pl pt_pt | ||||
| 2 vnasal/e_n af pt | 2 vnasal/e_n af pt | ||||
| 1 vnasal/oi_n pt | 1 vnasal/oi_n pt | ||||
| 2 vnasal/o_n hi pt | 2 vnasal/o_n hi pt | ||||
| 1 vnasal/o_n2 af | 1 vnasal/o_n2 af | ||||
| 2 vnasal/oo_n en fr | 1 vnasal/o_n3 fr | ||||
| 1 vnasal/oo_n en | |||||
| 2 vnasal/oo_n2 hi pl | 2 vnasal/oo_n2 hi pl | ||||
| 1 vnasal/&u_n pt | 1 vnasal/&u_n pt | ||||
| 1 vnasal/u_n pt | 1 vnasal/u_n pt | ||||
| 1 vocw/Q2 nl | 1 vocw/Q2 nl | ||||
| 6 vocw/v base ro | 6 vocw/v base ro | ||||
| 4 vocw/zh base ro | 4 vocw/zh base ro | ||||
| 1 vocw/zh_rfx cs | 3 vocw/zh_rfx base cs | ||||
| 3 voc/z base fr ro | 3 voc/z base fr ro | ||||
| 3 voc/z_ base fr ro | 3 voc/z_ base fr ro | ||||
| 2 voc/zh base ro | 3 voc/zh base ro | ||||
| 2 voc/zh_ base ro | 3 voc/zh_ base ro | ||||
| 1 voc/zh_2 cs | 1 voc/zh_2 cs | ||||
| 2 voc/z_pzd base | 2 voc/z_pzd base | ||||
| 2 voc/z_pzd_ base | 2 voc/z_pzd_ base | ||||
| 14 vowel/@ base en en_us en_rp cy hi hr | 14 vowel/@ base en en_us en_rp cy hi hr | ||||
| 1 vowel/@- base | 1 vowel/@- base | ||||
| 4 vowel/& en_rp fi hi sv | 4 vowel/& en_rp fi hi sv | ||||
| 5 vowel/0 en fr hi it pt | 4 vowel/0 en hi it pt | ||||
| 4 vowel/0_2 en_n en_wm pt_pt sw | 4 vowel/0_2 en_n en_wm pt_pt sw | ||||
| 5 vowel/0_3 en_us en_sc en_rp hu | 5 vowel/0_3 en_us en_sc en_rp hu | ||||
| 1 vowel/@_2 fr | 1 vowel/@_2 fr | ||||
| 5 vowel/a_2 eo it pt_pt ro vi | 5 vowel/a_2 eo it pt_pt ro vi | ||||
| 3 vowel/a#_2 hr sv sw | 3 vowel/a#_2 hr sv sw | ||||
| 5 vowel/a_3 en_sc cs | 5 vowel/a_3 en_sc cs | ||||
| 11 vowel/a#_3 en en_n en_us en_wm de hi pt_pt vi zh_yue | 12 vowel/a#_3 en en_n en_us en_wm de hi ru pt_pt vi zh_yue | ||||
| 4 vowel/a_4 en_wm el vi | 4 vowel/a_4 en_wm el vi | ||||
| 2 vowel/a_5 sv sw | 2 vowel/a_5 sv sw | ||||
| 7 vowel/aa en_us fi fr_ca no zh_yue | 7 vowel/aa en_us fi fr_ca no zh_yue | ||||
| 2 vowel/ii_4 en_rp | 2 vowel/ii_4 en_rp | ||||
| 6 vowel/ii_en en en_n | 6 vowel/ii_en en en_n | ||||
| 5 vowel/@_low hi ro no | 5 vowel/@_low hi ro no | ||||
| 9 vowel/o en en_wm de fr hi it pt_pt sv | 8 vowel/o en en_wm de hi it pt_pt sv | ||||
| 4 vowel/o_2 cy hi hu no | 4 vowel/o_2 cy hi hu no | ||||
| 2 vowel/o-_2 en_n en_wm | 2 vowel/o-_2 en_n en_wm | ||||
| 2 vowel/o_3 en_sc | 2 vowel/o_3 en_sc | ||||
| 1 vowel/o-_3 en_rp | 1 vowel/o-_3 en_rp | ||||
| 1 vowel/o_4 en_n | 2 vowel/o_4 en_n fr | ||||
| 1 vowel/o_6 nl | 2 vowel/o_6 fr nl | ||||
| 4 vowel/oe en af de fr | 4 vowel/oe en af de fr | ||||
| 1 vowel/oe_2 no | 1 vowel/oe_2 no | ||||
| 1 vowel/oe_4 sv | 1 vowel/oe_4 sv | 
| phoneme o | phoneme o | ||||
| vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
| length 166 | length 166 | ||||
| formants vowel/o | formants vowel/o_4 | ||||
| endphoneme | endphoneme | ||||
| phoneme O | phoneme O | ||||
| vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
| length 190 | length 190 | ||||
| formants vowel/0 | formants vowel/o_6 | ||||
| endphoneme | endphoneme | ||||
| phoneme A~ | phoneme A~ | ||||
| vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
| length 222 | length 222 | ||||
| formants vnasal/aa_n | formants vnasal/aa_n3 | ||||
| endphoneme | endphoneme | ||||
| phoneme O~ | phoneme O~ | ||||
| vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
| length 222 | length 222 | ||||
| formants vnasal/oo_n | formants vnasal/o_n3 | ||||
| endphoneme | endphoneme | ||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| beforenotvowel r/ | beforenotvowel r/ | ||||
| trill | |||||
| formants vwl_fr/@R+r3/rx%80 | formants vwl_fr/@R+r3/rx%80 | ||||
| endphoneme | endphoneme | ||||
| phoneme z2 // silent unless followed by vowel | phoneme z2 // silent unless followed by vowel | ||||
| beforenotvowel NULL | beforenotvowel NULL | ||||
| vcd alv frc sibilant | vcd alv frc sibilant | ||||
| vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | ||||
| formants voc/z+ufric/s_ | formants voc/z+ufric/s_ | ||||
| before _ voc/z_+ufric/s_ | before _ voc/z_+ufric/s_ | ||||
| lengthmod 6 | lengthmod 6 | ||||
| length 100 | length 100 | ||||
| endphoneme | endphoneme | ||||
| phoneme a# | |||||
| vowel starttype (a) endtype (a) | |||||
| formants vowel/a#_3 | |||||
| length 100 | |||||
| endphoneme | |||||
| endphoneme | endphoneme | ||||
| phoneme z. | |||||
| vcd pla frc sibilant | |||||
| vowelin f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| vowelout f1=2 f2=1800 -100 300 f3=-300 80 brk | |||||
| formants voc/zh+vocw/zh_rfx | |||||
| before _ voc/zh_+vocw/zh_rfx | |||||
| lengthmod 6 | |||||
| switchvoicing s. | |||||
| endphoneme | |||||
| phoneme z; | phoneme z; | ||||
| vcd pal frc sibilant palatal | vcd pal frc sibilant palatal | ||||
| vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | ||||
| vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | ||||
| formants voc/z_pzd+ufric/s_pzd%40 | formants voc/z_pzd+ufric/s_pzd%80 | ||||
| before _ voc/z_pzd_+ufric/s_pzd%40 | before _ voc/z_pzd_+ufric/s_pzd_%80 | ||||
| lengthmod 6 | lengthmod 6 | ||||
| switchvoicing s; | switchvoicing s; | ||||
| endphoneme | endphoneme | ||||
| vowelout f1=1 f2=2700 400 600 f3=200 70 rate len=70 | vowelout f1=1 f2=2700 400 600 f3=200 70 rate len=70 | ||||
| length 100 | length 100 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/s_pzd%50 | wave ufric/s_pzd | ||||
| before _ ufric/s_pzd%50 | before _ ufric/s_pzd_ | ||||
| switchvoicing z; | switchvoicing z; | ||||
| endphoneme | endphoneme | ||||
| phoneme s. | |||||
| vls pla frc sibilant | |||||
| vowelin f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| vowelout f1=0 f2=1800 -100 300 f3=-300 80 | |||||
| length 100 | |||||
| lengthmod 3 | |||||
| wave ufric/sh_rfx%80 | |||||
| before _ ufric/sh_rfx%60 | |||||
| switchvoicing z. | |||||
| endphoneme | |||||
| phoneme S; | phoneme S; | ||||
| vls pal frc sibilant palatal | vls pal frc sibilant palatal | ||||
| vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70 | vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70 | 
 
							| if((langopts.stress_flags & 0x1000) && (vowel_stress[1] == 0)) | if((langopts.stress_flags & 0x1000) && (vowel_stress[1] == 0)) | ||||
| { | { | ||||
| if((vowel_count == 3) && (vowel_stress[2] >= 4)) | // If there is only one syllable before the primary stress, give it a secondary stress | ||||
| if((vowel_count > 2) && (vowel_stress[2] >= 4)) | |||||
| { | { | ||||
| // 2-syllable word, put a secondary stress on the initial syllable | |||||
| vowel_stress[1] = 3; | vowel_stress[1] = 3; | ||||
| } | } | ||||
| } | } | 
| {PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question | {PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question | ||||
| 20, 25, 34, 20, drops_0, 3, 3, 15, 25, 0}, | 20, 25, 34, 20, drops_0, 3, 3, 15, 25, 0}, | ||||
| {PITCHdrop, 40, 2, PITCHdrop, 42,25, // exclamation | {PITCHdrop, 38, 1, PITCHdrop, 42,25, // exclamation | ||||
| 20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | 20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | ||||
| ssml_sp->voice_variant = 0; | ssml_sp->voice_variant = 0; | ||||
| ssml_sp->voice_gender = 0; | ssml_sp->voice_gender = 0; | ||||
| ssml_sp->voice_age = 0; | ssml_sp->voice_age = 0; | ||||
| strncpy0(ssml_sp->voice_name,pvoice->name,sizeof(ssml_sp->voice_name)); | if(pvoice != NULL) | ||||
| strncpy0(ssml_sp->language,&pvoice->languages[1],sizeof(ssml_sp->language)); | { | ||||
| strncpy0(ssml_sp->voice_name,pvoice->name,sizeof(ssml_sp->voice_name)); | |||||
| strncpy0(ssml_sp->language,&pvoice->languages[1],sizeof(ssml_sp->language)); | |||||
| } | |||||
| current_voice_id[0] = 0; | current_voice_id[0] = 0; | ||||
| n_param_stack = 1; | n_param_stack = 1; | 
| buf_length = 200; | buf_length = 200; | ||||
| outbuf_size = (buf_length * samplerate)/500; | outbuf_size = (buf_length * samplerate)/500; | ||||
| outbuf = (unsigned char*)realloc(outbuf,outbuf_size); | outbuf = (unsigned char*)realloc(outbuf,outbuf_size); | ||||
| out_start = outbuf; | if((out_start = outbuf) == NULL) | ||||
| return(EE_INTERNAL_ERROR); | |||||
| // allocate space for event list. Allow 500 events per minute | // allocate space for event list. Allow 500 events per minute | ||||
| n_event_list = (buf_length*500)/1000; | n_event_list = (buf_length*500)/1000; | ||||
| event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list); | if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL) | ||||
| return(EE_INTERNAL_ERROR); | |||||
| option_phonemes = 0; | option_phonemes = 0; | ||||
| #endif | #endif | ||||
| Free(event_list); | Free(event_list); | ||||
| event_list = NULL; | |||||
| Free(outbuf); | Free(outbuf); | ||||
| outbuf = NULL; | |||||
| FreePhData(); | FreePhData(); | ||||
| return EE_OK; | return EE_OK; | 
| path: The directory which contains the espeak-data directory, or NULL for the default location. | path: The directory which contains the espeak-data directory, or NULL for the default location. | ||||
| Returns: sample rate in Hz | Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). | ||||
| */ | */ | ||||
| typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | 
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.24.03 06.May.07"; | const char *version_string = "1.24.04 08.May.07"; | ||||
| const int version_phdata = 0x012201; | const int version_phdata = 0x012201; | ||||
| int option_device_number = -1; | int option_device_number = -1; | 
| case L('f','r'): // french | case L('f','r'): // french | ||||
| { | { | ||||
| static int stress_lengths_fr[8] = {180, 180, 180, 180, 0, 0, 220, 220}; | static int stress_lengths_fr[8] = {180, 160, 180, 190, 0, 0, 220, 220}; | ||||
| static int stress_amps_fr[8] = {16,14, 20,20, 20,24, 24,22 }; | static int stress_amps_fr[8] = {16,14, 20,20, 20,24, 24,22 }; | ||||
| tr = new Translator(); | tr = new Translator(); | ||||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
| tr->langopts.stress_rule = 3; // stress on final syllable | tr->langopts.stress_rule = 3; // stress on final syllable | ||||
| tr->langopts.stress_flags = 0x20; // don't use secondary stress | tr->langopts.stress_flags = 0x0024; // don't use secondary stress | ||||
| tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | ||||
| tr->langopts.numbers = 0x1509; | tr->langopts.numbers = 0x1509; | 
| // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | ||||
| // bit8=stress last syllable if it doesn't end in a vowel | // bit8=stress last syllable if it doesn't end in a vowel | ||||
| // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | ||||
| // bit12= In 2-syllable words, give the first syllable a secondary stress | // bit12= If there is only one syllable before the primary stress, give it a secondary stress | ||||
| int stress_flags; | int stress_flags; | ||||
| int unstressed_wd1; // stress for $u word of 1 syllable | int unstressed_wd1; // stress for $u word of 1 syllable | 
| {"female", 2}, | {"female", 2}, | ||||
| {NULL, 0 }}; | {NULL, 0 }}; | ||||
| //int tone_points[10] = {250,140, 1200,110, -1,0, -1,0, -1,0}; | |||||
| int tone_points[10] = {600,180, 1200,140, 2000,110, 3000,110, -1,0}; | |||||
| // limit the rate of change for each formant number | // limit the rate of change for each formant number | ||||
| //static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate | //static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate | ||||
| static int formant_rate_22050[9] = {50, 100, 165, 200, 200, 200, 200, 200, 200}; // values for 22kHz sample rate | static int formant_rate_22050[9] = {50, 100, 165, 200, 200, 200, 200, 200, 200}; // values for 22kHz sample rate | ||||
| const char *variant_lists[3] = {variants_either, variants_male, variants_female}; | const char *variant_lists[3] = {variants_either, variants_male, variants_female}; | ||||
| int tone_points[10] = {250,140, 1200,110, -1,0, -1,0, -1,0}; | |||||
| void SetToneAdjust(voice_t *voice, int *tone_pts) | void SetToneAdjust(voice_t *voice, int *tone_pts) | ||||
| {//============================================== | {//============================================== | ||||
| } | } | ||||
| f_voice = fopen(buf,"r"); | f_voice = fopen(buf,"r"); | ||||
| if(first_voice == NULL) | |||||
| { | |||||
| first_voice = ReadVoiceFile(f_voice,buf+len_path_voices,voicename); | |||||
| rewind(f_voice); | |||||
| } | |||||
| language_type = "en"; // default | language_type = "en"; // default | ||||
| if(f_voice == NULL) | if(f_voice == NULL) | ||||
| language_type = voicename; | language_type = voicename; | ||||
| } | } | ||||
| if(first_voice == NULL) | |||||
| { | |||||
| first_voice = ReadVoiceFile(f_voice,buf+strlen(path_voices),voicename); | |||||
| rewind(f_voice); | |||||
| } | |||||
| if(!tone_only && (translator != NULL)) | if(!tone_only && (translator != NULL)) | ||||
| { | { | ||||
| delete translator; | delete translator; |