Internationalization of Windows espeak and espeakedit installers. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@54 d46cf337-b52f-0410-862d-fd96e6ae7743master
| //maintainer: Willem van der Walt | |||||
| //maintainer: Willem van der Walt | |||||
| // email: [email protected] | // email: [email protected] | ||||
| // tel: +27 12 8413996 | // tel: +27 12 8413996 | ||||
| // Meraka Institute, CSIR | // Meraka Institute, CSIR | ||||
| ceylon s@lOn | ceylon s@lOn | ||||
| china S'ina | china S'ina | ||||
| engeland 'EN@lant | engeland 'EN@lant | ||||
| kanada kanad%a | |||||
| kongo kONgu | kongo kONgu | ||||
| mesopotamië mEsuput'A:mi@ | mesopotamië mEsuput'A:mi@ | ||||
| mosambiek musamb'ik | mosambiek musamb'ik | ||||
| breytenbach breIt@nbax2 | breytenbach breIt@nbax2 | ||||
| carl kA:r@L | carl kA:r@L | ||||
| charles _^_EN | charles _^_EN | ||||
| chopin S%OpA~ | |||||
| chris krIs | chris krIs | ||||
| christo krIstu | christo krIstu | ||||
| christian krIstian | christian krIstian | ||||
| gerhard x2&rart | gerhard x2&rart | ||||
| grange x2rA:nsi | grange x2rA:nsi | ||||
| gustav gustaf | gustav gustaf | ||||
| haydn hAId@n | |||||
| helena hil'e@na | |||||
| jacobus jako@bWs | jacobus jako@bWs | ||||
| jacques ZA:k | jacques ZA:k | ||||
| jane _^_EN | jane _^_EN | ||||
| jesus ji:sWs | jesus ji:sWs | ||||
| joey dZ@Ui | joey dZ@Ui | ||||
| john _^_EN | john _^_EN | ||||
| lategan lA:t@x2an | |||||
| le l@ | le l@ | ||||
| leandra li'andra | leandra li'andra | ||||
| leroux l@ru | leroux l@ru | ||||
| maria mar'ia | maria mar'ia | ||||
| martin m'A:rt@n | martin m'A:rt@n | ||||
| michiel $2 | michiel $2 | ||||
| mostert m'Ost@rt | |||||
| mostert m'Ost@rt | |||||
| mozart mo@tsart | |||||
| natasha n%at'aSa | natasha n%at'aSa | ||||
| paul p@Ul | paul p@Ul | ||||
| paulus p@UlWs | paulus p@UlWs | ||||
| philip fIl@p | |||||
| pierre p'e@r | pierre p'e@r | ||||
| petrus pe@trWs | petrus pe@trWs | ||||
| phoebe fi:bi | phoebe fi:bi | ||||
| scheepers ske@p@rs | scheepers ske@p@rs | ||||
| schoor sko@r | schoor sko@r | ||||
| shakespeare _^_EN | shakespeare _^_EN | ||||
| tania tanja | |||||
| terblanche t@rblA:nS | terblanche t@rblA:nS | ||||
| theron tr'On | theron tr'On | ||||
| viljoen $2 | viljoen $2 | ||||
| sodat $pause | sodat $pause | ||||
| voordat $pause | voordat $pause | ||||
| nadat $pause | nadat $pause | ||||
| ofskoon $2 $pause | |||||
| totdat tOdat $pause | totdat tOdat $pause | ||||
| as ,as $pause | as ,as $pause | ||||
| soos $pause | soos $pause | ||||
| aanbid $2 | aanbid $2 | ||||
| aanstaande $2 | aanstaande $2 | ||||
| agenda ax2'Enda | agenda ax2'Enda | ||||
| aikôna %aik'O:na | |||||
| algaande $2 | |||||
| algehele alx2@h,e@l@ | algehele alx2@h,e@l@ | ||||
| alles al@s | alles al@s | ||||
| alternatiewe $4 | alternatiewe $4 | ||||
| bewe be@v@ | bewe be@v@ | ||||
| bewend be@v@nt | bewend be@v@nt | ||||
| bewering b@ve@rIN | bewering b@ve@rIN | ||||
| biblioteek $4 | |||||
| bostaande b'o@stA:nd@ | bostaande b'o@stA:nd@ | ||||
| dadelik dA:d@lIk | dadelik dA:d@lIk | ||||
| hallo h'Il,@U | hallo h'Il,@U | ||||
| hanteer $2 | hanteer $2 | ||||
| hardop hart?Op | |||||
| heeltemal he@lt@mal | heeltemal he@lt@mal | ||||
| heengaan he@nx2A:n | heengaan he@nx2A:n | ||||
| hek h&k | hek h&k | ||||
| hekke h&k@ | hekke h&k@ | ||||
| helaas he@l'A:s | helaas he@l'A:s | ||||
| hele he@l@ | |||||
| here he@r@ | here he@r@ | ||||
| hoewel huv'&l | hoewel huv'&l | ||||
| hoofsaaklik $2 | hoofsaaklik $2 | ||||
| ietwat itvat | ietwat itvat | ||||
| ignoreer ix2no@r'e@r | ignoreer ix2no@r'e@r | ||||
| inagneming @nax2ne@m@N | inagneming @nax2ne@m@N | ||||
| inderdaad @nd@rd'A:t | |||||
| ingang Inx2aN | ingang Inx2aN | ||||
| inkluis $2 | |||||
| intens @nt'Ens | intens @nt'Ens | ||||
| intensiteit $4 | intensiteit $4 | ||||
| kritiek krIt'ik | kritiek krIt'ik | ||||
| kultuur $2 | kultuur $2 | ||||
| kunsmatige kWnsm'A:t@x2@ | kunsmatige kWnsm'A:t@x2@ | ||||
| kwansuis $2 | |||||
| latere l'A:t@r@ | latere l'A:t@r@ | ||||
| lekker l&k@r | lekker l&k@r | ||||
| omtrent Omtr'Ent | omtrent Omtr'Ent | ||||
| onbegrip $1 | onbegrip $1 | ||||
| onderstebo On@rst@b,o@ | |||||
| onderweg $3 | |||||
| onderwyser $3 | onderwyser $3 | ||||
| ongeag $1 | ongeag $1 | ||||
| ongeduld $1 | ongeduld $1 | ||||
| onrus $1 | onrus $1 | ||||
| oorkom $2 | oorkom $2 | ||||
| oorleef $2 | oorleef $2 | ||||
| oorsee $2 | |||||
| oorsese $2 | |||||
| oorspronklike $2 | oorspronklike $2 | ||||
| oranje $2 | oranje $2 | ||||
| sombere s'Omb@r@ | sombere s'Omb@r@ | ||||
| sodra so@dr'A: | sodra so@dr'A: | ||||
| sogenaamde s'o@x2@n,A:md@ | 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 | sover so@f&r | ||||
| spesmaas $2 | spesmaas $2 | ||||
| stabiel stab'il | stabiel stab'il | ||||
| vaarwel fA:rv'&l | vaarwel fA:rv'&l | ||||
| vanaf fanaf | vanaf fanaf | ||||
| vandag $2 | |||||
| vandaan $2 | |||||
| vanjaar $2 | |||||
| vanoggend fan'Ox2@nt | |||||
| vanuit fan'Yyt | |||||
| vandat $1 | |||||
| veraf f&r_af | veraf f&r_af | ||||
| verafgeleë f&rafx2@le@@ | verafgeleë f&rafx2@le@@ | ||||
| verantwoordelikheid f@rantv'o@rd@l@keIt | verantwoordelikheid f@rantv'o@rd@l@keIt | ||||
| voorkom $2 | voorkom $2 | ||||
| voormalige fo@rm'A:l@x2@ | voormalige fo@rm'A:l@x2@ | ||||
| voorsien $2 | voorsien $2 | ||||
| vorendag $3 | |||||
| vorige fo@r@x2@ | vorige fo@r@x2@ | ||||
| vrek fr&k | vrek fr&k | ||||
| // 1. Change ['i:] to [=I@] at end of word | // 1. Change ['i:] to [=I@] at end of word | ||||
| // Letters | |||||
| //======== | |||||
| // Characters | |||||
| //=========== | |||||
| // If a letter has a "word" pronunciation which is different from its | // If a letter has a "word" pronunciation which is different from its | ||||
| // "letter" name, then include the letter name here, with the letter | // "letter" name, then include the letter name here, with the letter | ||||
| // prefixed by a _ character. | // prefixed by a _ character. | ||||
| // Include a _ before a character if it's name should only be | |||||
| // spoken when "speak punctuation" option is on. | |||||
| _. pUnkt | _. pUnkt | ||||
| _, kOma | _, 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 | // Numbers | ||||
| //======== | //======== |
| é e: | é e: | ||||
| ée 'e: | ée 'e: | ||||
| é (_ 'e: | é (_ 'e: | ||||
| æ E | |||||
| ø W | |||||
| ç s | |||||
| č tS | |||||
| š S | |||||
| ž Z | |||||
| , (D kOma | , (D kOma | ||||
| / slaS | |||||
| % p@-*o:ts'Ent | |||||
| $ dOl@ | |||||
| € OY*o: | |||||
| £ paUnd | |||||
| $ dOl'A: | |||||
| . pUnkt | . pUnkt | ||||
| . (. _: | . (. _: | ||||
| \.) . | \.) . | ||||
| * StE*n | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: | |||||
| : b c C d dZ f g | : b c C d dZ f g | ||||
| h j J k l m n N | 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 | Dictionary it_dict |
| holy hoUlI2 | holy hoUlI2 | ||||
| homepage hoUmpeIdZ | homepage hoUmpeIdZ | ||||
| hominem h0mInEm | hominem h0mInEm | ||||
| hopi hoUpi: | |||||
| horizontal $3 | horizontal $3 | ||||
| hospitable h0sp'It@b@L | hospitable h0sp'It@b@L | ||||
| hostage h0stIdZ | hostage h0stIdZ |
| f) all (a al | f) all (a al | ||||
| f) all (ib al | f) all (ib al | ||||
| _C) all (ow al | _C) all (ow al | ||||
| h) all (w O:l | |||||
| h) all (C O:l | |||||
| sm) all O:l | sm) all O:l | ||||
| st) all O:l | st) all O:l | ||||
| t) all O:l | t) all O:l | ||||
| _) re (dC rE | _) re (dC rE | ||||
| _) re (dr r%i: | _) re (dr r%i: | ||||
| _) re (eduP2 r%i: | _) re (eduP2 r%i: | ||||
| _) re (eqP2 r%i: | |||||
| _) re (emP2 r%i: | |||||
| _) re (enP2 r%i: | _) re (enP2 r%i: | ||||
| _) re (eqP2 r%i: | |||||
| _) re (exP2 r%i: | _) re (exP2 r%i: | ||||
| referend rEf@r'End | referend rEf@r'End | ||||
| re (fug rE | re (fug rE |
| mlle mad@mwaz'El | mlle mad@mwaz'El | ||||
| mme mad'am | mme mad'am | ||||
| mr m@sj'Y | mr m@sj'Y | ||||
| p.s pOstkRipt'Om | |||||
| p.s pOftkRipt'Om | |||||
| ratp 'ER:'a:t'e:p'e | ratp 'ER:'a:t'e:p'e | ||||
| s.t.p s'il:t'@:pl'E | s.t.p s'il:t'@:pl'E | ||||
| s.v.p s'il:v'u:pl'E | s.v.p s'il:v'u:pl'E | ||||
| // auxillary verbs (be, have, can, etc) | // auxillary verbs (be, have, can, etc) | ||||
| suis $u+ $verb | suis $u+ $verb | ||||
| est E $u+ | |||||
| est Et2 $u+ | |||||
| d'est d'Est | |||||
| sommes $u+ | sommes $u+ | ||||
| êtes $u+ | êtes $u+ | ||||
| sont $u+ | sont $u+ | ||||
| scient si | scient si | ||||
| bénéficient benefisi $verb | bénéficient benefisi $verb | ||||
| président pRezidA~t2 | |||||
| président pRezid'A~ | |||||
| président pRezidt2 $verb | 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 | // MAIN WORD DICTIONARY | ||||
| mars maRs | mars maRs | ||||
| pays pEi | pays pEi | ||||
| pourcent puRs'A~ | 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 | sens sA~s | ||||
| c'est sEt2 $u | c'est sEt2 $u | ||||
| qu'à ka | qu'à ka |
| A) r (A R | A) r (A R | ||||
| C) r (A R | C) r (A R | ||||
| r (C R | r (C R | ||||
| r (ó_ R2 | |||||
| rr RR | rr RR | ||||
| _) richa (rd RiCa: | _) richa (rd RiCa: |
| a a $atend | a a $atend | ||||
| e E $atend // assume letter-e at end of sentence | e E $atend // assume letter-e at end of sentence | ||||
| o O $atend | 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 | // some common adjectives and adverbs |
| phoneme U | phoneme U | ||||
| vowel starttype (u) endtype (u) | |||||
| vowel starttype (o) endtype (o) | |||||
| length 150 | length 150 | ||||
| formants vowel/uu | formants vowel/uu | ||||
| endphoneme | endphoneme |
| phoneme U | phoneme U | ||||
| vowel starttype (u) endtype (u) | |||||
| vowel starttype (o) endtype (o) | |||||
| length 150 | length 150 | ||||
| formants vowel/u | formants vowel/u | ||||
| endphoneme | endphoneme |
| phoneme U | phoneme U | ||||
| vowel starttype (u) endtype (u) | |||||
| vowel starttype (o) endtype (o) | |||||
| length 150 | length 150 | ||||
| formants vowel/o-_3 | formants vowel/o-_3 | ||||
| endphoneme | endphoneme |
| phoneme U | phoneme U | ||||
| vowel starttype (u) endtype (u) | |||||
| vowel starttype (o) endtype (o) | |||||
| length 150 | length 150 | ||||
| formants vowel/8_2 | formants vowel/8_2 | ||||
| endphoneme | endphoneme |
| phoneme i: | phoneme i: | ||||
| vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
| length 200 | |||||
| length 220 | |||||
| formants vowel/i | formants vowel/i | ||||
| // linkout ; | // linkout ; | ||||
| endphoneme | endphoneme | ||||
| phoneme e: | phoneme e: | ||||
| vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
| length 240 | |||||
| length 250 | |||||
| formants vowel/e_3 | formants vowel/e_3 | ||||
| endphoneme | endphoneme | ||||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t_dnt%50 | wave ustop/t_dnt%50 | ||||
| before _ ustop/t_dnt%35 | |||||
| before _ ustop/t_dnt%45 | |||||
| switchvoicing d | switchvoicing d | ||||
| endphoneme | endphoneme | ||||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t_dnt%60 | wave ustop/t_dnt%60 | ||||
| before _ ustop/t_dnt%30 | |||||
| before _ ustop/t_dnt%35 | |||||
| before r ustop/tr | before r ustop/tr | ||||
| switchvoicing d | switchvoicing d | ||||
| endphoneme | endphoneme |
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t_dnt%50 | wave ustop/t_dnt%50 | ||||
| before _ ustop/t_dnt%25 | |||||
| before _ ustop/t_dnt%35 | |||||
| before r ustop/tr | before r ustop/tr | ||||
| switchvoicing d[ | switchvoicing d[ | ||||
| endphoneme | endphoneme | ||||
| include ph_swahili | include ph_swahili | ||||
| //phonemetable f_en base | |||||
| //phonemetable basef base | |||||
| //include pf | |||||
| //phonemetable f_en basef | |||||
| //include pf_english | //include pf_english |
| CompileInit(); | CompileInit(); | ||||
| exit(0); | 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; | gui_flag = 1; | ||||
| case MENU_SPEAK_VOICE: | case MENU_SPEAK_VOICE: | ||||
| transldlg->ReadVoice(); | transldlg->ReadVoice(); | ||||
| if(voicedlg != NULL) | |||||
| voicedlg->WriteParams(); | |||||
| // if(voicedlg != NULL) | |||||
| // voicedlg->WriteParams(); | |||||
| SetVoiceTitle(voice_name); | SetVoiceTitle(voice_name); | ||||
| break; | break; | ||||
| } | } |
| void OnSaveAs(wxCommandEvent& event); | void OnSaveAs(wxCommandEvent& event); | ||||
| void OnSaveSelect(wxCommandEvent& event); | void OnSaveSelect(wxCommandEvent& event); | ||||
| void OnSavePitchenv(wxCommandEvent& event); | void OnSavePitchenv(wxCommandEvent& event); | ||||
| void OnVoiceDlg(wxCommandEvent& event); | |||||
| // void OnVoiceDlg(wxCommandEvent& event); | |||||
| DECLARE_EVENT_TABLE() | DECLARE_EVENT_TABLE() | ||||
| }; | }; |
| // FILE MENU | // FILE MENU | ||||
| file_menu = new wxMenu; | 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")); | // file_menu->Append(MENU_PROSODY, _T("&Prosody window")); | ||||
| if(type==0) | if(type==0) | ||||
| { | { | ||||
| else | else | ||||
| if(type==1) | 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_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_CLOSE_ALL, _T("Close &All")); | ||||
| } | } | ||||
| else | else | ||||
| if(type==2) | 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_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_CLOSE_ALL, _T("Close &All")); | ||||
| } | } | ||||
| file_menu->Append(MENU_QUIT, _T("&Quit")); | |||||
| file_menu->Append(MENU_QUIT, _("&Quit")); | |||||
| // SPEAK_MENU | // SPEAK_MENU | ||||
| speak_menu = new wxMenu; | 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->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 | ||||
| voice_menu = new wxMenu; | 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 | ||||
| data_menu = new wxMenu; | 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 | // OPTIONS MENU | ||||
| paths_menu = new wxMenu; | 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(); | 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 = 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 | // TOOLS | ||||
| vowelchart_menu = new wxMenu; | 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 = 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 = 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_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")); | // tools_menu->Append(MENU_TEST2 , _T("Test2")); | ||||
| // HELP MENU | // HELP MENU | ||||
| help_menu = new wxMenu; | help_menu = new wxMenu; | ||||
| help_menu->Append(MENU_ABOUT, _T("&About")); | |||||
| help_menu->Append(MENU_ABOUT, _("&About")); | |||||
| wxMenuBar *menu_bar = new wxMenuBar; | 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); | return(menu_bar); | ||||
| } // end of MakeMenu | } // end of MakeMenu |
| wxString path_pitches; | wxString path_pitches; | ||||
| wxString path_wave; | wxString path_wave; | ||||
| wxString path_speech; | wxString path_speech; | ||||
| wxString path_voices; | |||||
| wxString path_phsource; | wxString path_phsource; | ||||
| wxString path_dictsource; | wxString path_dictsource; | ||||
| wxString path_speaktext; | wxString path_speaktext; | ||||
| pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch")); | pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch")); | ||||
| pConfig->Read(_T("/wavepath"),&path_wave,wxEmptyString); | pConfig->Read(_T("/wavepath"),&path_wave,wxEmptyString); | ||||
| pConfig->Read(_T("/speechpath"),&path_speech,wxEmptyString); | pConfig->Read(_T("/speechpath"),&path_speech,wxEmptyString); | ||||
| pConfig->Read(_T("/voicepath"),&path_voices,basedir+_T("/voices")); | |||||
| pConfig->Read(_T("/voicename"),&string,wxEmptyString); | pConfig->Read(_T("/voicename"),&string,wxEmptyString); | ||||
| strcpy(voice_name,string.mb_str(wxConvLocal)); | strcpy(voice_name,string.mb_str(wxConvLocal)); | ||||
| pConfig->Read(_T("/phsource"),&path_phsource,basedir+_T("/phsource")); | pConfig->Read(_T("/phsource"),&path_phsource,basedir+_T("/phsource")); | ||||
| pConfig->Write(_T("/pitchpath"),path_pitches); | pConfig->Write(_T("/pitchpath"),path_pitches); | ||||
| pConfig->Write(_T("/wavepath"),path_wave); | pConfig->Write(_T("/wavepath"),path_wave); | ||||
| pConfig->Write(_T("/speechpath"),path_speech); | pConfig->Write(_T("/speechpath"),path_speech); | ||||
| pConfig->Write(_T("/voicepath"),path_voices); | |||||
| pConfig->Write(_T("/voicename"),wxString(voice_name,wxConvLocal)); | pConfig->Write(_T("/voicename"),wxString(voice_name,wxConvLocal)); | ||||
| pConfig->Write(_T("/phsource"),path_phsource); | pConfig->Write(_T("/phsource"),path_phsource); | ||||
| pConfig->Write(_T("/dictsource"),path_dictsource); | pConfig->Write(_T("/dictsource"),path_dictsource); |
| extern wxString path_spectload; | extern wxString path_spectload; | ||||
| extern wxString path_spectload2; | extern wxString path_spectload2; | ||||
| extern wxString path_pitches; | extern wxString path_pitches; | ||||
| extern wxString path_voices; | |||||
| extern wxString path_phsource; | extern wxString path_phsource; | ||||
| extern wxString path_dictsource; | extern wxString path_dictsource; | ||||
| extern wxString path_modifiervoice; | extern wxString path_modifiervoice; |
| #define phPLACE 0xf0000 | #define phPLACE 0xf0000 | ||||
| #define phPLACE_pla 0x60000 | #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 256 // max phonemes in a phoneme table | ||||
| #define N_PHONEME_TAB_NAME 32 // must be multiple of 4 | #define N_PHONEME_TAB_NAME 32 // must be multiple of 4 | ||||
| case espeakPITCH: | case espeakPITCH: | ||||
| if(new_value > 99) new_value = 99; | if(new_value > 99) new_value = 99; | ||||
| if(new_value < 0) new_value = 0; | |||||
| embedded_value[EMBED_P] = new_value; | embedded_value[EMBED_P] = new_value; | ||||
| break; | break; | ||||
| static void PitchAdjust(int pitch_adjustment) | static void PitchAdjust(int pitch_adjustment) | ||||
| {//========================================== | {//========================================== | ||||
| int ix, factor; | int ix, factor; | ||||
| extern unsigned char pitch_adjust_tab[100]; | |||||
| voice->pitch_base = (voice->pitch_base * pitch_adjust_tab[pitch_adjustment])/128; | voice->pitch_base = (voice->pitch_base * pitch_adjust_tab[pitch_adjustment])/128; | ||||
| HKEY RegKey; | HKEY RegKey; | ||||
| unsigned long size; | unsigned long size; | ||||
| unsigned long var_type; | unsigned long var_type; | ||||
| char *env; | |||||
| unsigned char buf[100]; | 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; | buf[0] = 0; | ||||
| RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | ||||
| size = sizeof(buf); | size = sizeof(buf); | ||||
| sprintf(path_home,"%s\\espeak-data",buf); | sprintf(path_home,"%s\\espeak-data",buf); | ||||
| #else | #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")); | snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); | ||||
| if(access(path_home,R_OK) != 0) | if(access(path_home,R_OK) != 0) | ||||
| { | { |
| HKEY RegKey; | HKEY RegKey; | ||||
| unsigned long size; | unsigned long size; | ||||
| unsigned long var_type; | unsigned long var_type; | ||||
| char *env; | |||||
| unsigned char buf[100]; | unsigned char buf[100]; | ||||
| if(path != NULL) | if(path != NULL) | ||||
| sprintf(path_home,"%s/espeak-data",path); | sprintf(path_home,"%s/espeak-data",path); | ||||
| return; | 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; | buf[0] = 0; | ||||
| RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | ||||
| size = sizeof(buf); | size = sizeof(buf); | ||||
| sprintf(path_home,"%s\\espeak-data",buf); | sprintf(path_home,"%s\\espeak-data",buf); | ||||
| #else | #else | ||||
| char *env; | |||||
| if(path != NULL) | if(path != NULL) | ||||
| { | { | ||||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",path); | snprintf(path_home,sizeof(path_home),"%s/espeak-data",path); | ||||
| return; | 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")); | snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); | ||||
| if(access(path_home,R_OK) != 0) | if(access(path_home,R_OK) != 0) | ||||
| { | { |
| menu_spectdisplay->Append(207,_T("Hide Interpolation CTRL+SHIFT+Q")); | menu_spectdisplay->Append(207,_T("Hide Interpolation CTRL+SHIFT+Q")); | ||||
| menu_spectdisplay->Append(205,_T("Zero Peaks CTRL+Z")); | menu_spectdisplay->Append(205,_T("Zero Peaks CTRL+Z")); | ||||
| menu_spectdisplay->Append(210,_T("Toggle Marker"),menu_markers); | 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->AppendSeparator(); | ||||
| menu_spectdisplay->Append(208,_T("Play Selected Frame F1")); | menu_spectdisplay->Append(208,_T("Play Selected Frame F1")); | ||||
| menu_spectdisplay->Append(209,_T("Play All F2")); | menu_spectdisplay->Append(209,_T("Play All F2")); |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.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; | const int version_phdata = 0x012601; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| int n_soundicon_tab=0; | int n_soundicon_tab=0; | ||||
| SOUND_ICON soundicon_tab[N_SOUNDICON_TAB]; | 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_GLOTTAL1 35 // vowel before glottal stop | ||||
| #define RMS_START 28 // 14 - 30 | #define RMS_START 28 // 14 - 30 | ||||
| extern unsigned char env_rise[128]; | extern unsigned char env_rise[128]; | ||||
| extern unsigned char env_frise[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 | // queue of commands for wavegen | ||||
| #define WCMD_AMPLITUDE 1 | #define WCMD_AMPLITUDE 1 |
| // use this table if vowel is not the last in the word | // use this table if vowel is not the last in the word | ||||
| static unsigned char length_mods_en[100] = { | static unsigned char length_mods_en[100] = { | ||||
| /* a , t s n d z r N <- next */ | /* 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,105,110,125,130,135,115,125, 100, /* , */ | ||||
| 105,120, 75,100, 75,105,120, 85, 75, 100, /* t */ | 105,120, 75,100, 75,105,120, 85, 75, 100, /* t */ | ||||
| 105,120, 85,105, 95,115,120,100, 95, 100, /* s */ | 105,120, 85,105, 95,115,120,100, 95, 100, /* s */ | ||||
| // if(found || (dictionary_flags2 != 0)) | // if(found || (dictionary_flags2 != 0)) | ||||
| // prefix_flags = 1; // ?? this looks wrong | // prefix_flags = 1; // ?? this looks wrong | ||||
| if((found==0) && (dictionary_flags2 != 0)) | |||||
| prefix_flags = 1; | |||||
| } | } | ||||
| if(found == 0) | if(found == 0) | ||||
| { | { |
| break; | break; | ||||
| case VD_LOAD: | case VD_LOAD: | ||||
| Load(); | |||||
| // Load(); | |||||
| break; | break; | ||||
| case VD_SAVE: | case VD_SAVE: | ||||
| Save(); | |||||
| // Save(); | |||||
| break; | break; | ||||
| case VD_USEPITCH: | case VD_USEPITCH: | ||||
| ReadParams(); | ReadParams(); | ||||
| } | } | ||||
| #ifdef deleted | |||||
| void VoiceDlg::Save() | void VoiceDlg::Save() | ||||
| {//================== | {//================== | ||||
| int pk; | int pk; | ||||
| SetSpinCtrl(voicedlg->vd_pitch2,pitch2); | SetSpinCtrl(voicedlg->vd_pitch2,pitch2); | ||||
| ReadParams(); | ReadParams(); | ||||
| } // end of VoiceDlg::Load | } // end of VoiceDlg::Load | ||||
| #endif | |||||
| void VoiceDlg::SetFromSpect(SpectSeq* spect) | void VoiceDlg::SetFromSpect(SpectSeq* spect) | ||||
| {//========================================= | {//========================================= |
| // pitch,speed, | // pitch,speed, | ||||
| int embedded_default[N_EMBEDDED_VALUES] = {0,50,170,100,50, 0,50, 0,170,0,0,0,0,0}; | 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 | #define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word | ||||
| int current_source_index=0; | int current_source_index=0; | ||||
| // set from y = pow(2,x) * 128, x=-1 to 1 | // 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, | 64, 65, 66, 67, 68, 69, 70, 71, | ||||
| 72, 73, 74, 75, 76, 77, 78, 79, | 72, 73, 74, 75, 76, 77, 78, 79, | ||||
| 80, 81, 82, 83, 84, 86, 87, 88, | 80, 81, 82, 83, 84, 86, 87, 88, | ||||
| 174,176,179,181,184,186,189,191, | 174,176,179,181,184,186,189,191, | ||||
| 194,197,199,202,205,208,211,214, | 194,197,199,202,205,208,211,214, | ||||
| 217,220,223,226,229,232,236,239, | 217,220,223,226,229,232,236,239, | ||||
| 242,246,249,252 }; | |||||
| 242,246,249,252, 254,255 }; | |||||
| int WavegenFill(int fill_zeros); | int WavegenFill(int fill_zeros); | ||||
| int command; | int command; | ||||
| int ix; | int ix; | ||||
| int factor; | int factor; | ||||
| int pitch_value; | |||||
| command = control & 0x1f; | command = control & 0x1f; | ||||
| if((control & 0x60) == 0x60) | if((control & 0x60) == 0x60) | ||||
| case EMBED_P: | case EMBED_P: | ||||
| case EMBED_T: | case EMBED_T: | ||||
| // adjust formants to give better results for a different voice pitch | // 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++) | for(ix=0; ix<=5; ix++) | ||||
| { | { | ||||
| wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; | wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; | ||||
| int x; | int x; | ||||
| int base; | int base; | ||||
| int range; | int range; | ||||
| int pitch_value; | |||||
| #ifdef LOG_FRAMES | #ifdef LOG_FRAMES | ||||
| f_log=fopen("log-espeakedit","a"); | f_log=fopen("log-espeakedit","a"); | ||||
| pitch2 = x; | 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; | range = (wvoice->pitch_range * embedded_value[EMBED_R])/50; | ||||
| // compensate for change in pitch when the range is narrowed or widened | // compensate for change in pitch when the range is narrowed or widened |
| [Setup] | [Setup] | ||||
| AppName=eSpeak | AppName=eSpeak | ||||
| AppVerName=eSpeak version 1.26 | |||||
| AppVerName=eSpeak version 1.26.10 | |||||
| DefaultDirName={pf}\eSpeak | DefaultDirName={pf}\eSpeak | ||||
| DefaultGroupName=eSpeak | DefaultGroupName=eSpeak | ||||
| OutputBaseFilename=setup_espeak | OutputBaseFilename=setup_espeak | ||||
| Compression=lzma | Compression=lzma | ||||
| SolidCompression=yes | SolidCompression=yes | ||||
| ShowLanguageDialog=auto | |||||
| [InstallDelete] | [InstallDelete] | ||||
| Type: files; Name: "{app}\espeak.dll" | Type: files; Name: "{app}\espeak.dll" | ||||
| Root: HKLM; Subkey: "Software\Microsoft\Speech\PhoneConverters\Tokens\eSpeak"; Flags: deletekey uninsdeletekey | 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] | [Code] | ||||
| var | var | ||||
| $41: Result := 'sw'; | $41: Result := 'sw'; | ||||
| $52: Result := 'cy'; | $52: Result := 'cy'; | ||||
| end; | 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; | end; | ||||
| 'ro': value := $418; | 'ro': value := $418; | ||||
| 'ru': value := $419; | 'ru': value := $419; | ||||
| 'sk': value := $41b; | 'sk': value := $41b; | ||||
| 'sr': value := $81a; | |||||
| 'sv': value := $41d; | 'sv': value := $41d; | ||||
| 'sw': value := $441; | 'sw': value := $441; | ||||
| 'vi': value := $42a; | 'vi': value := $42a; | ||||
| begin | begin | ||||
| // Create the language selection page | // Create the language selection page | ||||
| lang := ActiveLanguage; | 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) | // Add items (False means it's not a password edit) | ||||
| Page.Add('', False); | Page.Add('', False); | ||||
| Page.Add('', False); | Page.Add('', False); |
| [Setup] | [Setup] | ||||
| AppName=eSpeakEdit | AppName=eSpeakEdit | ||||
| AppVerName=eSpeakEdit version 1.26 | |||||
| AppVerName=eSpeakEdit version 1.26.10 | |||||
| DefaultDirName={pf}\eSpeak | DefaultDirName={pf}\eSpeak | ||||
| DefaultGroupName=eSpeak | DefaultGroupName=eSpeak | ||||
| OutputBaseFilename=setup_espeakedit | OutputBaseFilename=setup_espeakedit | ||||
| Compression=lzma | Compression=lzma | ||||
| SolidCompression=yes | SolidCompression=yes | ||||
| DirExistsWarning=no | DirExistsWarning=no | ||||
| ShowLanguageDialog=auto | |||||
| [Files] | [Files] | ||||
| Source: "espeakedit.exe"; DestDir: "{app}" | Source: "espeakedit.exe"; DestDir: "{app}" | ||||
| ;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme | ;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" | |||||