| @@ -1,6 +1,10 @@ | |||
| // This file in UTF8 encoded | |||
| // letters | |||
| ch tSe | |||
| ll Ejje | |||
| // numbers | |||
| _0 TE*o | |||
| @@ -24,7 +24,6 @@ | |||
| .group c | |||
| _) c (_ Te | |||
| _) ch (_ tSe | |||
| c k | |||
| c (Y T // ce, ci | |||
| ch tS | |||
| @@ -87,9 +86,8 @@ | |||
| .group l | |||
| _) l (_ Ele | |||
| _) ll (_ Eje | |||
| l l | |||
| ll l^ | |||
| ll jj | |||
| .group m | |||
| @@ -76,12 +76,10 @@ _3 tRw'a | |||
| _4 k'atR | |||
| _5 s'E~c | |||
| _6 s'iz3 | |||
| six siz2 | |||
| _7 s'Et | |||
| _8 'w^it | |||
| _9 n'@f | |||
| _10 d'iz3 | |||
| dix diz2 | |||
| _11 O~z | |||
| _12 d'uz | |||
| _13 tR'Ez | |||
| @@ -89,8 +87,8 @@ _14 kat'ORz | |||
| _15 k'E~z | |||
| _16 s'Ez | |||
| _17 d'is:'Et | |||
| _18 d'is:'w^it | |||
| _19 d'is:n'@f | |||
| _18 d'iz'w^it | |||
| _19 d'izn'@f | |||
| _20 v'E~ | |||
| _21 v'E~te:E~ | |||
| _22 v'E~td'Y | |||
| @@ -117,8 +115,8 @@ _74 swas'A~t:kat'ORz | |||
| _75 swas'A~t:k'E~z | |||
| _76 swas'A~t:s'Ez | |||
| _77 swas'A~t:d'is:'Et | |||
| _78 swas'A~t:d'is:'w^it | |||
| _79 swas'A~t:d'is:n'@f | |||
| _78 swas'A~t:d'iz'w^it | |||
| _79 swas'A~t:d'izn'@f | |||
| _8X k'atR@v'E~ | |||
| _80 k'atR@v'E~z2 | |||
| _9X k'atR@v'E~d'is | |||
| @@ -129,8 +127,8 @@ _94 k'atR@v'E~:kat'ORz | |||
| _95 k'atR@v'E~:k'E~z | |||
| _96 k'atR@v'E~:s'Ez | |||
| _97 k'atR@v'E~:d'is:'Et | |||
| _98 k'atR@v'E~:d'is:'w^it | |||
| _99 k'atR@v'E~:d'is:n'@f | |||
| _98 k'atR@v'E~:d'iz'w^it | |||
| _99 k'atR@v'E~:d'izn'@f | |||
| _0C s'A~ | |||
| _1C0 s'A~t2 | |||
| _0M1 m'il | |||
| @@ -389,7 +387,6 @@ boeufs bY | |||
| bus bys | |||
| choeur kWr | |||
| discident disidA~ | |||
| dix diz3 | |||
| echo Eko | |||
| fils fis | |||
| haillon _|ajO~ | |||
| @@ -404,7 +401,6 @@ pays pEi | |||
| prudent pRydA~ | |||
| secret sYkRE | |||
| secrets sYkREz2 | |||
| six siz3 | |||
| @@ -605,3 +601,4 @@ vincent vE~sA~ | |||
| @@ -730,7 +730,9 @@ | |||
| _au) x (quel // auxquels | |||
| _di) x (_neuf z // liaison: dix-neuf | |||
| _di) x (_ z3 | |||
| _si) x (_neu s // liaison: six-neuf | |||
| _si) x (_ z3 | |||
| di) x (iè z // dixième | |||
| si) x (iè z // sixième | |||
| @@ -30,7 +30,7 @@ | |||
| ru 38 126 | |||
| it 17 118 | |||
| la 21 114 | |||
| es 6 115 | |||
| es 7 115 | |||
| pt 27 131 | |||
| pt_pt 20 131 | |||
| ro 36 139 | |||
| @@ -1049,6 +1049,7 @@ voc/v_ [B] base | |||
| [v2] nl | |||
| [v;] ro | |||
| [v] is | |||
| voc/v2 [v] es | |||
| vocw/dh [D] base | |||
| [D] es | |||
| vocw/Q [Q] base | |||
| @@ -1061,6 +1062,7 @@ vocw/v [B] base | |||
| [v] base | |||
| [v] fr | |||
| [v] ta | |||
| [v] es | |||
| [v;] ro | |||
| vocw/zh [Z] base | |||
| [Z;] ro | |||
| @@ -55,3 +55,14 @@ phoneme s | |||
| switchvoicing z | |||
| endphoneme | |||
| phoneme v | |||
| vcd lbd frc | |||
| vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 | |||
| lengthmod 6 | |||
| formants voc/v2+vocw/v // shorter | |||
| endphoneme | |||
| @@ -552,7 +552,7 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
| next2 = phoneme_tab[(plist2+2)->phcode]; | |||
| if((insert_ph == 0) && (ph->link_out != 0) && !(ph->phflags && phBEFOREPAUSE) && (((plist2+1)->synthflags & SFLAG_EMBEDDED)==0)) | |||
| if((insert_ph == 0) && (ph->link_out != 0) && !(ph->phflags & phBEFOREPAUSE) && (((plist2+1)->synthflags & SFLAG_EMBEDDED)==0)) | |||
| { | |||
| if(ph->phflags & phAPPENDPH) | |||
| { | |||
| @@ -433,6 +433,8 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
| length = (out_ptr - outbuf)/2; | |||
| count_samples += length; | |||
| event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list | |||
| event_list[event_list_ix].unique_identifier = my_unique_identifier; | |||
| event_list[event_list_ix].user_data = my_user_data; | |||
| count_buffers++; | |||
| if (my_mode==AUDIO_OUTPUT_PLAYBACK) | |||
| @@ -460,6 +462,8 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
| // This ensures that <audio> tag (which causes end-of-clause) is at a sound buffer boundary | |||
| event_list[0].type = espeakEVENT_LIST_TERMINATED; | |||
| event_list[0].unique_identifier = my_unique_identifier; | |||
| event_list[0].user_data = my_user_data; | |||
| if(SpeakNextClause(NULL,NULL,1)==0) | |||
| { | |||
| @@ -430,7 +430,10 @@ int MbrolaSynth(char *p_mbrola) | |||
| out_ptr = outbuf + len*2; | |||
| if(event_list) | |||
| { | |||
| event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list | |||
| event_list[event_list_ix].user_data = 0; | |||
| } | |||
| count_samples += len; | |||
| finished = synth_callback((short *)outbuf, len, event_list); | |||
| event_list_ix=0; | |||
| @@ -475,7 +478,10 @@ int MbrolaSynth(char *p_mbrola) | |||
| out_ptr += (len*2); | |||
| if(event_list) | |||
| { | |||
| event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list | |||
| event_list[event_list_ix].user_data = 0; | |||
| } | |||
| count_samples += len; | |||
| finished = synth_callback((short *)outbuf, len, event_list); | |||
| event_list_ix=0; | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.30.10 13.Jan.08"; | |||
| const char *version_string = "1.30.11 13.Jan.08"; | |||
| const int version_phdata = 0x013010; | |||
| int option_device_number = -1; | |||
| @@ -502,6 +502,8 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| { | |||
| // synchronous-playback mode, allow the calling process to abort the speech | |||
| event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list | |||
| event_list[event_list_ix].user_data = 0; | |||
| if(synth_callback(NULL,0,event_list) == 1) | |||
| { | |||
| SpeakNextClause(NULL,NULL,2); // stop speaking | |||