Internationalization of Windows espeak and espeakedit installers. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@54 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -1,4 +1,4 @@ | |||
| //maintainer: Willem van der Walt | |||
| //maintainer: Willem van der Walt | |||
| // email: [email protected] | |||
| // tel: +27 12 8413996 | |||
| // Meraka Institute, CSIR | |||
| @@ -91,6 +91,7 @@ brittanje $2 | |||
| ceylon s@lOn | |||
| china S'ina | |||
| engeland 'EN@lant | |||
| kanada kanad%a | |||
| kongo kONgu | |||
| mesopotamië mEsuput'A:mi@ | |||
| mosambiek musamb'ik | |||
| @@ -116,6 +117,7 @@ bothma bOtma | |||
| breytenbach breIt@nbax2 | |||
| carl kA:r@L | |||
| charles _^_EN | |||
| chopin S%OpA~ | |||
| chris krIs | |||
| christo krIstu | |||
| christian krIstian | |||
| @@ -137,6 +139,8 @@ george _^_EN | |||
| gerhard x2&rart | |||
| grange x2rA:nsi | |||
| gustav gustaf | |||
| haydn hAId@n | |||
| helena hil'e@na | |||
| jacobus jako@bWs | |||
| jacques ZA:k | |||
| jane _^_EN | |||
| @@ -144,6 +148,7 @@ jean ZA~n | |||
| jesus ji:sWs | |||
| joey dZ@Ui | |||
| john _^_EN | |||
| lategan lA:t@x2an | |||
| le l@ | |||
| leandra li'andra | |||
| leroux l@ru | |||
| @@ -155,10 +160,12 @@ louw l'@U | |||
| maria mar'ia | |||
| martin m'A:rt@n | |||
| michiel $2 | |||
| mostert m'Ost@rt | |||
| mostert m'Ost@rt | |||
| mozart mo@tsart | |||
| natasha n%at'aSa | |||
| paul p@Ul | |||
| paulus p@UlWs | |||
| philip fIl@p | |||
| pierre p'e@r | |||
| petrus pe@trWs | |||
| phoebe fi:bi | |||
| @@ -171,6 +178,7 @@ schalk sk'alk | |||
| scheepers ske@p@rs | |||
| schoor sko@r | |||
| shakespeare _^_EN | |||
| tania tanja | |||
| terblanche t@rblA:nS | |||
| theron tr'On | |||
| viljoen $2 | |||
| @@ -235,6 +243,7 @@ omdat $pause | |||
| sodat $pause | |||
| voordat $pause | |||
| nadat $pause | |||
| ofskoon $2 $pause | |||
| totdat tOdat $pause | |||
| as ,as $pause | |||
| soos $pause | |||
| @@ -334,7 +343,7 @@ bv beIf'o@rbe@lt | |||
| aanbid $2 | |||
| aanstaande $2 | |||
| agenda ax2'Enda | |||
| aikôna %aik'O:na | |||
| algaande $2 | |||
| algehele alx2@h,e@l@ | |||
| alles al@s | |||
| alternatiewe $4 | |||
| @@ -358,7 +367,6 @@ betekenis b@te@k@n@s | |||
| bewe be@v@ | |||
| bewend be@v@nt | |||
| bewering b@ve@rIN | |||
| biblioteek $4 | |||
| bostaande b'o@stA:nd@ | |||
| dadelik dA:d@lIk | |||
| @@ -401,12 +409,12 @@ gomorra x2@mOra | |||
| hallo h'Il,@U | |||
| hanteer $2 | |||
| hardop hart?Op | |||
| heeltemal he@lt@mal | |||
| heengaan he@nx2A:n | |||
| hek h&k | |||
| hekke h&k@ | |||
| helaas he@l'A:s | |||
| hele he@l@ | |||
| here he@r@ | |||
| hoewel huv'&l | |||
| hoofsaaklik $2 | |||
| @@ -416,8 +424,8 @@ idee $2 | |||
| ietwat itvat | |||
| ignoreer ix2no@r'e@r | |||
| inagneming @nax2ne@m@N | |||
| inderdaad @nd@rd'A:t | |||
| ingang Inx2aN | |||
| inkluis $2 | |||
| intens @nt'Ens | |||
| intensiteit $4 | |||
| @@ -435,6 +443,7 @@ krediet kr@dit | |||
| kritiek krIt'ik | |||
| kultuur $2 | |||
| kunsmatige kWnsm'A:t@x2@ | |||
| kwansuis $2 | |||
| latere l'A:t@r@ | |||
| lekker l&k@r | |||
| @@ -472,7 +481,7 @@ numeri nWm@ri | |||
| omtrent Omtr'Ent | |||
| onbegrip $1 | |||
| onderstebo On@rst@b,o@ | |||
| onderweg $3 | |||
| onderwyser $3 | |||
| ongeag $1 | |||
| ongeduld $1 | |||
| @@ -491,6 +500,8 @@ onraad $1 | |||
| onrus $1 | |||
| oorkom $2 | |||
| oorleef $2 | |||
| oorsee $2 | |||
| oorsese $2 | |||
| oorspronklike $2 | |||
| oranje $2 | |||
| @@ -517,10 +528,8 @@ sobere s'o@b@r@ | |||
| sombere s'Omb@r@ | |||
| sodra so@dr'A: | |||
| sogenaamde s'o@x2@n,A:md@ | |||
| soldaat $2 | |||
| soldate $2 | |||
| sononder sOn,On@r | |||
| sonop sOn,Op | |||
| sononder sOn_On@r | |||
| sonop sOn_Op | |||
| sover so@f&r | |||
| spesmaas $2 | |||
| stabiel stab'il | |||
| @@ -542,11 +551,7 @@ uiteindelik $2 | |||
| vaarwel fA:rv'&l | |||
| vanaf fanaf | |||
| vandag $2 | |||
| vandaan $2 | |||
| vanjaar $2 | |||
| vanoggend fan'Ox2@nt | |||
| vanuit fan'Yyt | |||
| vandat $1 | |||
| veraf f&r_af | |||
| verafgeleë f&rafx2@le@@ | |||
| verantwoordelikheid f@rantv'o@rd@l@keIt | |||
| @@ -571,6 +576,7 @@ voorgee fo@rx2e@ | |||
| voorkom $2 | |||
| voormalige fo@rm'A:l@x2@ | |||
| voorsien $2 | |||
| vorendag $3 | |||
| vorige fo@r@x2@ | |||
| vrek fr&k | |||
| @@ -5,15 +5,51 @@ | |||
| // 1. Change ['i:] to [=I@] at end of word | |||
| // Letters | |||
| //======== | |||
| // Characters | |||
| //=========== | |||
| // If a letter has a "word" pronunciation which is different from its | |||
| // "letter" name, then include the letter name here, with the letter | |||
| // prefixed by a _ character. | |||
| // Include a _ before a character if it's name should only be | |||
| // spoken when "speak punctuation" option is on. | |||
| _. pUnkt | |||
| _, kOma | |||
| € OY*o: | |||
| £ paUnd | |||
| % p@-*o:ts'Ent | |||
| & Unt | |||
| @ kl'ame:*,af@ | |||
| # nUm3 | |||
| + plUs | |||
| = glaIC | |||
| ~ tIld@ | |||
| \ bEkslES | |||
| _| paIp | |||
| _: d'Op@lp,UNkt | |||
| _; St@-*'ICpUNkt | |||
| __ ,Unt3St@-*'IC | |||
| _- b'IndEst@-*,IC | |||
| _! 'aUs_|@-*,u:fe:ts,aIC@n | |||
| _? f@-*'Age:ts,aIC@n | |||
| _' 'apOst@-*,Of | |||
| _" 'anf,y:*UNsts,aIC@n | |||
| _/ S@-*'Egst@-*IC | |||
| _( kl'am3||_|'aUf | |||
| _) kl'am3||ts'u: | |||
| _{ g@Sv'aIft@kl'am3||_|'aUf | |||
| _} g@Sv'aIft@kl'am3||ts'u: | |||
| _[ 'EkIg@kl'am3||_|'aUf | |||
| _] 'ECIg@kl'am3||ts'u: | |||
| _< klaIn3 | |||
| _> g@-*Ws3 | |||
| _` g@-*A:v | |||
| _^ sI*kUmflEks | |||
| _— g@d'ank@nSt@-*,IC | |||
| // Numbers | |||
| //======== | |||
| @@ -1079,13 +1079,22 @@ | |||
| é e: | |||
| ée 'e: | |||
| é (_ 'e: | |||
| æ E | |||
| ø W | |||
| ç s | |||
| č tS | |||
| š S | |||
| ž Z | |||
| , (D kOma | |||
| / slaS | |||
| % p@-*o:ts'Ent | |||
| $ dOl@ | |||
| € OY*o: | |||
| £ paUnd | |||
| $ dOl'A: | |||
| . pUnkt | |||
| . (. _: | |||
| \.) . | |||
| * StE*n | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| @@ -159,8 +159,8 @@ o: u u: y Y y: Y: | |||
| : b c C d dZ f g | |||
| h j J k l m n N | |||
| n^ p R s S s2 t tS | |||
| ts v z Z | |||
| n^ p R R2 s S s2 t | |||
| tS ts v z Z | |||
| Dictionary it_dict | |||
| @@ -960,6 +960,7 @@ holster hoUlst3 | |||
| holy hoUlI2 | |||
| homepage hoUmpeIdZ | |||
| hominem h0mInEm | |||
| hopi hoUpi: | |||
| horizontal $3 | |||
| hospitable h0sp'It@b@L | |||
| hostage h0stIdZ | |||
| @@ -563,7 +563,7 @@ | |||
| f) all (a al | |||
| f) all (ib al | |||
| _C) all (ow al | |||
| h) all (w O:l | |||
| h) all (C O:l | |||
| sm) all O:l | |||
| st) all O:l | |||
| t) all O:l | |||
| @@ -4227,8 +4227,9 @@ | |||
| _) re (dC rE | |||
| _) re (dr r%i: | |||
| _) re (eduP2 r%i: | |||
| _) re (eqP2 r%i: | |||
| _) re (emP2 r%i: | |||
| _) re (enP2 r%i: | |||
| _) re (eqP2 r%i: | |||
| _) re (exP2 r%i: | |||
| referend rEf@r'End | |||
| re (fug rE | |||
| @@ -179,7 +179,7 @@ mbrola Em'bRola | |||
| mlle mad@mwaz'El | |||
| mme mad'am | |||
| mr m@sj'Y | |||
| p.s pOstkRipt'Om | |||
| p.s pOftkRipt'Om | |||
| ratp 'ER:'a:t'e:p'e | |||
| s.t.p s'il:t'@:pl'E | |||
| s.v.p s'il:v'u:pl'E | |||
| @@ -318,7 +318,8 @@ où $pause | |||
| // auxillary verbs (be, have, can, etc) | |||
| suis $u+ $verb | |||
| est E $u+ | |||
| est Et2 $u+ | |||
| d'est d'Est | |||
| sommes $u+ | |||
| êtes $u+ | |||
| sont $u+ | |||
| @@ -356,8 +357,13 @@ y i:gR'Ek $atend | |||
| scient si | |||
| bénéficient benefisi $verb | |||
| président pRezidA~t2 | |||
| président pRezid'A~ | |||
| président pRezidt2 $verb | |||
| résident Rezid'A~ | |||
| résident Rezidt2 $verb | |||
| évident evid'A~ | |||
| évident evidt2 $verb | |||
| couvent k'uvt2 $verb | |||
| // MAIN WORD DICTIONARY | |||
| @@ -387,6 +393,20 @@ fils fis | |||
| mars maRs | |||
| pays pEi | |||
| pourcent puRs'A~ | |||
| absent abs'A~ | |||
| ardent ard'A~ | |||
| prudent pRyd'A~ | |||
| imprudent E~pRyd'A~ | |||
| discident disid'A~ | |||
| accident aksid'A~ | |||
| occident Oksid'A~ | |||
| l'occident lOksid'A~ | |||
| orient Orj'A~ | |||
| l'orient lOrj'A~ | |||
| secret sYkR'E | |||
| secrets sYkR'E | |||
| sens sA~s | |||
| c'est sEt2 $u | |||
| qu'à ka | |||
| @@ -200,6 +200,7 @@ szamue) ly lli | |||
| A) r (A R | |||
| C) r (A R | |||
| r (C R | |||
| r (ó_ R2 | |||
| rr RR | |||
| _) richa (rd RiCa: | |||
| @@ -515,21 +515,21 @@ _é ,e&g'udU | |||
| a a $atend | |||
| e E $atend // assume letter-e at end of sentence | |||
| o O $atend | |||
| à ,agR'avi $atend | |||
| é ,e||&g'udU $atend | |||
| á ,a||&g'udU | |||
| â ,a||sirkuNfl'EksU | |||
| ã ,atS'iU | |||
| ç s,esed'elj& | |||
| è ,egR'avi | |||
| ê ,e||sirkuNfl'EksU | |||
| í ,i&g'udU | |||
| ó ,o&g'udU | |||
| ô ,o||sirkuNfl'EksU | |||
| õ ,otS'iU | |||
| ú ,u&g'udU | |||
| ü ,utR'em& | |||
| à a $atend | |||
| é E $atend | |||
| _á ,a||&g'udU | |||
| _â ,a||sirkuNfl'EksU | |||
| _ã ,atS'iU | |||
| _ç s,esed'elj& | |||
| _è ,egR'avi | |||
| _ê ,e||sirkuNfl'EksU | |||
| _í ,i&g'udU | |||
| _ó ,o&g'udU | |||
| _ô ,o||sirkuNfl'EksU | |||
| _õ ,otS'iU | |||
| _ú ,u&g'udU | |||
| _ü ,utR'em& | |||
| // some common adjectives and adverbs | |||
| @@ -175,7 +175,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype (u) endtype (u) | |||
| vowel starttype (o) endtype (o) | |||
| length 150 | |||
| formants vowel/uu | |||
| endphoneme | |||
| @@ -54,7 +54,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype (u) endtype (u) | |||
| vowel starttype (o) endtype (o) | |||
| length 150 | |||
| formants vowel/u | |||
| endphoneme | |||
| @@ -99,7 +99,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype (u) endtype (u) | |||
| vowel starttype (o) endtype (o) | |||
| length 150 | |||
| formants vowel/o-_3 | |||
| endphoneme | |||
| @@ -127,7 +127,7 @@ endphoneme | |||
| phoneme U | |||
| vowel starttype (u) endtype (u) | |||
| vowel starttype (o) endtype (o) | |||
| length 150 | |||
| formants vowel/8_2 | |||
| endphoneme | |||
| @@ -8,7 +8,7 @@ endphoneme | |||
| phoneme i: | |||
| vowel starttype (i) endtype (i) | |||
| length 200 | |||
| length 220 | |||
| formants vowel/i | |||
| // linkout ; | |||
| endphoneme | |||
| @@ -27,7 +27,7 @@ endphoneme | |||
| phoneme e: | |||
| vowel starttype (e) endtype (e) | |||
| length 240 | |||
| length 250 | |||
| formants vowel/e_3 | |||
| endphoneme | |||
| @@ -114,7 +114,7 @@ phoneme t // dental variant of /t/ | |||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||
| lengthmod 2 | |||
| wave ustop/t_dnt%50 | |||
| before _ ustop/t_dnt%35 | |||
| before _ ustop/t_dnt%45 | |||
| switchvoicing d | |||
| endphoneme | |||
| @@ -75,7 +75,7 @@ phoneme t | |||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||
| lengthmod 2 | |||
| wave ustop/t_dnt%60 | |||
| before _ ustop/t_dnt%30 | |||
| before _ ustop/t_dnt%35 | |||
| before r ustop/tr | |||
| switchvoicing d | |||
| endphoneme | |||
| @@ -911,7 +911,7 @@ phoneme t[ // dental variant of /t/ | |||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||
| lengthmod 2 | |||
| wave ustop/t_dnt%50 | |||
| before _ ustop/t_dnt%25 | |||
| before _ ustop/t_dnt%35 | |||
| before r ustop/tr | |||
| switchvoicing d[ | |||
| endphoneme | |||
| @@ -1235,5 +1235,8 @@ phonemetable sw base | |||
| include ph_swahili | |||
| //phonemetable f_en base | |||
| //phonemetable basef base | |||
| //include pf | |||
| //phonemetable f_en basef | |||
| //include pf_english | |||
| @@ -139,16 +139,6 @@ extern void VoiceReset(int control); | |||
| CompileInit(); | |||
| exit(0); | |||
| } | |||
| if(strcmp(param,"--lex=ru")==0) | |||
| { | |||
| if(LoadPhData() != 1) | |||
| { | |||
| fprintf(stderr,"Failed to load phoneme data\n"); | |||
| exit(1); | |||
| } | |||
| CompareLexicon(MENU_LEXICON_RU); | |||
| exit(0); | |||
| } | |||
| } | |||
| gui_flag = 1; | |||
| @@ -531,8 +521,8 @@ void MyFrame::OnSpeak(wxCommandEvent& event) | |||
| case MENU_SPEAK_VOICE: | |||
| transldlg->ReadVoice(); | |||
| if(voicedlg != NULL) | |||
| voicedlg->WriteParams(); | |||
| // if(voicedlg != NULL) | |||
| // voicedlg->WriteParams(); | |||
| SetVoiceTitle(voice_name); | |||
| break; | |||
| } | |||
| @@ -86,7 +86,7 @@ class MyChild: public wxMDIChildFrame | |||
| void OnSaveAs(wxCommandEvent& event); | |||
| void OnSaveSelect(wxCommandEvent& event); | |||
| void OnSavePitchenv(wxCommandEvent& event); | |||
| void OnVoiceDlg(wxCommandEvent& event); | |||
| // void OnVoiceDlg(wxCommandEvent& event); | |||
| DECLARE_EVENT_TABLE() | |||
| }; | |||
| @@ -41,8 +41,8 @@ wxMenuBar *MakeMenu(int type) | |||
| // FILE MENU | |||
| file_menu = new wxMenu; | |||
| file_menu->Append(MENU_SPECTRUM, _T("&Open")); | |||
| file_menu->Append(MENU_SPECTRUM2, _T("O&pen2")); | |||
| file_menu->Append(MENU_SPECTRUM, _("&Open")); | |||
| file_menu->Append(MENU_SPECTRUM2, _("O&pen2")); | |||
| // file_menu->Append(MENU_PROSODY, _T("&Prosody window")); | |||
| if(type==0) | |||
| { | |||
| @@ -50,89 +50,89 @@ wxMenuBar *MakeMenu(int type) | |||
| else | |||
| if(type==1) | |||
| { | |||
| file_menu->Append(SPECTSEQ_SAVE, _T("&Save")); | |||
| file_menu->Append(SPECTSEQ_SAVEAS, _T("Save &As")); | |||
| file_menu->Append(SPECTSEQ_SAVESELECT, _T("Save Selection")); | |||
| file_menu->Append(SPECTSEQ_SAVE, _("&Save")); | |||
| file_menu->Append(SPECTSEQ_SAVEAS, _("Save &As")); | |||
| file_menu->Append(SPECTSEQ_SAVESELECT, _("Save Selection")); | |||
| // file_menu->Append(SPECTSEQ_SAVEPITCH, _T("Save Pitch &Envelope")); | |||
| file_menu->Append(SPECTSEQ_CLOSE, _T("&Close")); | |||
| file_menu->Append(SPECTSEQ_CLOSE, _("&Close")); | |||
| // file_menu->Append(MENU_CLOSE_ALL, _T("Close &All")); | |||
| } | |||
| else | |||
| if(type==2) | |||
| { | |||
| file_menu->Append(SPECTSEQ_SAVE, _T("&Save")); | |||
| file_menu->Append(SPECTSEQ_SAVEAS, _T("Save &As")); | |||
| file_menu->Append(SPECTSEQ_SAVE, _("&Save")); | |||
| file_menu->Append(SPECTSEQ_SAVEAS, _("Save &As")); | |||
| // file_menu->Append(SPECTSEQ_SAVEPITCH, _T("Save Pitch &Envelope")); | |||
| file_menu->Append(SPECTSEQ_CLOSE, _T("&Close")); | |||
| file_menu->Append(SPECTSEQ_CLOSE, _("&Close")); | |||
| // file_menu->Append(MENU_CLOSE_ALL, _T("Close &All")); | |||
| } | |||
| file_menu->Append(MENU_QUIT, _T("&Quit")); | |||
| file_menu->Append(MENU_QUIT, _("&Quit")); | |||
| // SPEAK_MENU | |||
| speak_menu = new wxMenu; | |||
| speak_menu->Append(MENU_SPEAK_TRANSLATE, _T("&Translate")); | |||
| speak_menu->Append(MENU_SPEAK_RULES, _T("Show &Rules")); | |||
| speak_menu->Append(MENU_SPEAK_TEXT, _T("&Speak")); | |||
| speak_menu->Append(MENU_SPEAK_TRANSLATE, _("&Translate")); | |||
| speak_menu->Append(MENU_SPEAK_RULES, _("Show &Rules")); | |||
| speak_menu->Append(MENU_SPEAK_TEXT, _("&Speak")); | |||
| speak_menu->AppendSeparator(); | |||
| speak_menu->Append(MENU_SPEAK_FILE, _T("Speak &file")); | |||
| speak_menu->Append(MENU_SPEAK_PAUSE, _T("&Pause")); | |||
| speak_menu->Append(MENU_SPEAK_STOP, _T("St&op")); | |||
| speak_menu->Append(MENU_SPEAK_FILE, _("Speak &file")); | |||
| speak_menu->Append(MENU_SPEAK_PAUSE, _("&Pause")); | |||
| speak_menu->Append(MENU_SPEAK_STOP, _("St&op")); | |||
| // VOICE MENU | |||
| voice_menu = new wxMenu; | |||
| voice_menu->Append(MENU_SPEAK_VOICE, _T("Select &Voice")); | |||
| voice_menu->Append(MENU_SPEAK_VOICE, _("Select &Voice")); | |||
| // DATA MENU | |||
| data_menu = new wxMenu; | |||
| data_menu->Append(MENU_COMPILE_PH, _T("Compile &phoneme data")); | |||
| data_menu->Append(MENU_COMPILE_DICT, _T("Compile &dictionary")); | |||
| data_menu->Append(MENU_COMPILE_MBROLA, _T("Compile &mbrola phonemes list")); | |||
| data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); | |||
| data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); | |||
| data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list")); | |||
| // OPTIONS MENU | |||
| paths_menu = new wxMenu; | |||
| paths_menu->Append(MENU_PATH1, _T("Phoneme data source")); | |||
| paths_menu->Append(MENU_PATH2, _T("Dictionary data source")); | |||
| paths_menu->Append(MENU_PATH3, _T("Synthesized sound WAV file")); | |||
| paths_menu->Append(MENU_PATH1, _("Phoneme data source")); | |||
| paths_menu->Append(MENU_PATH2, _("Dictionary data source")); | |||
| paths_menu->Append(MENU_PATH3, _("Synthesized sound WAV file")); | |||
| speak_menu->AppendSeparator(); | |||
| paths_menu->Append(MENU_PATH4, _T("Voice file to modify formant peaks")); | |||
| paths_menu->Append(MENU_PATH4, _("Voice file to modify formant peaks")); | |||
| option_menu = new wxMenu; | |||
| option_menu->Append(MENU_PATHS, _T("Set &paths"), paths_menu); | |||
| option_menu->Append(MENU_PARAMS, _T("Speed")); | |||
| option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); | |||
| option_menu->Append(MENU_PARAMS, _("Speed")); | |||
| // TOOLS | |||
| vowelchart_menu = new wxMenu; | |||
| vowelchart_menu->Append(MENU_VOWELCHART1, _T("From compiled phoneme data")); | |||
| vowelchart_menu->Append(MENU_VOWELCHART2, _T("From list of formants")); | |||
| vowelchart_menu->Append(MENU_VOWELCHART3, _T("From directory of vowel files")); | |||
| vowelchart_menu->Append(MENU_VOWELCHART1, _("From compiled phoneme data")); | |||
| vowelchart_menu->Append(MENU_VOWELCHART2, _("From list of formants")); | |||
| vowelchart_menu->Append(MENU_VOWELCHART3, _("From directory of vowel files")); | |||
| lexicon_menu = new wxMenu; | |||
| lexicon_menu->Append(MENU_LEXICON_RU, _T("Russian (lexicon.dict)")); | |||
| lexicon_menu->Append(MENU_LEXICON_DE, _T("German")); | |||
| lexicon_menu->Append(MENU_LEXICON_RU, _("Russian (lexicon.dict)")); | |||
| lexicon_menu->Append(MENU_LEXICON_DE, _("German")); | |||
| tools_menu = new wxMenu; | |||
| tools_menu->Append(MENU_VOWELCHART, _T("Make &Vowels Chart"), vowelchart_menu); | |||
| tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu); | |||
| // tools_menu->Append(MENU_LOAD_WAV, _T("Analyse WAV file")); | |||
| tools_menu->Append(MENU_LEXICON, _T("Compare &Lexicon"), lexicon_menu); | |||
| tools_menu->Append(MENU_TO_UTF8, _T("Convert file to &UTF8")); | |||
| tools_menu->Append(MENU_COUNT_WORDS, _T("Count word &frequencies")); | |||
| tools_menu->Append(MENU_TEST , _T("Test (temporary)")); | |||
| tools_menu->Append(MENU_LEXICON, _("Compare &Lexicon"), lexicon_menu); | |||
| tools_menu->Append(MENU_TO_UTF8, _("Convert file to &UTF8")); | |||
| tools_menu->Append(MENU_COUNT_WORDS, _("Count word &frequencies")); | |||
| tools_menu->Append(MENU_TEST , _("Test (temporary)")); | |||
| // tools_menu->Append(MENU_TEST2 , _T("Test2")); | |||
| // HELP MENU | |||
| help_menu = new wxMenu; | |||
| help_menu->Append(MENU_ABOUT, _T("&About")); | |||
| help_menu->Append(MENU_ABOUT, _("&About")); | |||
| wxMenuBar *menu_bar = new wxMenuBar; | |||
| menu_bar->Append(file_menu, _T("&File")); | |||
| menu_bar->Append(speak_menu, _T("&Speak")); | |||
| menu_bar->Append(voice_menu, _T("&Voice")); | |||
| menu_bar->Append(option_menu, _T("&Options")); | |||
| menu_bar->Append(tools_menu, _T("&Tools")); | |||
| menu_bar->Append(data_menu, _T("&Compile")); | |||
| menu_bar->Append(help_menu, _T("&Help")); | |||
| menu_bar->Append(file_menu, _("&File")); | |||
| menu_bar->Append(speak_menu, _("&Speak")); | |||
| menu_bar->Append(voice_menu, _("&Voice")); | |||
| menu_bar->Append(option_menu, _("&Options")); | |||
| menu_bar->Append(tools_menu, _("&Tools")); | |||
| menu_bar->Append(data_menu, _("&Compile")); | |||
| menu_bar->Append(help_menu, _("&Help")); | |||
| return(menu_bar); | |||
| } // end of MakeMenu | |||
| @@ -45,7 +45,6 @@ wxString path_spectload2; | |||
| wxString path_pitches; | |||
| wxString path_wave; | |||
| wxString path_speech; | |||
| wxString path_voices; | |||
| wxString path_phsource; | |||
| wxString path_dictsource; | |||
| wxString path_speaktext; | |||
| @@ -162,7 +161,6 @@ void ConfigInit() | |||
| pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch")); | |||
| pConfig->Read(_T("/wavepath"),&path_wave,wxEmptyString); | |||
| pConfig->Read(_T("/speechpath"),&path_speech,wxEmptyString); | |||
| pConfig->Read(_T("/voicepath"),&path_voices,basedir+_T("/voices")); | |||
| pConfig->Read(_T("/voicename"),&string,wxEmptyString); | |||
| strcpy(voice_name,string.mb_str(wxConvLocal)); | |||
| pConfig->Read(_T("/phsource"),&path_phsource,basedir+_T("/phsource")); | |||
| @@ -189,7 +187,6 @@ void ConfigSave(int exit) | |||
| pConfig->Write(_T("/pitchpath"),path_pitches); | |||
| pConfig->Write(_T("/wavepath"),path_wave); | |||
| pConfig->Write(_T("/speechpath"),path_speech); | |||
| pConfig->Write(_T("/voicepath"),path_voices); | |||
| pConfig->Write(_T("/voicename"),wxString(voice_name,wxConvLocal)); | |||
| pConfig->Write(_T("/phsource"),path_phsource); | |||
| pConfig->Write(_T("/dictsource"),path_dictsource); | |||
| @@ -32,7 +32,6 @@ extern void ConfigSetPaths(); | |||
| extern wxString path_spectload; | |||
| extern wxString path_spectload2; | |||
| extern wxString path_pitches; | |||
| extern wxString path_voices; | |||
| extern wxString path_phsource; | |||
| extern wxString path_dictsource; | |||
| extern wxString path_modifiervoice; | |||
| @@ -85,7 +85,7 @@ | |||
| #define phPLACE 0xf0000 | |||
| #define phPLACE_pla 0x60000 | |||
| #define N_PHONEME_TABS 50 // number of phoneme tables | |||
| #define N_PHONEME_TABS 100 // number of phoneme tables | |||
| #define N_PHONEME_TAB 256 // max phonemes in a phoneme table | |||
| #define N_PHONEME_TAB_NAME 32 // must be multiple of 4 | |||
| @@ -186,6 +186,7 @@ void SetParameter(int parameter, int value, int relative) | |||
| case espeakPITCH: | |||
| if(new_value > 99) new_value = 99; | |||
| if(new_value < 0) new_value = 0; | |||
| embedded_value[EMBED_P] = new_value; | |||
| break; | |||
| @@ -202,7 +202,6 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| static void PitchAdjust(int pitch_adjustment) | |||
| {//========================================== | |||
| int ix, factor; | |||
| extern unsigned char pitch_adjust_tab[100]; | |||
| voice->pitch_base = (voice->pitch_base * pitch_adjust_tab[pitch_adjustment])/128; | |||
| @@ -228,8 +227,16 @@ static void init_path(void) | |||
| HKEY RegKey; | |||
| unsigned long size; | |||
| unsigned long var_type; | |||
| char *env; | |||
| unsigned char buf[100]; | |||
| if((env = getenv("espeak-path")) != NULL) | |||
| { | |||
| sprintf(path_home,"%s/espeak-data",env); | |||
| if(GetFileLength(path_home) == -2) | |||
| return; // an espeak-data directory exists | |||
| } | |||
| buf[0] = 0; | |||
| RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | |||
| size = sizeof(buf); | |||
| @@ -238,6 +245,15 @@ static void init_path(void) | |||
| sprintf(path_home,"%s\\espeak-data",buf); | |||
| #else | |||
| char *env; | |||
| if((env = getenv("ESPEAK-DATA-PATH")) != NULL) | |||
| { | |||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",env); | |||
| if(GetFileLength(path_home) == -2) | |||
| return; // an espeak-data directory exists | |||
| } | |||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); | |||
| if(access(path_home,R_OK) != 0) | |||
| { | |||
| @@ -283,6 +283,7 @@ static void init_path(const char *path) | |||
| HKEY RegKey; | |||
| unsigned long size; | |||
| unsigned long var_type; | |||
| char *env; | |||
| unsigned char buf[100]; | |||
| if(path != NULL) | |||
| @@ -290,6 +291,14 @@ static void init_path(const char *path) | |||
| sprintf(path_home,"%s/espeak-data",path); | |||
| return; | |||
| } | |||
| if((env = getenv("espeak-path")) != NULL) | |||
| { | |||
| sprintf(path_home,"%s/espeak-data",env); | |||
| if(GetFileLength(path_home) == -2) | |||
| return; // an espeak-data directory exists | |||
| } | |||
| buf[0] = 0; | |||
| RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | |||
| size = sizeof(buf); | |||
| @@ -299,12 +308,21 @@ static void init_path(const char *path) | |||
| sprintf(path_home,"%s\\espeak-data",buf); | |||
| #else | |||
| char *env; | |||
| if(path != NULL) | |||
| { | |||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",path); | |||
| return; | |||
| } | |||
| if((env = getenv("ESPEAK-DATA-PATH")) != NULL) | |||
| { | |||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",env); | |||
| if(GetFileLength(path_home) == -2) | |||
| return; // an espeak-data directory exists | |||
| } | |||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); | |||
| if(access(path_home,R_OK) != 0) | |||
| { | |||
| @@ -1007,7 +1007,7 @@ void InitSpectrumDisplay() | |||
| menu_spectdisplay->Append(207,_T("Hide Interpolation CTRL+SHIFT+Q")); | |||
| menu_spectdisplay->Append(205,_T("Zero Peaks CTRL+Z")); | |||
| menu_spectdisplay->Append(210,_T("Toggle Marker"),menu_markers); | |||
| menu_spectdisplay->Append(211,_T("Apply the formant adjustments from current voice")); | |||
| menu_spectdisplay->Append(211,_T("Apply the formant adjustments from a voice file")); | |||
| menu_spectdisplay->AppendSeparator(); | |||
| menu_spectdisplay->Append(208,_T("Play Selected Frame F1")); | |||
| menu_spectdisplay->Append(209,_T("Play All F2")); | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.26.09 20.Jun.07"; | |||
| const char *version_string = "1.26.10 23.Jun.07"; | |||
| const int version_phdata = 0x012601; | |||
| int option_device_number = -1; | |||
| @@ -67,8 +67,6 @@ static voice_t *new_voice=NULL; | |||
| int n_soundicon_tab=0; | |||
| SOUND_ICON soundicon_tab[N_SOUNDICON_TAB]; | |||
| #define RMS1 16 // | |||
| #define RMS2 20 // 16 - 20 | |||
| #define RMS_GLOTTAL1 35 // vowel before glottal stop | |||
| #define RMS_START 28 // 14 - 30 | |||
| @@ -150,6 +150,8 @@ extern unsigned char env_fall[128]; | |||
| extern unsigned char env_rise[128]; | |||
| extern unsigned char env_frise[128]; | |||
| #define MAX_PITCH_VALUE 101 | |||
| extern unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1]; | |||
| // queue of commands for wavegen | |||
| #define WCMD_AMPLITUDE 1 | |||
| @@ -287,7 +287,7 @@ const unsigned short *charsets[N_CHARSETS] = { | |||
| // use this table if vowel is not the last in the word | |||
| static unsigned char length_mods_en[100] = { | |||
| /* a , t s n d z r N <- next */ | |||
| 100,120,100,105, 95,110,110,100, 95, 100, /* a <- next2 */ | |||
| 100,120,100,105,100,110,110,100, 95, 100, /* a <- next2 */ | |||
| 105,120,105,110,125,130,135,115,125, 100, /* , */ | |||
| 105,120, 75,100, 75,105,120, 85, 75, 100, /* t */ | |||
| 105,120, 85,105, 95,115,120,100, 95, 100, /* s */ | |||
| @@ -846,6 +846,8 @@ strcpy(phonemes2,phonemes); | |||
| // if(found || (dictionary_flags2 != 0)) | |||
| // prefix_flags = 1; // ?? this looks wrong | |||
| if((found==0) && (dictionary_flags2 != 0)) | |||
| prefix_flags = 1; | |||
| } | |||
| if(found == 0) | |||
| { | |||
| @@ -188,11 +188,11 @@ void VoiceDlg::OnCommand(wxCommandEvent& event) | |||
| break; | |||
| case VD_LOAD: | |||
| Load(); | |||
| // Load(); | |||
| break; | |||
| case VD_SAVE: | |||
| Save(); | |||
| // Save(); | |||
| break; | |||
| case VD_USEPITCH: | |||
| @@ -260,6 +260,7 @@ void VoiceDlg::OnSpin(wxSpinEvent& event) | |||
| ReadParams(); | |||
| } | |||
| #ifdef deleted | |||
| void VoiceDlg::Save() | |||
| {//================== | |||
| int pk; | |||
| @@ -326,7 +327,7 @@ void VoiceDlg::Load() | |||
| SetSpinCtrl(voicedlg->vd_pitch2,pitch2); | |||
| ReadParams(); | |||
| } // end of VoiceDlg::Load | |||
| #endif | |||
| void VoiceDlg::SetFromSpect(SpectSeq* spect) | |||
| {//========================================= | |||
| @@ -144,7 +144,7 @@ int wcmdq_tail=0; | |||
| // pitch,speed, | |||
| int embedded_default[N_EMBEDDED_VALUES] = {0,50,170,100,50, 0,50, 0,170,0,0,0,0,0}; | |||
| static int embedded_max[N_EMBEDDED_VALUES] = {0,99,360,300,99,99,99, 0,360,0,0,0,0,4}; | |||
| static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,360,300,99,99,99, 0,360,0,0,0,0,4}; | |||
| #define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word | |||
| int current_source_index=0; | |||
| @@ -303,7 +303,7 @@ static unsigned char wavemult[N_WAVEMULT] = { | |||
| // set from y = pow(2,x) * 128, x=-1 to 1 | |||
| unsigned char pitch_adjust_tab[100] = { | |||
| unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = { | |||
| 64, 65, 66, 67, 68, 69, 70, 71, | |||
| 72, 73, 74, 75, 76, 77, 78, 79, | |||
| 80, 81, 82, 83, 84, 86, 87, 88, | |||
| @@ -316,7 +316,7 @@ unsigned char pitch_adjust_tab[100] = { | |||
| 174,176,179,181,184,186,189,191, | |||
| 194,197,199,202,205,208,211,214, | |||
| 217,220,223,226,229,232,236,239, | |||
| 242,246,249,252 }; | |||
| 242,246,249,252, 254,255 }; | |||
| int WavegenFill(int fill_zeros); | |||
| @@ -1440,6 +1440,7 @@ void SetEmbedded(int control, int value) | |||
| int command; | |||
| int ix; | |||
| int factor; | |||
| int pitch_value; | |||
| command = control & 0x1f; | |||
| if((control & 0x60) == 0x60) | |||
| @@ -1462,7 +1463,10 @@ void SetEmbedded(int control, int value) | |||
| case EMBED_P: | |||
| case EMBED_T: | |||
| // adjust formants to give better results for a different voice pitch | |||
| factor = 256 + (25 * (embedded_value[EMBED_P] - 50))/50; | |||
| if((pitch_value = embedded_value[EMBED_P]) > MAX_PITCH_VALUE) | |||
| pitch_value = MAX_PITCH_VALUE; | |||
| factor = 256 + (25 * (pitch_value - 50))/50; | |||
| for(ix=0; ix<=5; ix++) | |||
| { | |||
| wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; | |||
| @@ -1521,6 +1525,7 @@ void SetPitch(int length, unsigned char *env, int pitch1, int pitch2) | |||
| int x; | |||
| int base; | |||
| int range; | |||
| int pitch_value; | |||
| #ifdef LOG_FRAMES | |||
| f_log=fopen("log-espeakedit","a"); | |||
| @@ -1547,7 +1552,12 @@ f_log=NULL; | |||
| pitch2 = x; | |||
| } | |||
| base = (wvoice->pitch_base * pitch_adjust_tab[embedded_value[EMBED_P]])/128; | |||
| if((pitch_value = embedded_value[EMBED_P]) > MAX_PITCH_VALUE) | |||
| pitch_value = MAX_PITCH_VALUE; | |||
| if(pitch_value < 0) | |||
| pitch_value = 0; | |||
| base = (wvoice->pitch_base * pitch_adjust_tab[pitch_value])/128; | |||
| range = (wvoice->pitch_range * embedded_value[EMBED_R])/50; | |||
| // compensate for change in pitch when the range is narrowed or widened | |||
| @@ -2,12 +2,13 @@ | |||
| [Setup] | |||
| AppName=eSpeak | |||
| AppVerName=eSpeak version 1.26 | |||
| AppVerName=eSpeak version 1.26.10 | |||
| DefaultDirName={pf}\eSpeak | |||
| DefaultGroupName=eSpeak | |||
| OutputBaseFilename=setup_espeak | |||
| Compression=lzma | |||
| SolidCompression=yes | |||
| ShowLanguageDialog=auto | |||
| [InstallDelete] | |||
| Type: files; Name: "{app}\espeak.dll" | |||
| @@ -35,6 +36,36 @@ Root: HKLM; Subkey: "Software\Microsoft\Speech\Voices\Tokens\eSpeak_5"; Flags: d | |||
| Root: HKLM; Subkey: "Software\Microsoft\Speech\PhoneConverters\Tokens\eSpeak"; Flags: deletekey uninsdeletekey | |||
| [Languages] | |||
| Name: "en"; MessagesFile: "compiler:Default.isl" | |||
| Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" | |||
| Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" | |||
| Name: "de"; MessagesFile: "compiler:Languages\German.isl" | |||
| Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" | |||
| Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" | |||
| Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" | |||
| Name: "fr"; MessagesFile: "compiler:Languages\French.isl" | |||
| Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" | |||
| Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" | |||
| Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" | |||
| Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" | |||
| Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" | |||
| Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" | |||
| Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" | |||
| Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" | |||
| Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" | |||
| Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" | |||
| [CustomMessages] | |||
| v1=Select which voices to install | |||
| v2=or press Enter to accept defaults | |||
| v3=Enter voice names, eg: (for Portuguese) pt, or with a variant, eg: pt+13 | |||
| pt.v1=Seleccione as vozes que pretende instalar | |||
| pt.v2=ou precione enter para aceitar as predefinidas. | |||
| pt.v3=Introduza os nomes das vozes, ex: (Brazil) pt (ou Portugal) pt-pt, ou com outras características, ex: pt+13 | |||
| [Code] | |||
| var | |||
| @@ -81,6 +112,13 @@ begin | |||
| $41: Result := 'sw'; | |||
| $52: Result := 'cy'; | |||
| end; | |||
| // is there a match on the full language code? | |||
| case language of | |||
| $816: Result := 'pt-pt'; | |||
| $81a: Result := 'sr'; | |||
| $c1a: Result := 'sr'; | |||
| end; | |||
| end; | |||
| @@ -123,6 +161,7 @@ begin | |||
| 'ro': value := $418; | |||
| 'ru': value := $419; | |||
| 'sk': value := $41b; | |||
| 'sr': value := $81a; | |||
| 'sv': value := $41d; | |||
| 'sw': value := $441; | |||
| 'vi': value := $42a; | |||
| @@ -283,10 +322,8 @@ var | |||
| begin | |||
| // Create the language selection page | |||
| lang := ActiveLanguage; | |||
| Page := CreateInputQueryPage(wpSelectDir, | |||
| 'Select which voices to install', 'or press Enter to accept defaults', | |||
| 'Enter voice names, eg: (for Portuguese) pt, or with a variant, eg: pt+13'); | |||
| Page := CreateInputQueryPage(wpSelectDir,CustomMessage('v1'),CustomMessage('v2'),CustomMessage('v3')); | |||
| // Add items (False means it's not a password edit) | |||
| Page.Add('', False); | |||
| Page.Add('', False); | |||
| @@ -1,13 +1,14 @@ | |||
| [Setup] | |||
| AppName=eSpeakEdit | |||
| AppVerName=eSpeakEdit version 1.26 | |||
| AppVerName=eSpeakEdit version 1.26.10 | |||
| DefaultDirName={pf}\eSpeak | |||
| DefaultGroupName=eSpeak | |||
| OutputBaseFilename=setup_espeakedit | |||
| Compression=lzma | |||
| SolidCompression=yes | |||
| DirExistsWarning=no | |||
| ShowLanguageDialog=auto | |||
| [Files] | |||
| Source: "espeakedit.exe"; DestDir: "{app}" | |||
| @@ -18,4 +19,25 @@ Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs | |||
| ;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme | |||
| [Languages] | |||
| Name: "en"; MessagesFile: "compiler:Default.isl" | |||
| Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" | |||
| Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" | |||
| Name: "de"; MessagesFile: "compiler:Languages\German.isl" | |||
| Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" | |||
| Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" | |||
| Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" | |||
| Name: "fr"; MessagesFile: "compiler:Languages\French.isl" | |||
| Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" | |||
| Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" | |||
| Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" | |||
| Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" | |||
| Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" | |||
| Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" | |||
| Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" | |||
| Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" | |||
| Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" | |||
| Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" | |||