From 2315736555448d43cf84d5832c68eabbfeb4e980 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 10 Aug 2014 10:48:54 +0000 Subject: [PATCH 1/7] [1.48.10a] Fix: missing updates for mbrola US voices. Fixes for language: ta. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@384 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 2 +- dictsource/en_list | 21 +++++++++++---------- dictsource/en_rules | 6 +++--- dictsource/ta_rules | 2 +- phsource/ph_tamil | 19 ++----------------- src/compiledict.cpp | 21 ++++++++++++++++++--- 6 files changed, 36 insertions(+), 35 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index d7000a0c..3cc8b2ae 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -115,7 +115,7 @@ s S t tS ts v x z Z -Dictionary ta_dict 2014-08-02 +Dictionary ta_dict 2014-08-10 a a: aI aU e E e: i I i: o o: u U u2 u: diff --git a/dictsource/en_list b/dictsource/en_list index aeae8476..09e4ec1b 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -500,16 +500,16 @@ _17 s'Ev@nti:n ?7 _17 s'@v@nti:n _18 'eIti:n _19 n'aInti:n -_2X tw'Ent2i -_3X T'3:ti -?5 _3X T'IRti -_4X f'o@ti -_5X f'Ifti -_6X s'Iksti -_7X s'Ev@nti -?7 _7X s'@v@nti -_8X 'eIti -_9X n'aInti +_2X tw'Ent2i|| +_3X T'3:ti|| +?5 _3X T'IRti|| +_4X f'o@ti|| +_5X f'Ifti|| +_6X s'Iksti|| +_7X s'Ev@nti|| +?7 _7X s'@v@nti|| +_8X 'eIti|| +_9X n'aInti|| _0C h'Vndr@d _0M1 T'aUz@nd @@ -4735,6 +4735,7 @@ Zoë zoUi Acura akjUr@ Advil advIl Allgemeine alg@maIm@ +Andagakavi anda#ga#kka#v%i // a Tamil keyboard Andromeda andr'0mId@ Aquino a#ki:noU Asimov azI#m0f diff --git a/dictsource/en_rules b/dictsource/en_rules index cd132d00..5d6086b7 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -3293,8 +3293,8 @@ _it_separ) ate (_ @t _t) ia i:@ XC) ia (_ i@ &) iac (_ =Iak - &) ian (_S1 n - &) ians (_S2 nz + &) ian (_NS1 n + &) ians (_NS2 nz C) iar aI3 ?8 C) iar aIa# @@ -4842,7 +4842,7 @@ multip) ly laI ?!3 _h) or (o 0r orr (_ o@ or (r 0 -?3 or (r O: +?3 or (r O@ bb) or (n 3 f) oreign 0r@n f) or (ever 3 diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 0e4a3500..2ab35568 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -3966,6 +3966,7 @@ _பெனசீர்_) ப (ுட்டோ b //sort + _மனோ) ப்ப (ல bbV _குங்) ப fV# _நீர்) ப pV# _ப்ரூ) ப fV# @@ -4756,7 +4757,6 @@ _கூட்டு) ப்பி (ரார்த்தனை pp _வடை) ப்பி (ரிய pp _கஜ) ப்ப (ிருஷ்ட bb L03) ப்பி (ரேத pp - L03) ப்பி (ரேத pp L03) ப்பி (ரேரணை pp _ஹ) ப்ப (ிள bb _க்ள) ப்ப (ுகள bb diff --git a/phsource/ph_tamil b/phsource/ph_tamil index 33317f7e..e12d9775 100644 --- a/phsource/ph_tamil +++ b/phsource/ph_tamil @@ -165,22 +165,7 @@ phoneme z. endphoneme phoneme r - liquid rhotic - lengthmod 3 - - IF thisPh(isWordEnd) THEN - CALL base/r/ - ENDIF - - IF prevPhW(isVowel) THEN - IF nextPhW(isNotVowel) THEN - ChangePhoneme(**) - ENDIF - - ChangePhoneme(*) - ENDIF - - CALL base/r - ipa ɾ + import_phoneme base/r endphoneme + diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 90d0d85f..4c389670 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -915,7 +915,7 @@ static char rule_phonemes[80]; static char group_name[LEN_GROUP_NAME+1]; static int group3_ix; -#define N_RULES 2000 // max rules for each group +#define N_RULES 3000 // max rules for each group @@ -1681,6 +1681,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) int count=0; int different; int wc; + int err_n_rules=0; const char *prev_rgroup_name; unsigned int char_code; int compile_mode=0; @@ -1726,6 +1727,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) count += n_rules; } n_rules = 0; + err_n_rules = 0; if(compile_mode == 2) { @@ -1808,9 +1810,22 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) { case 1: // .group prule = compile_rule(buf); - if((prule != NULL) && (n_rules < N_RULES)) + if(prule != NULL) { - rules[n_rules++] = prule; + if(n_rules < N_RULES) + { + rules[n_rules++] = prule; + } + else + { + if(err_n_rules == 0) + { + fprintf(stderr, "\nExceeded limit of rules (%d) in group '%s'\n", N_RULES, group_name); + error_count++; + err_n_rules = 1; + } + } + } break; From 280c4f836e8b8de6d491f9ec2544f30d7e4bd642 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 10 Aug 2014 12:03:21 +0100 Subject: [PATCH 2/7] 1.48.10a (from http://espeak.sourceforge.net/test/latest.html) --- espeak-data/mbrola_ph/us3_phtrans | Bin 1108 -> 1156 bytes espeak-data/mbrola_ph/us_phtrans | Bin 1156 -> 1204 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/espeak-data/mbrola_ph/us3_phtrans b/espeak-data/mbrola_ph/us3_phtrans index 90607e1839acc7ac02e955c85e9d158e61056555..94b775bf3dc82b570d887607b7e5c2364be55017 100644 GIT binary patch delta 66 vcmcb@(ZadGhDFhy0Rl>(G>ppAg|PA_J2DDS4q#*vU|(G>ppAg|PA_J2DE3M7%!9xMH>w2TT@30{}ZP2;Kky delta 32 bcmdnO*}}OYhh=gABOLQEFladlGC%+TghmCb From 55b2e01a6c484519061aadd3a508a9c2cba16eae Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 14 Aug 2014 10:44:18 +0100 Subject: [PATCH 3/7] autotools: support building the mbrola phtrans files --- .gitignore | 1 + Makefile.am | 187 +++++++++++++++++++++++++- espeak-data/mbrola_ph/af1_phtrans | Bin 1636 -> 0 bytes espeak-data/mbrola_ph/ca1_phtrans | Bin 1372 -> 0 bytes espeak-data/mbrola_ph/cr1_phtrans | Bin 2164 -> 0 bytes espeak-data/mbrola_ph/cs_phtrans | Bin 580 -> 0 bytes espeak-data/mbrola_ph/de2_phtrans | Bin 1540 -> 0 bytes espeak-data/mbrola_ph/de4_phtrans | Bin 1660 -> 0 bytes espeak-data/mbrola_ph/de6_phtrans | Bin 1276 -> 0 bytes espeak-data/mbrola_ph/ee1_phtrans | Bin 1444 -> 0 bytes espeak-data/mbrola_ph/en1_phtrans | Bin 796 -> 0 bytes espeak-data/mbrola_ph/es_phtrans | Bin 1708 -> 0 bytes espeak-data/mbrola_ph/fr1_phtrans | Bin 1972 -> 0 bytes espeak-data/mbrola_ph/gr2_phtrans | Bin 2212 -> 0 bytes espeak-data/mbrola_ph/grc-de6_phtrans | Bin 484 -> 0 bytes espeak-data/mbrola_ph/hn1_phtrans | Bin 532 -> 0 bytes espeak-data/mbrola_ph/hu1_phtrans | Bin 1444 -> 0 bytes espeak-data/mbrola_ph/ic1_phtrans | Bin 1132 -> 0 bytes espeak-data/mbrola_ph/id1_phtrans | Bin 892 -> 0 bytes espeak-data/mbrola_ph/in1_phtrans | Bin 1444 -> 0 bytes espeak-data/mbrola_ph/ir1_phtrans | Bin 5812 -> 0 bytes espeak-data/mbrola_ph/it3_phtrans | Bin 892 -> 0 bytes espeak-data/mbrola_ph/la1_phtrans | Bin 748 -> 0 bytes espeak-data/mbrola_ph/lt1_phtrans | Bin 1060 -> 0 bytes espeak-data/mbrola_ph/lt2_phtrans | Bin 1060 -> 0 bytes espeak-data/mbrola_ph/mx1_phtrans | Bin 1804 -> 0 bytes espeak-data/mbrola_ph/mx2_phtrans | Bin 1828 -> 0 bytes espeak-data/mbrola_ph/nl_phtrans | Bin 1684 -> 0 bytes espeak-data/mbrola_ph/pl1_phtrans | Bin 1564 -> 0 bytes espeak-data/mbrola_ph/pt1_phtrans | Bin 2092 -> 0 bytes espeak-data/mbrola_ph/pt_phtrans | Bin 2092 -> 0 bytes espeak-data/mbrola_ph/ptbr4_phtrans | Bin 2356 -> 0 bytes espeak-data/mbrola_ph/ptbr_phtrans | Bin 2500 -> 0 bytes espeak-data/mbrola_ph/ro1_phtrans | Bin 2164 -> 0 bytes espeak-data/mbrola_ph/sv2_phtrans | Bin 1588 -> 0 bytes espeak-data/mbrola_ph/sv_phtrans | Bin 1588 -> 0 bytes espeak-data/mbrola_ph/tr1_phtrans | Bin 364 -> 0 bytes espeak-data/mbrola_ph/us3_phtrans | Bin 1156 -> 0 bytes espeak-data/mbrola_ph/us_phtrans | Bin 1204 -> 0 bytes espeak-data/mbrola_ph/vz_phtrans | Bin 2284 -> 0 bytes mkdictlist | 23 ++++ src/compiledata.cpp | 14 +- src/espeakedit.cpp | 13 +- 43 files changed, 233 insertions(+), 5 deletions(-) delete mode 100644 espeak-data/mbrola_ph/af1_phtrans delete mode 100644 espeak-data/mbrola_ph/ca1_phtrans delete mode 100644 espeak-data/mbrola_ph/cr1_phtrans delete mode 100644 espeak-data/mbrola_ph/cs_phtrans delete mode 100644 espeak-data/mbrola_ph/de2_phtrans delete mode 100644 espeak-data/mbrola_ph/de4_phtrans delete mode 100644 espeak-data/mbrola_ph/de6_phtrans delete mode 100644 espeak-data/mbrola_ph/ee1_phtrans delete mode 100644 espeak-data/mbrola_ph/en1_phtrans delete mode 100644 espeak-data/mbrola_ph/es_phtrans delete mode 100644 espeak-data/mbrola_ph/fr1_phtrans delete mode 100644 espeak-data/mbrola_ph/gr2_phtrans delete mode 100644 espeak-data/mbrola_ph/grc-de6_phtrans delete mode 100644 espeak-data/mbrola_ph/hn1_phtrans delete mode 100644 espeak-data/mbrola_ph/hu1_phtrans delete mode 100644 espeak-data/mbrola_ph/ic1_phtrans delete mode 100644 espeak-data/mbrola_ph/id1_phtrans delete mode 100644 espeak-data/mbrola_ph/in1_phtrans delete mode 100644 espeak-data/mbrola_ph/ir1_phtrans delete mode 100644 espeak-data/mbrola_ph/it3_phtrans delete mode 100644 espeak-data/mbrola_ph/la1_phtrans delete mode 100644 espeak-data/mbrola_ph/lt1_phtrans delete mode 100644 espeak-data/mbrola_ph/lt2_phtrans delete mode 100644 espeak-data/mbrola_ph/mx1_phtrans delete mode 100644 espeak-data/mbrola_ph/mx2_phtrans delete mode 100644 espeak-data/mbrola_ph/nl_phtrans delete mode 100644 espeak-data/mbrola_ph/pl1_phtrans delete mode 100644 espeak-data/mbrola_ph/pt1_phtrans delete mode 100644 espeak-data/mbrola_ph/pt_phtrans delete mode 100644 espeak-data/mbrola_ph/ptbr4_phtrans delete mode 100644 espeak-data/mbrola_ph/ptbr_phtrans delete mode 100644 espeak-data/mbrola_ph/ro1_phtrans delete mode 100644 espeak-data/mbrola_ph/sv2_phtrans delete mode 100644 espeak-data/mbrola_ph/sv_phtrans delete mode 100644 espeak-data/mbrola_ph/tr1_phtrans delete mode 100644 espeak-data/mbrola_ph/us3_phtrans delete mode 100644 espeak-data/mbrola_ph/us_phtrans delete mode 100644 espeak-data/mbrola_ph/vz_phtrans diff --git a/.gitignore b/.gitignore index 1821cdad..530a9191 100644 --- a/.gitignore +++ b/.gitignore @@ -76,6 +76,7 @@ espeak-data/config espeak-data/dictsource espeak-data/phsource espeak-data/*_dict +espeak-data/mbrola_ph/*_phtrans espeak-data/intonations espeak-data/phondata espeak-data/phondata-manifest diff --git a/Makefile.am b/Makefile.am index 44027410..cb597c9c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,7 +33,8 @@ EXTRA_DIST += ChangeLog all-local: \ espeak-data/phontab \ docs/speak_lib.h \ - dictionaries + dictionaries \ + mbrola uninstall-hook: rm -rf $(DESTDIR)$(DATADIR) @@ -797,3 +798,187 @@ else espeak-data/zhy_dict: src/espeak phsource/phonemes.stamp dictsource/zhy_rules dictsource/zhy_extra endif cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=zhy && cd .. + +##### mbrola: + +mbrola: \ + espeak-data/mbrola_ph/af1_phtrans \ + espeak-data/mbrola_ph/cr1_phtrans \ + espeak-data/mbrola_ph/cs_phtrans \ + espeak-data/mbrola_ph/de2_phtrans \ + espeak-data/mbrola_ph/de4_phtrans \ + espeak-data/mbrola_ph/de6_phtrans \ + espeak-data/mbrola_ph/ee1_phtrans \ + espeak-data/mbrola_ph/en1_phtrans \ + espeak-data/mbrola_ph/es_phtrans \ + espeak-data/mbrola_ph/fr1_phtrans \ + espeak-data/mbrola_ph/gr2_phtrans \ + espeak-data/mbrola_ph/grc-de6_phtrans \ + espeak-data/mbrola_ph/hn1_phtrans \ + espeak-data/mbrola_ph/hu1_phtrans \ + espeak-data/mbrola_ph/ic1_phtrans \ + espeak-data/mbrola_ph/id1_phtrans \ + espeak-data/mbrola_ph/in1_phtrans \ + espeak-data/mbrola_ph/ir1_phtrans \ + espeak-data/mbrola_ph/it3_phtrans \ + espeak-data/mbrola_ph/la1_phtrans \ + espeak-data/mbrola_ph/lt1_phtrans \ + espeak-data/mbrola_ph/lt2_phtrans \ + espeak-data/mbrola_ph/mx1_phtrans \ + espeak-data/mbrola_ph/mx2_phtrans \ + espeak-data/mbrola_ph/nl_phtrans \ + espeak-data/mbrola_ph/pl1_phtrans \ + espeak-data/mbrola_ph/pt1_phtrans \ + espeak-data/mbrola_ph/ptbr_phtrans \ + espeak-data/mbrola_ph/ptbr4_phtrans \ + espeak-data/mbrola_ph/ro1_phtrans \ + espeak-data/mbrola_ph/sv_phtrans \ + espeak-data/mbrola_ph/sv2_phtrans \ + espeak-data/mbrola_ph/tr1_phtrans \ + espeak-data/mbrola_ph/us_phtrans \ + espeak-data/mbrola_ph/us3_phtrans \ + espeak-data/mbrola_ph/vz_phtrans + +espeak-data/mbrola_ph/af1_phtrans: phsource/mbrola/af1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/cr1_phtrans: phsource/mbrola/cr1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/cs_phtrans: phsource/mbrola/cs src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/de2_phtrans: phsource/mbrola/de2 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/de4_phtrans: phsource/mbrola/de4 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/de6_phtrans: phsource/mbrola/de6 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/ee1_phtrans: phsource/mbrola/ee1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/en1_phtrans: phsource/mbrola/en1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/es_phtrans: phsource/mbrola/es src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/fr1_phtrans: phsource/mbrola/fr1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/gr2_phtrans: phsource/mbrola/gr2 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/grc-de6_phtrans: phsource/mbrola/grc-de6 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/hn1_phtrans: phsource/mbrola/hn1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/hu1_phtrans: phsource/mbrola/hu1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/ic1_phtrans: phsource/mbrola/ic1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/id1_phtrans: phsource/mbrola/id1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/in1_phtrans: phsource/mbrola/in1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/ir1_phtrans: phsource/mbrola/ir1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/it3_phtrans: phsource/mbrola/it3 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/la1_phtrans: phsource/mbrola/la1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/lt1_phtrans: phsource/mbrola/lt1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/lt2_phtrans: phsource/mbrola/lt2 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/mx1_phtrans: phsource/mbrola/mx1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/mx2_phtrans: phsource/mbrola/mx2 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/nl_phtrans: phsource/mbrola/nl src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/pl1_phtrans: phsource/mbrola/pl1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/pt1_phtrans: phsource/mbrola/pt1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/ptbr_phtrans: phsource/mbrola/ptbr src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/ptbr4_phtrans: phsource/mbrola/ptbr4 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/ro1_phtrans: phsource/mbrola/ro1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/sv_phtrans: phsource/mbrola/sv src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/sv2_phtrans: phsource/mbrola/sv2 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/tr1_phtrans: phsource/mbrola/tr1 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/us_phtrans: phsource/mbrola/us src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/us3_phtrans: phsource/mbrola/us3 src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< + +espeak-data/mbrola_ph/vz_phtrans: phsource/mbrola/vz src/espeakedit + mkdir -p espeak-data/mbrola_ph + ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$< diff --git a/espeak-data/mbrola_ph/af1_phtrans b/espeak-data/mbrola_ph/af1_phtrans deleted file mode 100644 index a87ec4ccd37e7edb899efbb3bca05aa60125e720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1636 zcmZ{k!AiqG5QcN~=*hb%B7#&}Jg5aXph8gys8QOBgf>WOAy8XdD|!_1VIbb#WQg)Mq{fA1+D@Z@8;~`6cR@PoOg) zoj!P<_z}ex-s8R&n{`Y04hp!RX>J+5J!$SoL@!ToM ziMPSgZke_HVM)|!A$G*K5I+;YMSMU!g^=yDw2Rf-GyvOvQs;$u_^N>WOup#JRh2S;^cj19w{C&Pw9E@PioWPkGfbDhE>3Ji$ZSWC3e4-=Y cKI2{FA7HEIz4`O~_uHMjueBB7pKl-Ye-MFASO5S3 diff --git a/espeak-data/mbrola_ph/ca1_phtrans b/espeak-data/mbrola_ph/ca1_phtrans deleted file mode 100644 index 4fe4188e53b10cc21b50c3bf47e9ef3b2fc4c641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1372 zcmZ{iK}rKb5Jh_>9>5d0Q3Qz?TqL@v0Vfy{2GkgI5o|E%gy29(2xj3)Jb+7Y;L;1Y z@HkdY{mL{2Y3Tm{zv+ZVBcYn^RBwK0qBd%7UyWd+yHb1zH+=oeLZdSZ~?w(Q0>Nj1v!iS z$7dQt9H@ybawm*e;1%|n(3Lu3k-N38F%ZrvJRNkRiBibk`r>)qP^S-$&sbNBa&R6H z4ZPmL(VD0^LM|L{qi_DcMZ7TM{b}C{aH*5>F==7xb2>`WRI-S*KBxOrUP<5~{U@G1 zo-zumCCGclt~t){zbgZm^QR*tO~S=moq+@%a({@Yoip|&X`jW}{)it~9oZw}=>f_j q*6zvtM!DQ`vBqx|2Y>(1!B@~!{<5#$Z~pWB$+Nrl(R8{tAiIm~1yf?0EWD_nohMk6j z7~f)CT*Ddp6RnwT4u%G34`};=FVQapZ)SKRk9iX7kG$jpkRN-!$NMXCtjqIqM+0I# zee#&UB9HqsB#-;>L>~8T+|`a4cb8eAn%;%--o+#zTc#q74dt=VxvZ&goZWBMo>3A+e$If%xefK+SPs|?I&pt;?_=)0Yw~@J&)p=S+8-_$ z@%|j!}`_N>5 ztk*yHj2u1d*HyN3BF2}zA@1|3+z-Jw!plA#d{eyGfA`r#j%UO|A@e^!A7Ag^pTAnh BY`Opd diff --git a/espeak-data/mbrola_ph/cs_phtrans b/espeak-data/mbrola_ph/cs_phtrans deleted file mode 100644 index 85ebb03e3089c5055e4f76d272866738a90a7842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmWe(U|`76Hv*DC8cZUHB7F$E2q6S!73pFZ4}z*gSDyn_k8XZB)ckTZ^RuAhS!m+c zXnYtq9cn&|52GD$h-*O=pu5uxDxRVaGXX+pK)D$)sN#8X5Plw-`XH!y5r#O#W9Z_^ zP-9Eb)TeqvBvOG?CJ@^|)g^{P7>Pit6iGZ4Dh^VQES?V)&qovY1M)#24?@AoKq#vM cE`ne*>^9>#anzS1qRWD#V7nQI!VWVI019#-1poj5 diff --git a/espeak-data/mbrola_ph/de2_phtrans b/espeak-data/mbrola_ph/de2_phtrans deleted file mode 100644 index 804a0d4019f097d18b387111cf11fe610892afcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmZ{k-AV&N421`u!8ht`Wq3DS?>JhEwd}E>LnKt`Sq392B)FWEU`KyJZm#4*!EPrtYp07`pqYu{BCz_!*)|TXcpDp+4+hWmk^10)< zlfP`n{ry_}haXEJ_V(uohxzk&wLPJ$%kA@>YSa=HL*|!`mz<}>n3qcm&qu5)Tz!QB z6|3BbF`qF1yT+f&#~Rw_>Q?3IrA0fjX6pMeIMM~r`vka0$ozLPm2+Ya(Kqzla!JF~ z{jP?C&^SK)LbdF}s96Xl^W=ENym36<>zh#mX0gyTL<(?g@m#ZLq3Fauc;4eayq@;0 zn#%t_Nl6zN+WG;NpNBK@s;yMfVZWl|H37a0nfqTyofOZftjB%X`i30$g4yEOgo+&J z+2cHqKWE8${4QJHC&%?e=5wZ=E+lCvRQ_(_3rSwEeDWkkVw*>e`MITd%U~}S@h<1z HiwOAxy9Gtk diff --git a/espeak-data/mbrola_ph/de4_phtrans b/espeak-data/mbrola_ph/de4_phtrans deleted file mode 100644 index e626a582ba9f43f8ce2b28717c018811fb2f537d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 zcma)*&q@P948{jfJ@()mcoRfvQSc8s1uGN^D{2+J$beP0EL4h61o7g3C;LL87+h4h_%G8P{_0g}g1Ka2uoF zApX5>50u|ttG0PUgU2>J`&Zy}xsNTN2O*JKy%5eG)#_3k@6b<<7xc%DUq0x6uxANG zH)Y_TfcUghs~ r3x#F-CVr6QgPdPoNRY_gvFd#OI_x*z-?kdhyDy)wA5S06qkiKXRiIZN diff --git a/espeak-data/mbrola_ph/de6_phtrans b/espeak-data/mbrola_ph/de6_phtrans deleted file mode 100644 index f82c1e3b3676e14fe040dbdde17dc47a56fd78ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1276 zcmZ{j-%7(!490`Lf-fN6h#->=1^V>v1muxCTszZ;oFf4k@VF zdE33gGEJ(6lsVAN?{75AV(pIaU$#l8A>=41&xoAmSZsA z`zMSBG1B<&yq*0!wvVGI8b~6hK@QKsd02Wrz5M0a>+{5rI-{x#>Ero~KHy088S&sk z4X7jfc)s|L(;xjv^&iu3O;s7w$MZFPz>(@R;lZsMP$%^9d`lm2r1~U0cR^K2*bk1> z{+JDK+DMJr502FSl>1tzo{FBR>n( zAI|x6H)qcIJ%17#+zYi)NC6JDQP96|{@`uDE9PK`@nrUK^)_RSCAA5EbE diff --git a/espeak-data/mbrola_ph/en1_phtrans b/espeak-data/mbrola_ph/en1_phtrans deleted file mode 100644 index c32db3968df0779b3c3a47899085625a7b86339b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmZ{iK?=e!5Jd;PfD3QnS`>>LbrHdWMIl%zykcP2+@S%^58n9j7#CbtJO57oyRCQg+W2*5p*>WjtctEJh265k(=!LURhiBLouUPh#bR_!`m~8{bQB zcD^~554eQgncvNP?0$Q9JI=XYv6PM39LD+3D{9Pq2tJ&bhG@92fO!v`b*9jnl1>*q zC4NG=r5)&7ZnIy*3n<`q9$O>L1vGGd-E`10JMuT;cUdkh<{MeQic4#P=OK|Kx-Jm6BPL-D z`G9y*Q6M_v=_&5F!9^$L18~uadD75E(HUpITnAiqV%~bt`q8bJPI_pM_X|3?25l;X`@wEv{D;=j6N=ICPkM zywJks8@i{mF2VPN{Y(Iux4kx+K4jbg2fXAn4p_K&VLl`kA6i9Uv~rFO^Z$-Yq1=sh b%E#9{S{eLZH@|21TVFp<+b^@<&yUT2^5<1z diff --git a/espeak-data/mbrola_ph/fr1_phtrans b/espeak-data/mbrola_ph/fr1_phtrans deleted file mode 100644 index dc0fcef7e9cd3d0a397a3be789d7893868368bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1972 zcmZXUQA)!=5Qf(ycm;hCK`M$5Rgo=Nu_y%8D*7NSHfXdo5>i6@px5 >bl?KkfQw zA(@%4e`j}RHoNJZoAwUkJKFZWeocGoceu(s`U?7+b&A%jkiWzCRLFb^&hs|N-%$Q{ z@OR=T6kGU;{1%(_hvxmay9jxm$Ny!k=n>w*im3B|xX&Cy=0ory=}YjE_~1)HfVH28 zh;!l@;*$6S;y&@_xoA^f#6g$m z_c+g<^Z{IYl8ziaPhs>I;9R!?b>sRM&@-Py&wa_!NU6W{{S@;DG*Z?nXUKR7&gZ;D z9XcHAVeYSWA|H+1DLWcEk2(uahd#>slb zU2*J-_nV=f%m>hOJqMCB4&gpNmVYck9CAK=d~9D~BvDr%@CVL6d1~cu5{Yx15QZ0|O5C_{aXa$nb*s7SdV0n{mgjA9($9=S(c4!d(w;E_W!zZO~;laydf*_h5S-g_MbR9Dv1szqEL(XhGYNJFA9*~%9y-m zp^TS!R3aT!W#7YN5b3Hadwg3kS&qE;wh-z}S`=`6)8OY3iUwcsBALFlZpfLwtjtw^Ll*Ghc^x;#{foHW(juuz63&Q8#<8yr~B7pL2n)=WAIH@$WGHj^jVf$`4L{ wTPWjYNB_^iS8yOP-;-Wf{r&GDID|?k?EgN!z5dwhT($l@dGvO4e03x9JMB?$4FCWD diff --git a/espeak-data/mbrola_ph/grc-de6_phtrans b/espeak-data/mbrola_ph/grc-de6_phtrans deleted file mode 100644 index e41d3105c048e789fe605c780efe2881df833ea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmZ9Iu?oX53`9l0q5qM+baf$9pwOYC2M1CD&Q{W|uMVAzP{6+PvpF5PipZu5-*z+g zz0tJ93wcSrlGn^9yU2XudsiN%)AW>clE3{Swa#Xc|51A&pUN883|-|Lv=A^dUzd@X?1HeInl{OWaMyzS13T#*N5N{WF{|>i^eS8m<5U diff --git a/espeak-data/mbrola_ph/hn1_phtrans b/espeak-data/mbrola_ph/hn1_phtrans deleted file mode 100644 index b2560ce77a3e15c6d3a7308569a8263cb1c2f6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmWe(U|`7B1ri`S-VVZmk|j{_5;SowsJsb^Y6gY^sQLml^~F%}Vl?rRU~8}mCB-o) zCIQ94I)LKw$Py*N8DI_Q;@R;TFms4g4^a;EFO&hbqy)+>K@%^4iWi`Xr$j;ApHhYD z{=9UEfqux22eKWY{4g}}ET}{lnnWa2oe`S)a;W-pH1(y>aP~!0U#go07V(YAM3Vt= W|NlP_T)0i(X&471kmtd^XFmWmOf3`u diff --git a/espeak-data/mbrola_ph/hu1_phtrans b/espeak-data/mbrola_ph/hu1_phtrans deleted file mode 100644 index eb661d3ab4c858b3c603835698c62db8c793542e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1444 zcmZ{k!Ab)`42B0!eE{iQJXi#&w0KbuvnaxfxFELBi!kUSTb3?t*H%2}`*`u@wXfp~ z^zLNxZ#PZZfliVynM{%$x^Ilh`vbpw8TMw&`>bnTf|pHb(8?1An&;p;&k}i-D$f*r zs`!PsGsX72O`MjF$F=Mf`)iBCw(w(|)qOqi*o@{W;?r|+saGSI$u>3<*hshWPH=vp z@;oD=I@*K=bHotcHXGN zVV%dpq4^l``ki15VK%a!)0X%Mb?ZDs@ST3q0M#SEO9D>wmprq4G0lN;)!!?#JWeOJ8mMMlE?p;PlpH{Vrw)%|YJla6s4d=+D#A@Bf;y g`GBlN{eQQpfslWn>(xQE__aUXj`{9(dSC0+Klgq{F#rGn diff --git a/espeak-data/mbrola_ph/ic1_phtrans b/espeak-data/mbrola_ph/ic1_phtrans deleted file mode 100644 index 978ec49ed00c46862d89580efe68f7efd98c93c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmZ{jPiw+J5XJY>Z{RoRO(=@Dv>@KZ9Fz)H_M+?|_=h!th?GD-e0Mr;B>Suj$;|xn z_HAZJ2F|&5l&;s5(2AqUABhiK0dw(@)oQrk+c!;_M{xG}hR^Nppvf8hO#FjtD-ZCu z+T!d99}Z2C$0yizkojEhx_1R0(H?J+6b2Bt&=sVw7AmMt`G#tt!s?W72+#-82j~Oo zn~nN5H0WldzRivNp%0`F&h>T&!BBWS_2f zY(%4QS^OQYC;#(L#cqyh;evnVLjE;)O?(NyBwp{-u{2}EdZ!yo(nt72;`Z-yzvf%g j_kKmcbgVljAZPUbUlJ28z4iMtE@$`86`rr@>9k3`GaQKkzFA5!@=a8yA8gRutSQUHGcCN`2JNH*sztO`Qw3nVf{sPSbJD z?a33w9mO`8^-$J4B7T82e-aaGekCr}ydW;t{7zh~dER#}ry9G?2Shyo9q{0O7WZqF z;H8FiE_)tWo`c&t73NfCP6nPCo`SCpA5wlctVKEVf5PiDO20MLhf8pPl_)DcHl%&7bK>4C=1~Q{K_3J zRNu=X$VpC$d#L72%HIXf>+^m}|28kct8=&c74|(sDT{quEu=999}CaHbKwDaAUtnb z{(uKU^OkKGh(Cb8BmMyXj`$}ycOtxp{rZ3J!5@i#4n7wif``Hr%y}boCL;sNIme6m nZ&5ELe~EnMF?j8}haCOxRrurbeO2i&+}jyGe1H9XzO8-%B+*M} diff --git a/espeak-data/mbrola_ph/ir1_phtrans b/espeak-data/mbrola_ph/ir1_phtrans deleted file mode 100644 index 671873e7ad46410393946d6e1b28fef7d3c39749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5812 zcmZ{o%WfS-6h%8Ap@=d30E|N*5tA@TTRg;-P)rgWDIS2DaB*%hHaIstJm9Mk4D&-w z86t63b**-(a{5T^I<@NbuHDto>$iqsIEd|=*zU$Q-HAUDuf+!6#n$pS8vc9aeLefN z_3C`I!UHcF!;@-v1pJJ%&8x80$pH>c3JaTJ~`reyQBHc8A|;Vk_r-6Si}2 z7>;Xl+0AWqHelX_z{S}=@EBr-x&*nW^sXtno_i%-uukgc7 zK5tAraLu;yLv&bA+BWF3o*8F7GtPQuob}8&>zQ%ZGvlmh##zsluguGOX7#LR##zsd z$F#!}{xrcenCPFQCpTu^{~cHOueGqhk9^PZ95%lmIqwhxZVn$~BjCKJyiacfBU(;9 zd^gUuJZq@u`46XU>*c<8)R#wjnNuD5eB%)4w484N0?xCNd5izx&MT)+z4P`whReKi z`Xho7t$+GH1Gv_WqF=A&j8lh>W5s9G>r<|dK6{RijGUP2NkzXszwq>XDY)}mPoH|{ z?RlApKTS;U&K=k1%{q3_oG-rT7e3C<7#Qaf&b;318IR%RypywT)axG|LLL40oSIgj z{-^wj&_6l)aMq1$(?B17dh=Gw_2WL)>!;`F%E*cBSeoT{x%}`0SD)j8(}%0y^B6Ar za{BQ|D#7t`zoSEJYSOO*oO`eJ$-MAvec<|ZAM5qmbLN+k6T9a6X`f4Q=9N*4KHPa7 zlRIzE*;htR@C+mP4!nph4yT0gaIPN%ecweHr;hb>jPpo+xgQf9{adfT{(Bx$i#9po zH-)t@bbL2voSNPz^_=&tKJ!mK_heSjHJb74c+ts@7f!S~^!-+9pNHuB&d)gealDRk zUa04|WYnmmPsil?>^b|&$cdxaPGW00I&i)bG9LI9pVVi5;F%vd(dyIpn~`rauJhyA zil1@zlkq4iei$QIH+1wPS4TfRXWv$z{$afzybgU|@Xf`#S^rt&=)+mJj0b+jC-tpQ z-#hTuXUoxP^-DkMGe76SGe2;G<3fvI-QcYsIDL5Qr{(0mpJ@Y~^`|>mzh1Wu-(KOt zZ~XIymGzAJ;y>Z)yAS@+S^U?1)LHy@933^tiK$+oWqtg34Sv4Dr_IQ2Wj&{=j~}>x zj^|$5p?d_i^Q(ui70>>$>5GbLKiQ{^#z$zlP7> SzW(LomoKkH|DS(f|NDOlok@oP diff --git a/espeak-data/mbrola_ph/it3_phtrans b/espeak-data/mbrola_ph/it3_phtrans deleted file mode 100644 index c9174cf0a1a8103a40256e367455c100b9362e81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmZ{iQ40Y<6otnx@IREqBhtR?1Id>1N+V0yb|u@E{CM}6a~U^oojLb@_s%qSw4HO; zo-FWS@3kRs-XtUid13g8{Al>d)LJH8&Az?E(%xtJhi@LCvH3p6U8Ek0;Lt#X*owg6 zkn$Tj98$g`heOKG7)l+i33o6Jn^^E*1ZfoQ-vAZkshqx{BtGF%l zo476VTz=nN&hkGlY|oHxl=^=t9cY%p%D_sx2adu0@!qnDqdwgnAJsLTSK41uf24h2 TEJOE!W-R$yzMpf++V`d(4MZ&S diff --git a/espeak-data/mbrola_ph/lt1_phtrans b/espeak-data/mbrola_ph/lt1_phtrans deleted file mode 100644 index 1066dfbc1585caec8af6c62bf98336b696723fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060 zcmZwFO>ToQ5QgEAdWGDft8TgsQk6|lkX?2pHVXM8N&rQiK1}_BJVPx7?8hJ2jI$Dv zq8Kk@`%Jg_y7`*Brc*9-b`A%J5yWitaTgm>^wL5tvul30Dk-U1IZ^&yI@_dJDHupW}xOWG6zz@z} z_{({_O%v_bP6YD7vV87><7fP}qE7!5ZWBwzx|My69Py*`6Mk}j z#?Q_#_{I4ZzdFC+H|KZ!?)-s2oImlWbILES{L+$dUB1VA=NyZ;V-b!;+_B8{7WvtH GWTQ7=ToQ5QgEAdWGDft8TgsQk6|lkX?2pHVXM8N&rQiK1}_BJVPx7?8hJ2jI$Dv zq8Kk@`%Jg_y7`*Brc*9-b`A%J5yWitaTgm>^wL5tvul30Dk-U1IZ^&yI@_dJDHupW}xOWG6zz@z} z_{({_O%v_bP6YD7vV87><7fP}qE7!5ZWBwzx|My69Py*`6Mk}j z#?Q_#_{I4ZzdFC+H|KZ!?)-s2oImlWbILES{L+$dUB1VA=NyZ;V-b!;+_B8{7WvtH GWTQ7=0wf)t{a9v;WR$MbL!OOKYtjdE3nCIZ^vxLu*d?w%- z@iWRb9m8L9jkbn2A>cYsbtASnw z_G12A#b$w=`2?K%)&rlY0D12*E|^cjbsyyB28*cz#0x~O=Mwyd^tZ^z#NUxiPt!5? ziB9I*9`O64T8TPDCpqgS*S2uq9Nt5xCWu#vBjSDJ1##DnKz!sk&T)SPEs`Zt#=1LHe4GLnPdXdvNY2$`9w0`k)P= z2NjNbmwsyB3h24cejSI8=qo-oJcAF{nL#gHYSMZ#d*rit=BfW2 zKHTS_4f4>pR3BZ8k@Ko>_%OHE(MPy^qxWNK9KJu?PY1w!WaCElhm9$4z#DzW0SlL2 uXdhhHhOOeC*6;AZ{JXPukcV$>T*d2an$Y@tb=)u?yN#8P`Pa{<-2MgkZCTa; diff --git a/espeak-data/mbrola_ph/mx2_phtrans b/espeak-data/mbrola_ph/mx2_phtrans deleted file mode 100644 index a9bbb0f60c2cfa07c07f1162c61ad65900d83592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1828 zcmZ{kO-=$q5QSS;9>5#8F(d|qx=|O6(FMdv#Nfh(rVRv#5J*OT)KhT-F5m%-r?IN* zm2?*{Nl$fs^ZHR!-ORpoZdk3+onpMNZo{g~Eib{#l{C)EBLS8V!L836K6B$U051%` zFuA6E_-n4wZ{ZaPY@O%2(8LNBSbdvx?=)U$l=N_i;w}y56B?U1;i%=PSG%UOJkAaz zf6cL*A-8-0Zu`~*?>^;5&1cCiAAyfPbNwCCQI6dea$CczTEdgl6jwx0p#GpGsT4Pwvm7V@#-p&@{M_%|-`ya&!c zDIbHgPs&3_7P1e&^S=)``=tCqllgc!y~xu zC(4iellq_yvBr#}9iA<@|GF0y^OA=4Z4AAwv$c)GhxM7y7GA)|)>%N$oNLm0 z3V%YG>`CfBg^%rX$47bWTdEfq=Xk#|4j;??t@tqKZ}*|3F5tUl`xyW%?|E6M{;+Xl zZ17s2vBAu_7utu=@Np^or}YQCu>IXhEz0A!SY~p6OA|ByUj8l_Ef%MHKQws$2c7v^ Au>b%7 diff --git a/espeak-data/mbrola_ph/nl_phtrans b/espeak-data/mbrola_ph/nl_phtrans deleted file mode 100644 index 1edb05ae5528be0db630f94dcffc21c7d0115a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 zcmZ{k%}N6?5XXZjAHa)eFCs|AD%LN^qE#wF{c3AHh`}z>Qo2xEYkdXL$LZCxFXD4J z)A`Rfj&vZI{C}C9Og7nFa?W)No76jZKJ8~+w;*H7``}lz(CMhZE}(CC7rblu2zeTY zcfijK-#1$26Y{H8@8|F}1lT$USYXi64B{UlEpH*dW#YAN%X{~dsAu9|R)mkRj=E>$ zzg7T$1pjLICG@G`CFrK%>7H|ZmKE}`F=tD~<$V+J>|;|cw`ew#A--zjnX_f$@;-ov zoXDVDfp7nvXpBYg!s~3kCZlAiM0^U)`{Fxyg6T0hr-^wP8!97CT^n_pa@-KyEbG!a z^#`nL>&(FI`|2H)MI7Cyvip zknwqWYI?7#EXcSXPc7%zm)&my&ijfj@uHaXQ1jGSkn#KU)U^IkVMXUd%~R9(fCu=# z#k_Ur+ycef{}ppK``;Vjhh+JUgu4N}x?>F96hyvs`2O{|{5^U2*jl{!*_qsu{sl7S BS4IE; diff --git a/espeak-data/mbrola_ph/pl1_phtrans b/espeak-data/mbrola_ph/pl1_phtrans deleted file mode 100644 index 5c3583da4700ab6982766d187d1195b37f9a3fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1564 zcma)*u}T9$5QZ1Au&}hW5G)iy5)wpEiwzhdARI?&a1MjrDX@>zcj{W0lx!Mnr{eLE#4`w}k3`IuHaga2(whb`ed7|Z)|o7&+5Z3&;y zmimV#XCjuUTl^zL*@9>gJ*&^)i|!`c3Gs6jVz^ags=orC5YLC&k<);9qCBPn{cF|h zlguwL;7j#Q0qtD>f7O(7mrtXVsU=%GdtJ^2gi5 J>*xA(_6^+FPoMw* diff --git a/espeak-data/mbrola_ph/pt1_phtrans b/espeak-data/mbrola_ph/pt1_phtrans deleted file mode 100644 index f101c661f7d5313fee0d45e3c9c0ff5157a0913f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2092 zcmZ{l&uZI15XP6B(nIJ&1WYNE6c-$5dsst!P$@OEaSk~Y1TjU%jli);+e7?veVaan zJKxSX%4A|KXuqA`j6dxkNq(79TAxWL?Ovtt*JtCx);-Yy_)3O{I4YvghW;DS(BGjl%me(jWZ~`Sb1X6VQQ#654)yhj-=jOww%-(PL+<8U z!A;=n?+QK#eoOu-@Gp#S1OLVNYv6aM3OKDki}l3yVjpasruGB#jlAZ0)mBKIQX?Oc zPeT2OKF|0=N?7wm)Y=Ofj2L^4{ES7W4AZho>8AvfhgI(cA8_@5${Wt7F#~GD`9Q6~ z$6`~u1I#;dw*eg!)WNQ-8Apc{9)VI`d?CFX;zF*Z?6PbCFDL+`T ze#$~{yxVqOE$icb=R=%6sDI)!z#IBt-+XJbM&Ou}&8NxlN&?*bcl7B>_OV-J9fSLN zb&=;Wa{5G``C$gff8i^+&}x2H<9^lzkuP)kS$|)RPwdfGpde4J9+oXa5gq;42D=hMPA1JM9{E#Z3{9Z_dX{jFX;jN3B}BYzs1 z&zc18)W$%gtM@ zlRiAt@X)%HANrBwzVK$ok$aAOi9xLE)Z5roAKvRDhd#U+^es1UwH1Tj0R2Du9C$Ut zYZh?sc+aq281}h%89ZN*&&$gy0{m*m(F&wFyr-}9Oa!+h|~x{x1iveJ#oC3_tj z_T%yK{R`t#@Vq5&Lw}~Ed8X-xLHs^^BmZxW^q=U%v8P+|_g zewIeyBy=xLI0l42ydx_ee>34&A>4yn@^iRmjbxg@2S(5>g%w|8iV_ORgvd0 za_U5$`C$gff8j^@!Rjf!x?!xj!Ev9PtSzQ*7j%4n-t2Rw9pG5A?L%GVQh+|R2F?Y? Q`|dc;_`DSnHykj20inZhV*mgE diff --git a/espeak-data/mbrola_ph/ptbr4_phtrans b/espeak-data/mbrola_ph/ptbr4_phtrans deleted file mode 100644 index 25bfdbf47ea384bd8118ed197a8842cb2104eb2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2356 zcmZ{m&x+JQ5XPHj5AI11K7b$$BFM^kP*x8;;2Z+t!0LGLpaeE(mNFWAb^_TuP*?pK&YA&S_yHmGso6GsYnmy4D_^ouuI4Yt}NBwTDX9oTk>C_{&k2g{6>9?&F2aJR0^;zKc9ONgP#R1;lSbJx~>36>;u`)ko(LS z@AkIifSrfZzu|zJz?&}$n(xPn4f!VU_bl5SmnWNF=Ql!Xe#`S!o^3eCtuX8lyf?(S z3u7E>9pe~(qW}0*ALp_a4vY1ec04cC+j8Q0T|-37@*3$~KtJBMlJ~H*Liz=LoF63(V{2Xi4YILvdzOEh9trQX`ANa+W7&;f^j; zl?OU)&}l^nzin{5>y11YsH6T^y`+zH5Uz2giKC&G24unCFPsXvE_8 z&F+VJtxBn2C-RaB+!N%mUKq}0@X~m`G%n}sc}tGvdcHC)3D0}-KGc_780Leuy_5$w zTkA&TAv!b_>v7$D{nEH3Jg>>?P@gGjo?-gPPWlgXJ@r|(aYFQuOyPD$ELH&`=1h1)see+gljleNin@^oz3<+?r-&3a_vWI4! zwGZy=RYmS&{7>*i!&LJ79QU&%h`h==(DW&jTHc?NeJ->D9Ba0HD2qHK ipbxD*=Yr#Vck`h<#rp>O>i*w<55(i|$@$r%bFlyOxq)K< diff --git a/espeak-data/mbrola_ph/ptbr_phtrans b/espeak-data/mbrola_ph/ptbr_phtrans deleted file mode 100644 index f11ad8703ac1f7ff0d0c84496c0151bc21c075d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2500 zcmZ{m&59F25XT!&?#V|`5P}G@5)Z=ap#z&kKn$qy;6WMLpp%UmnPgb?;4^siNxbg9 zgKx1<;L-X`S5ImyGX?!ozpnmI^+#rMCxoy*mP+g*HC??v9=B}Wk<@{&q}#`d@H(~X z*W)xl*Y%^+t25B{Vj!QD^6xJGne(&zN%gaz+c>}#Ce#>!jTTbiObpq_M z*UG-Rv3Kh8Y->B6u(MG5XFB1`@%8%zK0CfqzHtLDHE!eLbAGkm2#NV2<%5*1JIAds z_J`IQK6jyyv(`S&`~&^_hx(k$RygM4N!yDJD?p~6+wPKb$?gMw1bz$s(+e&5m zG;=ve%PZwP*YbJhGGKY5ym9e`E`WS^A3T+UjTULaQTp&MPmSkV+4yPZGGKYBymawV zd@Q#0zIvlw|6V;+&U?< zKJy{2I>g`58Q`Vr_&iIEhm&j0r;Ja;OTQtj->6R0j_#{POntbGPbzXxJy#vi=kCUBc>4`V dy;Qr;v>gh+SEu3X@A)6#uY1>*|L$I2{s+n2lOq5C diff --git a/espeak-data/mbrola_ph/ro1_phtrans b/espeak-data/mbrola_ph/ro1_phtrans deleted file mode 100644 index 4dec15997c4e00c7a764156687431ac8c47676a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 zcmZ{kO>fgc5Qdi_1c@SnT-Ak?w5ighY4W?^%wJ<( z&$G^U3M1Jw^X%*Kct5yJX5`#e0@g{!gDr2;zJm(PtSibp~JkeS-q< z;xcjdv!%o=kMQO+C(k`i4P1TJyoKxAG)EuMkKyXG*011N_nJ@P)4(&0XXE;|($5&K z`ZaIh>a*r8Tz%@91G{8XxZYdq7jS)3%~x>sU-Om)d}Umr?^auL6*d!B*z+%{>|9ad zL+T8T)pb5gY?izG=C()pc7wWTe&*m~JtF@FwsH8$F)KWB75IVx z+VT_6at$qhOdff2#|I)GP(OZG!+F6`HKk8PvCaq{=ivdI<4R_IGH^XhL{)aB_^n{(;K_Az5C%a1Xsj$=^ zDKXQ$WxL9EH3Mb-uToU>4G+Y1Dd#qx>z68GwszOwFNl8jWE1?j_507S+c&RY1Ihmd D+%#%U diff --git a/espeak-data/mbrola_ph/sv2_phtrans b/espeak-data/mbrola_ph/sv2_phtrans deleted file mode 100644 index 805608fbc888ac6ca256a2a2bb05e7f6ccd087ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmZ{k%Sr=55Jd-ZA-L3?OE)6;U_|h>=%5h-V!-&`4H$HiKtd9Y5Bwk3Le|m0aN);T zck0&6SZG6cRh_E2sqX2_d=y2UwOCfM*;*`}HT6C3llP0#%tq;pq=`;<{R@sl|LGs5kJx><(!9-2IR;6$3^~Lp%eSvQ~ zj()QGTtOZ5pVd3wlXyyI@2*Hpi#sGAI^HI4J04Gf?6JN{j`vvRb@IC7$(cR~9k`~`CGWaE z)1dXKaJW{V2Hk<@P1fVSlt-5w`fv}KtdpZpxH;$Z;N?*X8u{})BgZ!2TA$%a0vSOj zzD-LqF_KzPD=R$v-GoBW$2&HDDm7Cw%lA;i2pj|Vv^)+N+?1jCBgPMoKQqQRraXoX oji8SluWNL3tsMGgPMk5VDAqY~-^TCbui1r}%g^u0*T?td2hzw>Pyhe` diff --git a/espeak-data/mbrola_ph/sv_phtrans b/espeak-data/mbrola_ph/sv_phtrans deleted file mode 100644 index fcd75c4d3b7c7059988298d5054d2ee1a7ec50a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmZ{kPfG$(6vYQ=5wvaBvP}eKC_(=gPs%`ugv`oz14@kw%4pdi`aZ1#*Veai;fLv- zx#x{DmwNEtyXW`LT<^U1ob@0G`o)rrGAHA5=odA%JSLBq)+CB|6j**mpXGh}ZT<=K zPfY$UdDrk`qrH4!ey{!P{^8p+*g6~hfm5G=^XNr`hT&evqx`~XSGDC&tmoq>?{86; z41cAqmA3~6)K7c)g6V9^njq9E9jj6|_VV4-kM{yUG#vFL z{xpLIs6X)=J``P$K73p*tVlQ}9~<5y?-}k&`n=OA9o_!lyheX5b!re%TYf`s&n4uB z*?sfJS26ojW**1cPi6Y-JqcL|^5Z{q!UsC!IL9onlh+LooBAN~AoO_#JiZLqG0IwhhRUAK^I{>*S~tVaoYDc(zrXD!ZRea=ZpYU#GheAf^kC^kRRU~ hUe};~uN?WaoH$|X$d8}XujzbkWA*N5F`IucX20v_R1W|E diff --git a/espeak-data/mbrola_ph/tr1_phtrans b/espeak-data/mbrola_ph/tr1_phtrans deleted file mode 100644 index 0d6fa2a91273ee3271fb1d3202d7f6ad86379ef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmWe(U|`4uVi53zP;k-}%1VWcKp6f|em|lA-);G;uE|KOIdx5XyH)6EBDI%h1GOTqYocW6HYyjtzge JIXn>M004>|5U2nE diff --git a/espeak-data/mbrola_ph/us3_phtrans b/espeak-data/mbrola_ph/us3_phtrans deleted file mode 100644 index 94b775bf3dc82b570d887607b7e5c2364be55017..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmZ{j&uYUk493NtVQ;Y8V05J0Wq+6g?ZIpi7$}kNrgp?Nc@{^)ZS*9jF_>+GA zET^`5O+@vLOftBi|0XUhzTl5Dd@;?JhN*o;07zxjKqb^zB z2p4_tGooAQ1JtFHci&6WIS{?l9Q_de%O^8lyyNFI|C-?$b+T<6<`TRdhy_RRW8iar zvPDC!p}ws~uJ<+`2e~gD47H4?!nu_LXqx%I++#g{zwdYTaur*oT;Hp(ln!h`%h?tq(5uy&+zLtXz1r=w!X^3)bD-O!7%OMHn diff --git a/espeak-data/mbrola_ph/us_phtrans b/espeak-data/mbrola_ph/us_phtrans deleted file mode 100644 index 405243a939578245a8f1f01cc38fc60be2985697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcmZ{jO-chn5QR%|;Q_pXJ3%6eZv4R>A&Ws_K!{`~vj|C(kc44E1drkcyozV>5>|D+ z(zcRmNWZGDU;m`L=7fmqQ|`Eh)cfpWoe4v<`I|Pst>zDsA)yUsH$AIVI zNsSBVU-WbX&l{YxasK99f#+NJx6Xg#a!aRJ$8ys*1oPLKp`@Y1UzZ_`7kohy-KLD+ ztJE76E_eFNN8;k~5p&kZlo6dlFQFza-re)TwK{g*>v=za>EIFTMB5NrfESK$z&DO} z)x!jZGlbf-8oAt0-d21s(gIX7q6+&~2A~&Ee@^q6+O#TYBwX&luPLp92A&t-vVQKL zfDawV^O77t_ec2U?@DO<#-Mc)nTg-(r0n?K*X%ju-#V+$BhFj!*6}%bUeC#o1IWC* Y-6QdQiTYpWX2j#~uY=EzhvR(c2aI4lEdT%j diff --git a/espeak-data/mbrola_ph/vz_phtrans b/espeak-data/mbrola_ph/vz_phtrans deleted file mode 100644 index 0df524f086120d3f13c4dac2b854ba0067c5ab53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2284 zcmZ{l!Dqz5f)`nkm=!N7G7&`*g29A%@Su!jiL)#jnCvFv$(!%t3wYaS z@KJL21+2g8|C5@^ZbMI1eN+8!cXdziovNy4n`3*LEzj%6Y}5VBd-DD|wRrtw2bs^v zv(5!|E|Siae46-+6e~QTzGB&W4IeQf&-1wkCOhJQoPS_>XV$-1@9pI+v$w5-&#kZG zhD$E2+QC@f(4If^`0Ef?=ZrH~y<|0Pm(HF5?e1rHGCw8PI1PJG=Tv|e^T4`a2afod z{7vE~4|42HY=|+hRUG@ZikJMbKZw6uNBidH>N!93J%?38 zK4RI-5#yX7N9U(uQZu4s=7IGI!%5;Td7F4g-X*>uUnCA4b*2;phWSq;G#?z_WaL0Mci8nj$K?iGo$rlrH z=tSO;Lnrd)$Ol3PYrE1Rhfd_jpFBUFD-a#CGxMW9)602|yv87FdA&8y_YMBc^JASs zo;a>@eLj-sI&)cNKbcYt%Tvz9fO9@=gywJag3kKewI_o2)>Y4r`FWoE>o|3gKhRmj zTk7O_w#)~|oHU=derl0_2T^}Pom}Umx}=x7#e7%seH?J=U>_r|dBKC@KlqW$Rt^7O zay=V@%qO)Els;vujvIWV&fH+|cn+H#7lMAAXTt^O-<^;BmvBeNmha#AuKsg( - -void CompileMbrola() +void CompileMbrola(const char *mbrola_file) {//================= char *p; FILE *f_in; @@ -3769,7 +3769,15 @@ void CompileMbrola() int mbrola_ctrl = 20; // volume in 1/16 ths MBROLA_TAB data[N_PHONEME_TAB]; - wxString filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN); + wxString filepath; + if (mbrola_file == NULL) + { + filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN); + } + else + { + filepath = mbrola_file; + } strcpy(buf,filepath.mb_str(wxConvLocal)); if((f_in = fopen(buf,"r")) == NULL) { diff --git a/src/espeakedit.cpp b/src/espeakedit.cpp index dd0256d5..34fa3cf8 100644 --- a/src/espeakedit.cpp +++ b/src/espeakedit.cpp @@ -63,7 +63,7 @@ extern void DictionarySort(const char *dictname); extern void init_z(); extern void CompilePhonemeData(void); extern void CompileSampleRate(void); -extern void CompileMbrola(); +extern void CompileMbrola(const char *mbrola_file = NULL); extern void CompileIntonation(); extern void InitSpectrumDisplay(); extern void InitProsodyDisplay(); @@ -148,6 +148,17 @@ if(argc > 1) CompilePhonemeData(); CompileIntonation(); } + else if(argc > 2 && strcmp(param,"--compile-mbrola")==0) + { + samplerate_native = samplerate = 22050; + LoadPhData(NULL); + if(LoadVoice("", 0) == NULL) + { + fprintf(stderr, "Failed to load default voice\n"); + exit(1); + } + CompileMbrola(argv[2]); + } exit(0); } From 7beaef44999018ce6c808a12b6257dd7989a4540 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 14 Aug 2014 17:04:33 +0100 Subject: [PATCH 4/7] mbrola/de6: support syllabic m and n --- phsource/mbrola/de6 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/phsource/mbrola/de6 b/phsource/mbrola/de6 index 1564267c..c5f69ca8 100644 --- a/phsource/mbrola/de6 +++ b/phsource/mbrola/de6 @@ -37,6 +37,8 @@ // phonemes for English words 0 @L NULL 40 @ l +0 m- NULL 20 @ m +0 n- NULL 20 @ n 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 a# NULL 0 @ From c231e8ef1a157be4f7fb79c3ad010f59dd9afe5c Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 21 Aug 2014 11:25:48 +0100 Subject: [PATCH 5/7] autogen.sh: OpenBSD does not support '-v' on ls --- autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autogen.sh b/autogen.sh index a74797a8..bb333b50 100755 --- a/autogen.sh +++ b/autogen.sh @@ -9,7 +9,7 @@ fi mkdir -p m4 touch AUTHORS touch NEWS -ln -svf README.md README +ln -sf README.md README aclocal -I m4 || exit 1 From b27f69bb5aa4c4a2c3c7ee4302422fd8c20c0299 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 31 Aug 2014 15:50:07 +0000 Subject: [PATCH 6/7] [1.48.11] Command-line: added options --sep --tie. API, changed the meaning of the "phonememode" parameter in espeak_SetPhonemeTrace() and espeak_TextToPhonemes(). Language changes to: en, eu, pt. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@385 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 18 +- dictsource/en_list | 97 +++++++--- dictsource/en_rules | 124 +++++++----- dictsource/eu_list | 322 +++++++++++++++++++------------- dictsource/eu_rules | 345 ++++++++++++++++++++++------------ dictsource/pl_rules | 2 +- dictsource/pt_list | 64 +++++-- dictsource/pt_rules | 135 ++++++-------- dictsource/ta_list | 1 + dictsource/ta_rules | 7 +- docs/commands.html | 21 ++- espeak-data/voices/europe/eu | 3 + phsource/compile_report | 13 +- phsource/ph_basque | 353 +++++++++++++++++------------------ phsource/ph_english | 7 +- phsource/ph_english_us | 4 +- phsource/ph_tamil | 1 - phsource/phonemes | 3 +- phsource/ufric/ts_eu.wav | Bin 0 -> 5092 bytes phsource/ufric/tz_eu.wav | Bin 0 -> 5372 bytes phsource/ufric/z_eu.wav | Bin 0 -> 5168 bytes src/dictionary.cpp | 99 +++++----- src/espeak.cpp | 103 ++++++++-- src/speak.cpp | 65 +++++-- src/speak_lib.cpp | 34 ++-- src/speak_lib.h | 39 ++-- src/synth_mbrola.cpp | 3 +- src/synthdata.cpp | 10 +- src/synthesize.cpp | 10 +- src/tr_languages.cpp | 14 +- src/translate.cpp | 6 +- src/translate.h | 5 +- src/transldlg.cpp | 12 +- 33 files changed, 1151 insertions(+), 769 deletions(-) create mode 100755 espeak-data/voices/europe/eu create mode 100755 phsource/ufric/ts_eu.wav create mode 100755 phsource/ufric/tz_eu.wav create mode 100755 phsource/ufric/z_eu.wav diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 3cc8b2ae..775d8798 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -85,7 +85,7 @@ p r R R2 s S t tS v w x X z -Dictionary en_dict 2014-08-09 +Dictionary en_dict 2014-08-31 0 3 3: @ @- @L a a# A: A@ aa aI aI3 aI@ aU aU@ @@ -115,7 +115,7 @@ s S t tS ts v x z Z -Dictionary ta_dict 2014-08-10 +Dictionary ta_dict 2014-08-31 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -238,7 +238,7 @@ r r. s S s. t t# t. t.# v w x z -Dictionary pl_dict 2013-05-03 +Dictionary pl_dict 2014-08-20 a E E# E~ i O O~ u y @@ -292,7 +292,7 @@ n^ p r R R2 s S t tS ts v z Z -Dictionary pt_dict 2014-08-09 +Dictionary pt_dict 2014-08-31 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -846,15 +846,15 @@ k l m n N p r R2 s S t tS v w z Z -Dictionary eu_dict 2014-05-22 +Dictionary eu_dict 2014-08-31 -a a2 aI aU e eI eU i +a aI aU e eI eU i iU o oI u Y -; b B c d D f g -h j J k l l^ m n +** b B c d D f g +j J k l l^ m n n2 n^ p Q r R2 s S t -tS ts tz v w x z +T tS ts tz w x z Dictionary ia_dict 2014-07-10 diff --git a/dictsource/en_list b/dictsource/en_list index 09e4ec1b..538a0f22 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -18,7 +18,7 @@ // ?8 Use full vowel, not schwa in some word endings -// $alt1 use strong ending (-age, -an, -ance, -ative, -table, -ed, -eria, -et, -inal, -ier -mouth -on -or -ored, -ose, -s) +// $alt1 use strong ending (-age, -an, -ance, -ate, -ative, -table, -ed, -eria, -et, -inal, -ier -mouth -on -or -ored, -ose, -s) // $alt2 use weak ending (ace, ain, an, ar*, ard, ate, ath, ell, ery, ess, et, ie, ile, ine, men, on, ot) // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] // $alt4 separate 'h', not 'th' 'ph' 'sh'; [t2] not [t] @@ -570,6 +570,7 @@ asap $abbrev ati $abbrev atk $abbrev atm $abbrev +atv $abbrev avc $abbrev avg $abbrev awol eIw0l @@ -894,6 +895,7 @@ anchovy antSoUvi anemone a#nEm@ni anemometer anIm'0mI2t3 anesthetize $alt3 +antacid $2 anew a#nju: ?3 anew a#nu: anime anImeI @@ -1026,6 +1028,7 @@ axon aks0n ayuh a#j'@ ayup a#jVp +backdate $2 backend bak'End backstory baksto@ri badmouth $alt1 @@ -1065,6 +1068,7 @@ batman batman battalion $alt3 bazaar $alt3 bazooka ba#zu:k@ +beating bi:tIN bedouin bEdu:I#n beige beIZ belisha b@l'i:S@ @@ -1085,6 +1089,7 @@ bias baI@s biased baI@st bible baIb@L bidet bi:deI +bifurcate $1 bigot bIg@t // -ed bijou bi:Zu: bikini bIk'i:ni @@ -1196,6 +1201,7 @@ caldera k0ld'e@r@ caliche ka#li:tSi caliph $alt6 calix $alt6 +callous kal@s // -ed calv kA:v // for calved, calving ?3 calv kav // for calved, calving calve kA:v @@ -1240,6 +1246,7 @@ cashmere kaSmi@3 ?3 cashmere kaZmi@3 casino $alt3 cassette $alt3 +castrate $2 catastrophe $alt3 catastrophic kat@str'0fIk catarrh k@tA@ @@ -1264,7 +1271,7 @@ centurion sEntS'U@ri@n ceres si@ri:z cerise s@ri:z ?3 certain s3:?n- -certificate s3tIfIk@t +certificate s3tIfIk@t $onlys cerulean $alt3 c'est seI $u chagrin SagrIn @@ -1436,6 +1443,7 @@ conker $1 coquina koUk'i:n@ conquistador k0nk'i:st@do@ conscience k0nS@ns +console k@nsoUl $verb consort $1 consort $verb construct $1 $onlys @@ -1450,6 +1458,7 @@ contest $verb context $1 contract $1 $onlys contract $verb +contrail k0ntreIl contralto k@ntr'altoU contraption k@ntr'apS@n contrary k0ntr@ri @@ -1552,6 +1561,7 @@ debut deIbju: début debut $text decade dEkeId decaf di:kaf +decane dEkeIn decedent dI#si:d@nt decent di:s@nt decibel dEsI#b@L @@ -1571,6 +1581,7 @@ defens dI2fEns // for defensible deficit dEfI2sIt definitive dI2fInI2tIv ?!3 defragment di:fragm'Ent +degas di:g'as degenerate $alt2 $noun dego deIgoU deice di:'aIs @@ -1602,9 +1613,9 @@ derogative $2 descant dEskant descry dI2skreI desert dI2z3:t -desert dEs3t $only -desert dI2z3:t $verb -desolate dEs@l@t +desert dEs3t $only +desert dI2z3:t $verb +desolate dEs@l@t $only desperate $alt2 ?3 detail $2 detante deIt'0nt @@ -1660,6 +1671,7 @@ dishy dISi dismal dIzm@l disparate dIsp@r@t disreputable $2 +dissipate $1 distributor $2 distro dIstroU disuse dIs'ju:s @@ -1691,6 +1703,8 @@ drier draI3 driest draI|@st duet dju:'Et dugout dVgaUt +dumber dVm3 +dumbest dVm@st dungaree dVNga#r'i: ?!3 dupe dju:p duress $2 @@ -1724,13 +1738,10 @@ eh eI eid i:d eke i:k el ,El $only -electricity I2lEktr'IsI2ti -electrode I2lEktroUd -electron I2lEktr0n -electrocute $2 -elicit I2lIsI2t +electrode I#lEktroUd +elicit I#lIsI#t élite Il'i:t -elixir I2lIks3 +elixir I#lIks3 embed Emb'Ed ember Emb3 embole $1 // embolism @@ -1746,6 +1757,7 @@ enroute 0nr'u:t ensemble 0ns'0mb@L entendre 0nt'0ndr@- entente 0nt'0nt +entirity Ent'aI3I#ti entourage 0nt2UrA:Z entrail $1 entrance $1 $onlys @@ -1763,6 +1775,7 @@ epitome I2pIt@mI epub $alt6 equal i:kw@L equation I2kweIZ@n +equilibrate $2 equipage EkwIpIdZ equivocal I2kwIv@k@L erase I2reIz // erasing erases @@ -1793,7 +1806,7 @@ ethernet $alt1 etiquette $1 ?3 etiquette EtI#k@t euclidean ju:kl'Idi:|@n -eunuch ju:m@k +eunuch ju:n@k euphemism ju:f@mIz@m eureka ju:'ri:ka# europa jU@r'oUp@ @@ -1807,6 +1820,7 @@ evenings i:vnINz evit EvI2t // inevitable exactement Egzakt@m'A~ exalt Egz'0lt +exculpate $1 excuses Ekskj'u:sI#z execute EksI2kju:t // not $2 executable $3 @@ -1819,12 +1833,15 @@ expert Eksp3:t expertise Eksp3t'i:z expletive Ekspl'i:tIv ?3 expletive EksplI#tIv +explicate $1 exploit $1 $onlys exploit $verb expo $1 exponential Eksp@n'EnS@L export $1 $onlys export $verb +expurgate $1 +extirpate $1 extract $1 $onlys extract $1 $only extract $2 $verb @@ -1858,6 +1875,7 @@ favourite feIv@-rI2t favourites feIv@-rI2ts fedora fI2d'o@r@ feisty faIsti +fellate $2 feline fi:laIn felon $alt2 feminine fEm@nIn @@ -1872,6 +1890,7 @@ ficus faIk@s fiery faI3ri ?3 filet fI2leI ?3 fillet fI2leI +filtrate $2 $verb finale fI2nA:li finance faInans $only finance $verb @@ -1894,6 +1913,7 @@ flyby flaIbaI foothold fUthoUld forage f0rI2dZ force fo@s +forearmed $2 foreknowledge $2 forensic f@rEnsIk foreshadow $2 @@ -2018,6 +2038,7 @@ gucci gu:tSi gui gu:i $onlys guinea gIni gurus gu:ru:z +?!3 gyrate $2 habitual $alt3 hacienda hA:sI'End@ @@ -2109,6 +2130,7 @@ huevo hweIvoU hula hu:l@ hullabaloo hVl@b@lu: humane $2 +hundred hVndr@d hunger hVNg3 hungover $2 hurrah h@rA: @@ -2119,6 +2141,7 @@ hussar hVz'A@ huzza h@z'A: huzzah h@z'A: hydrangea haIdr'eIndZ@ +hydrate $2 $verb hyperbola haIp'3:b@l@ hyperbole haIp'3:b@li hypercube $1 @@ -2142,6 +2165,7 @@ imagery ImIdZri imagine I2madZI2n imbecile ImbI2si:l ?3 imbecile Imb@s@L +immolate $1 impedance Imp'i:d@ns imperative Imp'Er@tIv imperfect Imp'3:fEkt @@ -2180,6 +2204,7 @@ ingenuity IndZI2n'ju:I2ti inherit Inh'ErIt // inherited innard In3d inner In3 +innervate In3:veIt innovative In@veItIv impetus Imp@t@s ?3 inquiry Inkw@ri @@ -2290,6 +2315,7 @@ laboratory la#b'0r@tri laborious $alt3 labyrinth lab3InT labyrinthine lab3'InTi:n +lactate $2 $verb lascivious $alt3 lager lA:g3 lagoon $alt3 @@ -2304,6 +2330,7 @@ lasagne lasagna $text laser $alt6 lasso las'u: ?3 lasso lasoU +latex $alt4 latrine $alt3 latte lA:t2eI ?3 launch lA:ntS @@ -2335,7 +2362,8 @@ lichen laIk@n lidar laIdA@ lien li:@n lier laI3 // outlier -ligate li:geIt +ligate $2 +?3 ligate laIgeIt lightning laItnIN lilac laIl@k lily lIli @@ -2672,6 +2700,7 @@ oppose @poUz opposer @poUz3 opus oUp@s orange 0rI2ndZ +orate $2 ordeal O@d'i@l oregano 0rIg'A:noU organelle O@g@n'El @@ -2738,6 +2767,7 @@ panache $alt3 panchakarma $alt3 $3 panchayat pa#ntSaI@t pancreas pankri@s +palpate $2 papaya pa#paI;@ papyrus pa#paIr@s parabola p@rab@l@ @@ -2843,7 +2873,8 @@ pizzeria $alt1 plaid plad ?3 plateau $2 platoon $alt3 -playtest pleItEst +playa plaI@ +playtest $alt1 plaza plA:z@ plebeian pl@b'i:@n plethora plET3r@ @@ -2851,13 +2882,14 @@ plicate $2 plumber plVm3 plus plVs pois pwA: $only -poly p0lI +poleaxe poUlaks politer p@l'aIt3 politic p0l@tIk $onlys poll poUl +poly p0lI polyamide p0lI'eImaId polyester p0lI'Est3 -polygon $alt1 +?3 polygon $alt1 polythene $1 porcelain $alt2 populace $alt2 @@ -2866,6 +2898,7 @@ portend po@t'End poseidon p@saId@n posse p0si postage poUstI2dZ +postdate $2 practise praktI2s prayer pre@ precedence prEsI2d@ns @@ -2925,6 +2958,8 @@ project pr0dZEkt $onlys project $verb promenade pr0m@n'A:d pronoun proUnaUn +propranolol proUpr'an@l0l +prostrate $2 $verb protege pr0t@ZeI ?3 protege proUt@ZeI protegé protege $text @@ -2955,6 +2990,7 @@ pythagoras paIT'ag@r@s python paIT@n pyramidal pI2r'amId@L +qua kwA: qaeda kaId@ quadrilateral $3 quash kw0S @@ -3186,6 +3222,7 @@ sciatica saI'atIk@ sclera skli@r scourge sk3:dZ ?5 scourge skVRdZ +scrapheap $alt4 scrotum skroUt@m scuba sku:b@ seabed si:bEd @@ -3347,16 +3384,18 @@ stygian stIdZi@n suave swA:v subcategory $2 // U.S ? subcontinent $2 -subject sVbdZ'Ekt $verb +// subject sVbdZ'Ekt $verb +sublevel sVblEv@L sublime $2 submenu s'Vbm,Enju: subordinate $2 +subordinate $alt1 $verb subpoena su:p'i:n@ subsequent sVbsI2kw@nt subside s@bsaId subtly sVt@lI $verbf subvocal sVbv'oUk@L -succinct s@ksINkt +succumb s@kVm sucrose su:kroUs suede sweId suerte swe@rteI // -ed, -es @@ -3371,6 +3410,7 @@ suntan sVntan suite swi:t $onlys superb su:p'3:b superfluous su:p'3:flu:@s +superheat $3 supernal su:p'3:n@L superstructure $1 supplier s@plaI3 @@ -3414,6 +3454,7 @@ tangerine tandZ@r'i:n taoiseach ti:S@x tapestry tap@stri tarantula t@rantS@l@ +tardis $alt1 tariff tarIf tase teIz taskforce t'askf,o@s @@ -3520,6 +3561,7 @@ tricycle traIsIk@L trilogy trIl@dZi trio tri:oU triplicate $alt2 +triplicate $verb trisquel trIsk'El triumphant $2 trois twA: @@ -3597,6 +3639,7 @@ useful ju:sf@L utan u:t'an utensil ju:t'Ens@L +?!3 vacate $2 vaccine $2 valet valeI ?3 valet val'eI @@ -3687,8 +3730,8 @@ whate're w02t'e@ whatsoe're w02tsoU'e@ wheelbarrow w'i:l_b,aroU ?2 wheelbarrow w#'i:l_b,aroU -whereas we@'az -?2 whereas w#e@'az +whereas we@az +?2 whereas w#e@az wherewithal we@wIDO:l ?2 wherewithal w#e@wIDO:l whew fju: @@ -3976,6 +4019,7 @@ Eyjafjalla eIja#fjatla# Faroe fe@roU Faroes fe@roUz Fermanagh f3:m'an@ +Flores flo@rIz Folkestone foUkstoUn Fuego fweIgoU Gabon gab0n @@ -4522,6 +4566,7 @@ Jesus dZi:z@s Joachim dZoU@kIm Johann joUhA#n Jonah dZoUn@ +Jolene $alt3 Jorge ho@heI José hoUs'eI Jose hoUs'eI @@ -4735,7 +4780,6 @@ Zoë zoUi Acura akjUr@ Advil advIl Allgemeine alg@maIm@ -Andagakavi anda#ga#kka#v%i // a Tamil keyboard Andromeda andr'0mId@ Aquino a#ki:noU Asimov azI#m0f @@ -4772,6 +4816,7 @@ Damocles dam@kli:z (da vinci) da#vIntSi Dante dA:nt2eI ?3 Datsun dA:ts@n +Degas deIgA: $capital Desiree dI2zi@reI ?3 Desiree dEz@r'eI Deslauriers dI2lo@rIeI @@ -4807,6 +4852,8 @@ Ghandhi gA:ndi Gibson gIbs@n Godzilla g0dz'Il@ Goliath $alt3 +Gogh g0x +?3 Gogh goU Grigio gri:Z'oU Guinness gInIs Gutierrez gu:tj'ErEz @@ -4833,7 +4880,8 @@ Jimenez hIm'EnEz Jonese dZoUnz // Joneses Kapoor $2 Kawasaki kaU|@s'A:ki -Kendell kEnd@L +Kendall $alt2 +Kendell $alt2 Khrushchev kru:stSEf Khruschev kru:stSEf Kroger kroUg3 @@ -4932,6 +4980,7 @@ Urquhart 3:kA@t Versace v3sA:tSi Vicodin vaIk@dI#n Volkswagen v'oUlksv,A:g@n +Vries vri:s Wegener veIg@n3 Wii wi:: Wiimote wi:moUt @@ -5160,6 +5209,7 @@ haves havz has %ha#z $pastf $only has haz $only $atend (has been) %ha#z%bIn $pastf +(has-been) hazbi:n (has to) haztu: $atend (has not) h@zn%0t $pastf (has not) ha#zn0t $pastf $atend @@ -5174,7 +5224,7 @@ had ,had $atend (had it) h,adI2t (had them) h,adDEm (had one) hadwVn $atend -(had any) h,ad||Eni +(had any) h,ad||,Eni (had some) h,ad||sVm having ,havIN $strend2 $pastf $only haven't hav@-nt $pastf @@ -5276,6 +5326,7 @@ thee Di: $u+ thou DaU thy ,DaI thine DaIn $u+ +thyself DaIs'Elf (i had) aI||h'ad $atend (he had) hi:||h'ad $atend diff --git a/dictsource/en_rules b/dictsource/en_rules index 5d6086b7..d7a78110 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -279,7 +279,7 @@ v) ac (a eIk ac (cent ak ac (centu %ak - accessi aks'Es@ + accessib aks'Es@b acci (_ 'A:tSi ac (cid ak acc (ol ak @@ -332,6 +332,7 @@ ach (rom ak ac (id_ as _) ac (i a#s + acial eIS@L acious 'eIS@s _) ack ak _) ack (n a#k @@ -417,6 +418,7 @@ ad (vert_ ad ad (vert a#d _) advo adv@ + _gr) ad (a eId hex) ad (e ad torn) ad eId _r) ad (L03 eId @@ -555,6 +557,7 @@ _) ai (z aI .group al + &) al (X$w_alt2++ @L _) ale (C_ alI2 @ic) al (_S2 @L _) al (@ a#l @@ -622,6 +625,7 @@ al (mig %0l _) al (ms A: &) alo (_ @loU + h) alo (gena a#l0 &) al (ous_ @l _) al (p al alpha alf@ @@ -993,6 +997,7 @@ propag) an (d 'an _n) arr (at a#r _) arr (o ar _) arro (g ar@ + arr (o_ A@ ar (i_ 'A@r ?3 @) ar (io_ 'ar _b) ar (L02t ar @@ -1006,6 +1011,7 @@ calend) ar 3 &l) ar (_ 3 &l) ar (ist 3 &m) ar (_ 3 + an) ar (_ 3 lun) ar (_ =3 _sep) ara (b 3r@ _p) ara ar@ @@ -1019,7 +1025,7 @@ calend) ar 3 &) ar (diz 3 %C) ar (d_ 3 &d) ar (d_ 3 - &h) ar (d_ 3 +// &h) ar (d_ 3 &ch) ar (d 3 &k) ar (d_ 3 ll) ar (d_ A@ @@ -1104,6 +1110,7 @@ calend) ar 3 _p) arlia A@l@ @) ar (ol @r arom (at a#roUm + &) ar (ous_ 3 arre (_ A@ arred (_ A@d arring (_ A@I2N @@ -1120,7 +1127,7 @@ calend) ar 3 ?3 ion) ary (_ Er%i XC) ary (_ e@r%i w) ar O@ - wh) ar O@ + _wh) ar O@ w) ar (r 0 w) ar (i e@ w) ar (y e@ @@ -1228,8 +1235,10 @@ calend) ar 3 w) atch 0tS _s) ata (n eIt@ _g) ator eIt3 - &) ate (_$w_alt2 @t + &) ate (_$w_alt1+ eIt + &) ate (_$w_alt2+ @t der) ated (_ eItI#d + der) ating (_ eItIN pal) ate (_ @t consul) ate (_ @t macul) ate (_ @t @@ -1244,14 +1253,11 @@ consul) ate (_ @t _it_separ) ate (_ @t par) ates (_ eIt|s ct) ate (_ =eIt - @) ated (++_ eItI#d _s) ate (ll at@ @) ati (_ 'A:ti at (im_ 'eIt - @) ating (++_ eItIN &) at (ive @t &) at (ive_$w_alt1 eIt -// &) ately (_ @tli ul) at (ory 'eIt sen) at @t pl) at (ea at @@ -1325,6 +1331,7 @@ _it_separ) ate (_ @t st) atus eIt@s ?3 st) atus at@s _) at (y eIt + &) at (y_ @t .group au au O: @@ -1737,7 +1744,8 @@ _it_separ) ate (_ @t co (mprehen k0 co (mprom k0 _) comp (tr k%0m - compu (t k%0#mpju: + co (mput k%0# + co (mputat k0 _) co (mr k0 _) con (@ k%0#n _) conce (ntra k0ns@ @@ -1778,6 +1786,7 @@ _it_separ) ate (_ @t _) co (nstip k0 _) co (nstitut k0 _) co (nsole k0 + _) co (nstel k0 _) co (nsul k0 _) co (nsult k%0# _) co (ntact k0 @@ -1785,7 +1794,7 @@ _it_separ) ate (_ @t co (ntine k0 _) co (ntour k0 _) co (ntrA k0# - _) contra (C@P6 k,0ntr@ + _) contra (@P6 k,0ntr@ _) contrast k0#ntraast contrac (t k%0#ntrak contrar k%0#ntre@ @@ -1870,15 +1879,16 @@ _it_separ) ate (_ @t _) de (ba dI2 _) de (bil dI# _) de (c@ dI# - deca (den dEk@ - _) decaffei d%i:kafI + _) deca dEk@ + _) deca ((ff d%i:ka + _) deca (nt d%Ika _) de (cL05 dE de (cenc di: de (cib dE de (cil dE de (cim dE _) de (com d,i: - _) de (con d,i: + _) de (conP2 d,i: de (cor dE de (coru dI2 de (creas di: @@ -1886,6 +1896,8 @@ _it_separ) ate (_ @t de (du dI2 _) de (emp d%i: _) de (f@ dI2 + _) de (falc di: + _) de (feca dE de (finit dE de (flat d%i: de (feren dE @@ -1895,6 +1907,8 @@ _it_separ) ate (_ @t _) de (g@ dI2 _) de (hAP2 d,i: _) de (hyd ,di: + _) de (ifL02 deI +?3 _) de (ifL02 di: _) de (ist deI _) de (j dI2 _) de (l@ dI2 @@ -1906,6 +1920,7 @@ _it_separ) ate (_ @t de (lv+ dE de (ma dI2 de (magog dE +?!3 _) de (marca di: demea dI2m'i: de (men dI2 _) de (milit d%i: @@ -1922,9 +1937,11 @@ _it_separ) ate (_ @t deni (tri d%i:naI _) de (no dI2 _) de (nu dI2 + _) de (nuda d,i: _) de (o d%i: _) de (p@ dI2 de (per d%i: + _) de (pila dE de (pol d%i: de (pop d%i: depo (siti dEp@ @@ -2022,7 +2039,7 @@ _it_separ) ate (_ @t di (scov dI2 _) dis (eP3 ,dIs di (sh_ dI - di (shC dI + _) di (shC dI _) di (shev+ dI2 _) dis (hAP3 dI2s _) dis (inP3 ,dIs @@ -2037,7 +2054,7 @@ _it_separ) ate (_ @t _) diss (@ dI2s dis (sect daI dis (sid dI - di (ssip dI + _) dis (sip dI dis (solu dI dis (son dI di (stan dI @@ -2295,6 +2312,7 @@ _it_separ) ate (_ @t cl) ed (_S1v d @p) ed (_S2vdei t @@er) ed (_S2v d + our) ed (_S2v d @ss) ed (_S2dv t @t) ed (_S2vdei I#d ?8 @t) ed (_S2vdei Ed @@ -2374,11 +2392,12 @@ _it_separ) ate (_ @t _w) eigh eI .group el - _) el (A %Il + _) el (A I#l _) electro %Il,EktroU - _) elect (rocu I2lEkt - _) elect (rol %ElEkt - _) elect (ron I2lE2kt + _) elect (rici I#lE2kt + _) elect (rocu I#lE2kt + _) elect (rol I#lE2kt + _) elect (ron I#lE2kt _) ele (g ElI _) elem ElIm _) ele (p ElI @@ -2440,6 +2459,7 @@ _it_separ) ate (_ @t em (ana Em emba (s Emb@ em (blem Em + _) em (broc Em em (bry Em em (eral Em _) em (e I2m @@ -2505,6 +2525,7 @@ _it_separ) ate (_ @t _) ener En3 g) ener (i @nEr @@th) enes (_ =@ni:z + _) en (gel En g) en (etic I2n &) en (ger In eng (lA INg @@ -2771,6 +2792,7 @@ _it_separ) ate (_ @t .group es ess (_$w_alt2 @s + &) es (X$w_alt1+ Es &) es (_S1i z &es) es (_ i:z ese (_ i:z @@ -2778,7 +2800,7 @@ _it_separ) ate (_ @t &f) es (_S1 s &k) es (_S1 s &p) es (_S1 s - &t) es (_S1 s + &t) es (_S1 z# &c) es (_S1 %Iz &g) es (_S1 %Iz &ch) es (_S1 %Iz @@ -2851,9 +2873,10 @@ _it_separ) ate (_ @t eth (ic ET _) ethno (@ ETnoU# eth (ra 'i:T - eth (yl i:T - eth (ylen ET + eth (ylK i:T +?3 ethyl (K ET@L @C) eth (_S3e @T + _) etio i:tI@ etta (_ 'Et@ ette (_ 'Et pal) ett (e @t @@ -2945,6 +2968,7 @@ _it_separ) ate (_ @t excav Eksk@v _) exc (e %Eks exc (i %Eks + _) ex (ecra Eks _) ex (crem Eks exce (llen Eks@ C) ex (e Eks @@ -2962,6 +2986,7 @@ _it_separ) ate (_ @t exped (it Eksp@d ex (pert Eks experim %EkspErIm + _) ex (piat Eks @) ex (ia 'Eks _) exi (gen EksI ss) ex (_ Iks @@ -3184,7 +3209,7 @@ _it_separ) ate (_ @t scr) i (ber aI i (ber_ aI t) ibe (t Ib'E - i (bilit I + i (bilit @ b) i (ble_ aI @) ible (_S4ev @b@L @) ibles (_S5ev @b@Lz @@ -3248,7 +3273,7 @@ _it_separ) ate (_ @t ifier (_ IfaI3 r) i (fl aI st) i (fl aI - &) ify (_ =I2faI + &) ify (_ =I#faI i (genous 'I n) ihi aI|@ _) i (h aI @@ -3300,8 +3325,8 @@ _it_separ) ate (_ @t ?8 C) iar aIa# iar (iC i@3 iar (ity Iar - &) iary =j@r%I - &l) iary =i@r%I + &) iary =j@ri + &l) iary =i@ri _) ian i@n &) ia (_N =i|@ &) ia (_ =i@ @@ -3455,7 +3480,6 @@ _it_separ) ate (_ @t igno (ran Ign3 ig (na Ig _m) ig (ra aIg - _m) ig (rati %aIg igu (e 'i:g igu (_ 'i:g @@ -3643,7 +3667,9 @@ _it_separ) ate (_ @t _) in (tegri %In inte (llec Int@ _) inter (@P5 ,Int3 // prefix + _) inter (- ,Int3 _) inter (AP5 ,Int@r + _) inter (cal %Int3: _) inter (est Intr interfer Int@f'i@3 _) int (erio+ %Int @@ -3988,7 +4014,7 @@ _it_separ) ate (_ @t _) jes (ui dZEz _) jh (A@ dZ _) jiha (d dZI2hA: - _) joa (n@ dZoU'a + _) joa (nn dZoU'a n) j (a_ j j (ü j @@ -4063,12 +4089,11 @@ _it_separ) ate (_ @t &t) ling (_ _lIN &l) ling (_S4vd IN linux lInVks - listen lIs@n ?3 _) lo (gK lO @) lo (gous =l@ lu (na lu: - @) ly (_S2i l%i - @l) ly (_S2 i + &) ly (_S2i l%i + &l) ly (_S2 i f) ly (_ laI ief) ly (_S2 l%i ff) ly (_S2 l%i @@ -4079,7 +4104,7 @@ multip) ly laI &p) ly (_S2 l%i p) ly (_ laI _) ly (d lI - @) lEss (_S4i l@s + &) lEss (_S4i l@s @) lEssly (_S6i l@sl%i .group le @@ -4140,8 +4165,8 @@ multip) ly laI mbly mbl%I o) mb (e m _bo) mb (K m - _du) mb m - _) mc (C@ m@k + _du) mb (K m + _) mc (C@P2 m@k _) mc (_C m@k _) mc (_L05 m@ // c,g,k _) mc (L05@ m@ @@ -4332,6 +4357,7 @@ multip) ly laI @@C) o (_ =oU oa oU oa (_ 'oU@ + oa (b oUa g) oa (n_ oU@ z) oa (n_ 'oU@ br) oa (d O: @@ -4432,6 +4458,7 @@ multip) ly laI @l) oge (_ 0g &) o (gen_ @ ogeni (c oUdZ'EnI + o (genat '0 o (genous '0 o (geny '0 r) o (ger 0 @@ -4468,7 +4495,7 @@ multip) ly laI orp) oise @s o (ism oU @) o (ist oU - oix (_ wa + oix (_ wA: tr) o (jan oU o (ku oU o (ky_ oU @@ -4594,7 +4621,7 @@ multip) ly laI &) om (ise_ =@m &) om (ize_ =@m @) om (ist_ =@m - _s) om (n %0m + _s) om (na %0m _) omni (@@P4 ,0mnI2 _) omni 0mnI _) omnipo 0mn'Ip@ @@ -4830,7 +4857,7 @@ multip) ly laI _f) ore (tel %o@ @) or (iti 0r @) or (ity 0r - _fav) orit 3I#t + _fav) orit @-rI#t _) or (iC 0r @t) ore (_ 3 st) ore (_ o@ @@ -4932,11 +4959,11 @@ multip) ly laI &g) ot (_ @t &rr) ot (_ @t &) ot (_$w_alt2 @t - n) ot (a oUt r) ot (a oUt t) ot (a oUt c) ot (an oUt ot (at oUt + nn) ot (at @t h) ote (l %oUtE p) ot (enti @t b) oth oUT @@ -5027,7 +5054,6 @@ multip) ly laI c) ou (pl V &) our (_ 3 np) our (_ o@ - &) oured 3d ev) our (ed aU@ our (n 3: ?5 our (n VR @@ -5256,6 +5282,7 @@ multip) ly laI _) peregrin pEr@grIn per (fec p3 _) per (iC@@ p,Er + _) per (igr pEr _) perini pErIn'i: _) per (iph p3r _) per (isc pEr @@ -5390,6 +5417,7 @@ multip) ly laI _) pro (sa pr@ _) pro (sc pr@ pro (spectA pr@ + _) pro (stra pr0 _) pro (sumer pr%oU pro (tec pr@ pro (test pr@ @@ -5500,6 +5528,7 @@ multip) ly laI _) re (arm %ri: _) re (au@P2 ,ri: re (ck rE + _) re (clina rE reco (g rEk@ _) re (comP2 r,i: _) re (conP2 ,ri: @@ -5562,6 +5591,7 @@ multip) ly laI repe (titiv rI2pE re (pli rE re (prim rE + _) re (prob rE re (pt rE _) re (puta rE re (quis rE @@ -5749,6 +5779,7 @@ multip) ly laI 1_) st (_ _) st (_ s@nt stein staIn + i) st (en_ s _) s (u s &) s (u_ =s ssue Su: @@ -5760,7 +5791,7 @@ multip) ly laI Ai) s (y z s (_N z @) s (_NS1m z - @) s (_$w_alt1S1 s + @) s (_$w_alt1 s _BA) s (_N s &se) s (_S1 I#z &sse) s (_S2 I#z @@ -5806,8 +5837,8 @@ multip) ly laI su (burba s@ su (bv s@ substa (nt s@bsta - su (ccA s@ - su (ccul sV + su (cce s@ + su (cci s@ su (ffic s@ sugar SUg3 re) su (mA zju: @@ -5856,6 +5887,7 @@ multip) ly laI _) tz (ar ts t (h$w_alt4 t t (A$w_alt4 t2 + t (E$w_alt4 t2 t (ap_ t2 ie) t (ary_ t2 @@ -5875,6 +5907,7 @@ multip) ly laI t (op_ t2 @) town (_S4 t2aUn tow (er t2aU + _) trans (migP5 trans _) trans (nP5 trans _) tri (A traI _) trie traI @@ -5969,12 +6002,12 @@ multip) ly laI theo (logy TI'0 theo (logis TI'0 _) th (eC% T + _) th (us D .group ti &) tia (_ S@ &s) tia (_ tS@ - propi) ti (a tI ti (ac tI &) tian (_ =S@n &s) ti (an_ tS @@ -5998,6 +6031,7 @@ multip) ly laI tion (ality S@n &) tious S=@s AC) tive (_ =tIv + _) ti (trat t%aI .group tu @@ -6116,7 +6150,7 @@ contin) u ju: _) u (lA u: &f) ul (_ @L ?8 &f) ul (_ Vl - s) ul (_ @L + &s) ul (_ @L @) u (la_ =jU @) u (lar =jU @) u (late =jU @@ -6369,6 +6403,7 @@ contin) u ju: v v v (v _) v (la v + _) vr (A vr @) va (len veI _) vehem vi@m @@ -6444,8 +6479,7 @@ contin) u ju: xis (_ =ksIs xus (_ =ks@s xu (a =kSu: - lu) x (ur gZ -?3 lu) xu (r gZU@ + lu) xu (r gZU@ xure (_ kS%U@ .group y diff --git a/dictsource/eu_list b/dictsource/eu_list index a70d33bc..970872a7 100755 --- a/dictsource/eu_list +++ b/dictsource/eu_list @@ -1,132 +1,190 @@ - -// This file is UTF8 encoded -// Spelling-to-phoneme words for Basque - -b be -c ze -d de -f efe -g ge -h atSe -j xota -k ka -l ele -m eme -n ene -ñ en^e -p pe -q ku -r eR2e -s ese -t te -v uBe -w uBe||bikoitza -x iSa -y i||grekoa -z zeta - -_a a -_e e -_i i -_o o -_u u - - -// numbers -_0 zer'o -_1 b'at -_2 b'i -_3 hir'u -_4 l'aU -_5 b'ost -_6 s'eI -_7 zazp'i -_8 zort'i -_9 beD'eratzi -_10 am'aR2 -_11 am'aIka -_12 amaB'i -_13 ama'ir,u -_14 amal'aU -_15 amaB'ost -_16 amas'eI -_17 amazazp'i -_18 emezort'i -_19 emeretz'i -_20 hoQ'eI -_2X hoQ'eIta -_40 b'eR2oQeI -_4X b'eR2oQeIta2 -_60 ir'uroQeI -_6X ir'uroQeIta2 -_80 l'aUroQeI -_8X l'aUroQeIta2 -_1C e'un -_2C b'eR2eun -_0C R2e,un -_0M1 mil'a -_0M2 mil^'i;oI -_0and eta -_dpt _koma - - -// names of punctuation and symbol characters - - - -// functuion words -// conjunctions -eta $u+ $pause // and -bainan $pause - - -// pronouns -ni $u+ -zu $u+ -hura $u+ -gu $u+ -zuek $u+ -haiek $u+ - -nire $u+ // possessive -zure $u+ -haren $u+ -bere $u+ -gure $u+ -zuen $u+ -haien $u+ -beren $u+ - -hau $u+ // this -hori $u+ // that -hura $u+ // that (further) - -// auxillary verbs -izan $u // to be -naiz $u -zara $u -da $u -gara $u -zarete $u -dira $u - -egon $u // to be -nago $u -zaude $u -gaude $u -zaudete $u -daute $u - - -// gramatical suffixes which can appear as words appended to numbers etc. -// Should these be in eu_rules ?? -a $u -an $u -ean $u -eko $u -era $u -ko $u - - -etxe $1 $only - + +// This file is UTF8 encoded +// Spelling-to-phoneme words for Basque + +b be +c ze +d de +f 'efe +g ge +h 'atSe +j J'ota +k ka +l 'ele +m 'eme +n 'ene +ñ 'en^e +p pe +q ku +r 'eR2e +s 'ese +t 'te +v 'uBe +w 'uBe||bikoitza +x 'iSa +y i||gr'ekoa +z 'z'eta + +_a a +_e e +_i i +_o o +_u u + + +// numbers +_0 zer'o +_1 b'at +_2 b'i +_3 'iru +_4 l'aU +_5 b'ost +_6 s'eI +_7 z'azpi +_8 z'ortzi +_9 beD'eratzi +_10 am'aR2 +_11 am'aIka +_12 am'aBi +_13 am'aIru +_14 am'alaU +_15 am'aBost +_16 am'aseI +_17 am'azazpi +_18 em'ezortzi +_19 em'eretzi +_20 oQ'eI +_2X oQeIta +_40 beR2oQ'eI +_4X beR2oQeIta +_60 iruroQ'eI +_6X iruroQeIta +_80 laUroQ'eI +_8X laUroQeIta +_1C e'un +_2C beR2'eun +_3C ir'ureun +_4C laur'eun +_5C bost'eun +_6C sei'eun +_7C zazp'ieun +_8C zortz'ieun +_9c bederatz'ieun +_0C e,un +_0M1 m'il^a +_0M2 mil^'ioI +_1M2 mil^'ioI||bat +_0and eta +_dpt _koma + + +// names of punctuation and symbol characters +_. p'untu +_, k'oma +_- gid'oI +_! arr'idura +_? gald'era +_: b'i||p'untu +_; p'untu||eta||k'oma + +// functuion words +// conjunctions +eta $u+ $pause // and +baina $u+ $pause + +// pronouns +ni $1 +zu $1 +hura $1 +gu $1 +zuek $1 +haiek $1 +nire $u+ +zure $u+ +haren $u+ +bere $u+ +gure $u+ +zuen $u+ +haien $u+ +beren $u+ + +hau $1 // this +honen $1 +hauen $1 +hori $1 // that +horren $1 // genitive +hura $1 // that (further) +haien $1 // genitive + +// Some auxiliary verbs +gara $2 +zara $2 +dira $2 + +// gramatical suffixes which can appear as words appended to numbers etc. +// Should these be in eu_rules ?? +a $u +ak $u +an $u +ean $u +etan $u +eko $u +etarako $u +ko $u +era $u +ra $u +etara $u + + +// Other words (mostly nouns) + +// Bisillabic words which have the stres always in the first syllable +kaixo $1 +testu $1 +lehia $1 +patu $1 + +// Bisillabic words whitch get misspronounced with the suffix list +etxe $1 $only +kale $1 $only +aste $1 $only +urte $1 $only + +// j as [x] +jipoi x'ipoi + +// other + +aerobiko $3 +aerodinamiko $5 +aerodinamika $5 +aerodromo $3 +aerometro $3 +aeromodelismo $6 +aeronauta $4 +aeronautika $4 +aeronautiko9 $4 +aerosol $4 +aerostatika $4 +aerostato $4 +adrenalina adrenalin2a +aharraus $2 +aharrausika $2 +ahur aur $only +ahurr auR2 + +// Abbreviations +adib ad'ibidez $hasdot + +// proper names and surnames +juan xw'an +jorge x'orxe +jose x'ose +josé x'os'e +joaquín xoak'in +san $u +santo $u +aristoteles $3 +hume x'iUm +nietztsche n'itSe +abako $1 diff --git a/dictsource/eu_rules b/dictsource/eu_rules index 0db9256f..827b4ca9 100755 --- a/dictsource/eu_rules +++ b/dictsource/eu_rules @@ -1,147 +1,250 @@ +// This file is UTF8 encoded +// Spelling-to-phoneme rules for Basque + +.L01 b d g +.L02 e i + + +.group a + a a + ai aI + ahi aI + au aU + ahu aU + a (_S1t a + ak (_S2t ak + ari (_S3t ari + aren (_S4t a**en + arekin (_S6t a**ekin + arentzat (_S8t a**entzat + arentzako (_S9t arentzako + an (_S2t an + atik (_S4t atik + ara (_S3t a**a + arat (_S4t arat + atatik (_S6t atatik + atara (_S5t ata**a + atarat (_S5t atarat + ako (_S3t ako + atako (_S5t atako + araino (_S6t a**ain^o + ataraino (_S8t ata**an^o + arantz (_S6t a**antz + atarantz (_S8t a**antz + agana (_S5t agana + arengana (_S8t a**engana + arenganaino (_s11 a**enganain^o + arengatik (_S9t a**engatik + atzat (_S5t atzat + + -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Basque +.group b + b b + _ez_) b (A p' + +.group c + c k + c (L02 T + + -.group a - a a - ai aI - au aU +.group d + d d + dd J + A) d (A D // ?? + _ez_) d (A t' + + + +.group e + e e + ei eI + ehi eI + l) ehi (A eI + eu eU + ek (_S2t ek + ei (_S2t eI + en (_S2t en + ean (_S3t ean + etan (_S4t etan + etatik (_S6t etatik + etara (_S5t eta**a + erat (_S4t erat + etako (_S5t etako + eko (_S3t eko + etarako (_S7t etarako + etarantz (_S8t eta**antz + etaraino (_S8t eta**aino + engana (_S6t engana + entzat (_S6t entzat + entzako (_S7t entzako + engatik (S7 engatik + ekin (_S4t ekin + ekiko (_S5t ekiko + ez (_S2t ez + etaz (_S4t etaz + + -.group b - b b +.group f + f f + + +.group g + g g + A) g (A Q // ?? + _ez_) g (A k' + gana (_S4t gana + go (_S2t go + -.group c - c k - c (e s - c (i s +.group h + h // silent + zi) h (o x + + +.group i + i i + K) i (_S1t i + ad) i (eraz j + le) i (h j + arraz) i (on j + -.group d - d d - Ki) d (A J - dd J - A) d (A D // ?? +.group j + j J // try [x] [J] [j] [J^] [Z] [S] + ad) j (udika x + + +.group k + k k + ko (_S2t ko + + +.group l + l l + ll l^ + _ez_) l (A l' + +.group m + m m + + -.group e - e e - ei eI - eu eU +.group n + n n + n (_S1t n +adrenali) n n2 + admi) n (istr n2 + - &) ek (_S2 ek - +.group o + o o + oi oI + + -.group f - f f +.group p + p p + + +.group q + q k + + -.group g - g g - A) g (A Q // ?? +.group r + r r + _) r R2 + rr R2 + A) ri (_S2t ri + ren (_S3t ren + ra (_S2t ra + rat (_S3 t rat + rantz (_S5t rantz + raino (_S5t raino + rako (_S4t rako + rentzat (_S7t rentzat + rentzako (_S8t rentzako + rekin (_S5t rekin + rengan (_S6t rengan + rengana (_S7t rengana + rengandik (_S9t rengandik + rengatik (_S8t rengatik + + +.group s + s s + + -.group h - h // silent +.group t + t t + ts ts + tt c + tx tS + tz tz + tan (_S3t tan + tara (_S4 t tara + tarat (_S5t tarat + tik (_S3t tik + tatik (_S5t tatik + taz (_S3t taz + tu (_S2t tu + tuko (_S4t tuko + tzen (_S4t tzen + ten (_S3t ten + + +.group u + u u + + -.group i - i i +.group v + v b + + +.group w + w u + + -.group j - j J // try [x] [J] [j] [J^] [Z] [S] +.group x + x S + + +.group y + y jj + -.group k - k k - - -.group l - l l - ll l^ - Ki) l (A l^ - - -.group m - m m - - -.group n - n n - Ki) n (A n^ - - -.group ñ - ñ n^ - - -.group o - o o - oi oI - - -.group p - p p - - -.group q - q k - qu kw - que (_ k - - -.group r - r r - _) r R2 - r (_ R2 - rr R2 - - -.group s - s s - - -.group t - t t - Ki) t (A c - ts ts - tt c - tx tS - tz tz - - -.group u - u u - - -.group v - v v - - -.group w - w w - - -.group x - x S - - -.group y - y j - K) y (K i - - -.group z - z z - - - -.group - ç s - ü Y +.group z + z z + _e) z (_L01 %z + _e) z (_l + z (_S1t z + +.group + á ''a + é ''e + í ''i + ó ''o + ú ''u + ç s + ü Y + ñ n^ + diff --git a/dictsource/pl_rules b/dictsource/pl_rules index 873545cb..1f83040b 100644 --- a/dictsource/pl_rules +++ b/dictsource/pl_rules @@ -81,7 +81,7 @@ .group c c ts - ch h + ch x ch (i C chi (A hj psy) chi (a hi diff --git a/dictsource/pt_list b/dictsource/pt_list index 1a9f0859..269148f4 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -120,6 +120,11 @@ _− m'enUs ½ m'eIU ¾ tRes#kw'a*@-tUs# ® xeZistR'adU +↑ s'Et&as'im& +↓ s'Et&ab'aISU +← s'Et&aes#k'e*@-d& +?2 → s'Et&adZi*eIt& + ?1 ™ m'a*@-k&xeZiSt'ad& ?2 ™ m'a*@-k&xeZistR'ad& _, v'irgul& @@ -694,14 +699,18 @@ ampola $alt2 ampulheta $alt2 anchova $alt2 andorra $alt2 +andrea $alt +andreia $alt antonieta $alt2 apego $alt2 $noun apelo $alt2 $noun apelos $alt2 aposto $alt $verb aperto $alt2 $noun +apertos $alt2 apneia $alt apoio $alt $verb +aqueia $alt arredores $alt arremesso $alt2 $noun arrocho $alt2 $noun @@ -722,9 +731,12 @@ açores $alt2 bairro b'aIxU baitola $alt2 balancete $alt2 +bangladesh $alt banquete $alt2 barreto $alt2 +basileia $alt bastonete $alt2 +baviera $alt beco $alt2 besta $alt2 beça $alt @@ -753,14 +765,17 @@ broto $alt2 $noun buceta $alt2 cabresto $alt2 cacete $alt2 +cacoete $alt2 caderneta $alt2 cadete $alt2 caibro k'aIbRU cãibra k'&~IbR& caixeta $alt2 +caldeia $alt camelha $alt camiseta $alt2 canaleta $alt2 +cananeia $alt canhoto $alt2 capacete $alt2 caractere $alt @@ -775,18 +790,16 @@ catequeses $alt catorze $alt2 cavalete $alt2 cebola $alt2 -cedro $alt cefaleia $alt centopeia $alt cerebelo $alt2 cerca $alt $verb cerco $alt $verb cetro $alt -chamego $alt2 $verb -chamegos $alt2 +chamego $alt2 +chamego $alt $verb chapeleta $alt2 chaveta $alt2 -chefe $alt choco $alt2 $noun choça $alt chofer $alt @@ -823,7 +836,6 @@ controles $alt2 controles $alt $verb controlo $alt2 $noun conveses $alt -copta $alt coreia $alt cores $alt2 cores $alt $verb @@ -835,8 +847,10 @@ coro $alt $verb corpete $alt2 corpos $alt corto $alt +corveia $alt corveta $alt2 corvos $alt +cosme $alt costeleta $alt2 coto $alt2 cotovelo $alt2 @@ -844,11 +858,14 @@ cozem $alt cratera $alt crede $alt2 credo $alt +crimeia $alt +decoreba $alt decoro $alt2 $noun degelo $alt2 desaforo $alt2 desamores $alt2 -desapego $alt2 $noun +desapego $alt2 +desapego $alt $verb desassossego $alt2 $noun desconfortos $alt2 desconsolo $alt2 $noun @@ -857,6 +874,7 @@ descordo $alt descorno $alt desemprego $alt2 desemprego $alt $verb +desenvolto $alt2 desespero $alt2 desespero $alt $verb desfecho $alt2 @@ -869,6 +887,8 @@ desse $alt2 desse $alt $verb deste $alt2 deste $alt $verb +destempero $alt2 $noun +destemperos $alt2 desterro $alt2 destroem $alt deteriore $alt @@ -892,7 +912,8 @@ doso $alt doze $alt2 dueto $alt2 edson $alt -elixir eliSir +egeia $alt +eleia $alt emborco $alt emprego $alt2 emprego $alt2 $noun @@ -900,6 +921,7 @@ encasqueta $alt encosto $alt $verb endereço $alt $verb endoide $alt2 +eneias $alt enforco $alt engodo $alt2 engordo $alt @@ -976,6 +998,7 @@ força $alt $verb forço $alt formos $alt2 forro $alt $verb +fosso $alt2 frescores $alt2 frevo $alt2 fulgores $alt2 @@ -993,7 +1016,6 @@ gesso $alt2 gloso $alt gonorreia $alt gol gow -golpe $alt gorda $alt2 gorjeta $alt2 gororoba $alt @@ -1003,6 +1025,7 @@ gota $alt2 governo $alt2 governo $alt $verb gozo $alt2 $noun +gozos $alt2 graveto $alt2 groselha $alt grosso $alt2 @@ -1028,6 +1051,7 @@ jogo $alt $verb jogos $alt joguete $alt2 judeia $alt +jurubeba $alt lacerda $alt lagosta $alt2 lambreta $alt2 @@ -1043,13 +1067,11 @@ lopes $alt lutero $alt macete $alt2 maioneses $alt -manopla $alt maniçoba $alt marieta $alt2 mariposa $alt2 megera $alt melhor $alt -menor $alt meta $alt $noun metro $alt minueto $alt2 @@ -1064,7 +1086,6 @@ moem $alt mofo $alt $verb mogno $alt molho $alt2 $noun -monera $alt montenegro $alt2 mor $alt morcego $alt2 @@ -1077,6 +1098,7 @@ namoro $alt2 $noun naquela $nounf naquele $alt2 $nounf nervo $alt2 +niceia $alt ninfeta $alt2 nitreto $alt2 nojo $alt2 @@ -1097,8 +1119,11 @@ pacheco $alt2 paexa paeSa paella pa'el^& palacete $alt2 +palermo $alt +palimpsesto $alt2 palheta $alt2 palhoça $alt +panaceia $alt pangeia $alt pantera $alt papoco $alt2 $noun @@ -1106,7 +1131,7 @@ paradoxo $alt parede $alt2 pateta $alt peba $alt -pedra $alt +pedro $alt2 peixoto $alt2 pela $alt2 pelo $alt2 @@ -1120,6 +1145,7 @@ pesadelo $alt2 peses $alt peseta $alt2 peso $alt $verb +pigmeia $alt piloto $alt2 $noun pilotos $alt2 pior $alt @@ -1130,6 +1156,7 @@ plebeia $alt poderem $alt2 polca $alt pompeia $alt +popa $alt2 porcos $alt porque $alt2 porra $alt2 @@ -1153,6 +1180,7 @@ quitinete $alt quinteto $alt2 ramalhete $alt2 rancores $alt2 +ranheta $alt2 raposa $alt2 recomeço $alt $verb reconstroem $alt @@ -1228,10 +1256,10 @@ sulfureto $alt2 super s'Uper suporto $alt suor suOr -tabefe $alt tambores $alt2 tapera $alt tapete $alt2 +tebas $alt temores $alt2 tempero $alt2 $noun tenores $alt2 @@ -1249,6 +1277,7 @@ torno $alt $verb tornozelo $alt2 torre $alt2 $noun torres $alt2 +torreta $alt2 torro $alt toso $alt totens $alt @@ -1264,6 +1293,7 @@ tropa $alt tropeço $alt2 $noun trombeta $alt2 ureia $alt +uretra $alt vanessa $alt2 vareta $alt2 vera $alt @@ -1277,7 +1307,6 @@ voga $alt voice $alt xarope $alt xereta $alt2 -xerox S'E*Oks xeroxes $alt zelo $alt2 $noun zorra $alt2 @@ -1314,7 +1343,7 @@ doc d'Ok ?2 designer dez'aIner ?2 designers dez'aIners ?2 desktops deskt'Ops -dj d,i:dZ'eI +?1 dj d,i:dZ'eI ?2 diesel dZ'izEU ?2 doha d'ox& ?1 down d'a,wn @@ -1349,6 +1378,7 @@ get gEt ?1 hardware 'ard,w'Er- ?2 hardware h'ardwe@- happy x'Epy +?2 haxixe xaS'iSy ?1 home 'omy ?2 home h'owmi hot xOt @@ -1424,9 +1454,10 @@ upgrade &pgR'eId upload &pl'oud ?2 web w'Eb writer r'aIter +xerox S'E*Oks ?1 yahoo 'i,ah'u ?2 yahoo iah'u -?1 yes j'Es +yes j'Es // common person names @@ -1470,7 +1501,6 @@ mac mEk ?2 microsoft m'aIkRows'Oft ?1 movie m'uvi ?1 nero n'Eru -?2 nero n'ErU ?2 netbooks nEtbUks ?2 notebook nowtbUk ?2 notebooks nowtbUks diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 6d4a4910..a0b9e889 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -1,4 +1,4 @@ - // translation rules Brazilian + // translation rules Brazilian // This file is UTF-8 encoded // Options @@ -22,6 +22,7 @@ .L05 r ra ram re rem rde rmo .L06 r ra ram ste sse ssem re rem rmo .L07 sse ssem ste +.L08 a o .group a @@ -201,7 +202,7 @@ e (dL02_ E - e (fa_ E + e (fL04_ E e (gL04_ E @@ -218,16 +219,16 @@ ib) e (rL04_ E d) e (rL04_ E + eb) e (L07_ e // recebeste, etc. ed) e (rL04_ e + eg) e (L07_ e // elegeste, etc. + _@o) e (L07_ e // doeste, etc. iv) e (rL04_ E pod) e (rA_ e - @s) e (L05_ E - - p) e (rL04_ E - f) e (rL04_ E - + n) e (rL04_ E + p) e (rL04_ E e (quL02_ E e (rbL04_ E e (rgL04_ E @@ -241,19 +242,12 @@ ?2 ee (C_ i ?2 C) e (em_ e e (stL04_ E - e (strL04_ E - e (rme_ E - e (rnL04_ E - e (rtL04_ E - e (rrL04_ E - e (rvL04_ E - e (tL04_ E m) e (tL03_ e An) e (tA_ e @@ -345,6 +339,7 @@ ef) e (tuL02_ e t) e (tra E + e (drL04_ E âC) e (C@ e âCC) e (C@ e @@ -357,6 +352,7 @@ éCC) e (CA_ e éCCC) e (C@ e ?2 íC) el (_ eU + í) e (C@ e íC) e (C@ e íCC) e (C@ e óC) e (C@ e @@ -375,6 +371,8 @@ _pud) e (L05_ E _exag) e (L05_ E _mulh) e (L05_ E +_chancel) e (L05_ E + vi) e (L05_ E _talh) e (L05_ E _troux) e (L05_ E @m) e (L06_ e // temeram, etc. @@ -384,19 +382,15 @@ _troux) e (L05_ E diss) e (L06_ E // contra- romp) e (L06_ e // cor- inter- _houv) e (L06_ E -_escond) e (L06_ e -respond) e (L06_ e + sCond) e (L06_ e // esconderam, etc. constrang) e (L07_ e - eb) e (L07_ e // recebeste, etc. - eg) e (L07_ e // elegeste, etc. - _@o) e (L07_ e // doeste, etc. _cr) e (L07_ e _dev) e (L07_ e bat) e (L07_ e // re- com- ced) e (L07_ e // pro- con- su- met) e (L07_ e // meteste, cometeste, etc. mex) e (L07_ e - _requer) e (L07_ e +_requer) e (L07_ e prouv) e (L07_ e mov) e (L07_ e // re- co- olv) e (L07_ e // devolveste, etc. @@ -408,8 +402,8 @@ precav) e (L07_ e _coz) e (L07_ e _val) e (L07_ e colh) e (L07_ e // & es- - _lamb) e (L07_ e -_prov) e (L07_ e + _lamb) e (L07_ e + _prov) e (L07_ e ench) e (L07_ e // pre- vert) e (L07_ e // in- re- con- ergu) e (L07_ e @@ -427,11 +421,12 @@ _troux) e (L07_ E _amanc) e (bL03_ E qu) e (brL04_ E _perp) e (trL04_ E - _assev) e (rL04_ E + sev) e (rL04_ E _imp) e (trL04_ E cel) e (brL04_ E _sop) e (sL04_ E _C) e (bre_ E + _barb) e (tA_ e _boch) e (chL04_ e _ex) e (crL04_ E impr) e (gnL04_ E @@ -440,56 +435,47 @@ _amanc) e (bL03_ E _sob) e (rbL03_ e _pr) e (dL03_ E _arr) e (dL03_ E -_emp) e (drL03_ E -_enc) e (dL03_ E -_api) e (dL03_ E + _enc) e (dL03_ E + _api) e (dL03_ E _depr) e (dL03_ E _hosp) e (dL03_ E _enver) e (dL03_ E - _) e (dnL03_ E - _gr) e (gL03_ e - _gal) e (gL03_ e -_alvin) e (grL03_ e + _) e (dnL08_ E + _gr) e (gL08_ e + _gal) e (gL08_ e _lanc) e (tA_ e menorr) ei (a_ EI - _pel) e (gL03_ e - _n) e (grL03_ e + _pel) e (gL08_ e + n) e (grL08_ e estr) ei (L04_ EI _confed) e (rL04_ E _r) e (jL03_ E _inv) e (jL04_ E _panfl) e (tL04_ e - _v) e (lhL03_ E + _v) e (lhL08_ E _gr) e (lhL04_ E -_tataran) e (tA_ E -_tetran) e (tA_ E - _trin) e (tA_ E +_tataran) e (tL08_ E +_tetran) e (tL08_ E + _trin) e (tL08_ E _caC) e (lo_ e - _porr) e (tA_ e + _porr) e (tA_ e _livr) e (tA_ e ?2 el (ton_ 'EU ad) e (quL04_ E _ing) e (rL02_ E _dig) e (rL02_ E _m) e (rL03_ E - _sev) e (rL03_ E _reit) e (rL04_ E - _sinc) e (rL03_ E + _sinc) e (rL08_ E _g) e (rL04_ E _z) e (rL04_ E qu) e (rL04_ E // re- - _on) e (rL04_ E - gen) e (rL04_ E // de- re- _alt) e (rL04_ E _enc) e (rL04_ E _esm) e (rL04_ E - _esm) e (rL04_ E - _min) e (rL04_ E _sug) e (rL04_ E _tol) e (rL04_ E - _ven) e (rL04_ E acel) e (rL04_ E // des- - eson) e (rL04_ E _apod) e (rL04_ E _enum) e (rL04_ E _exub) e (rL04_ E @@ -497,23 +483,21 @@ _adult) e (rL04_ E _aglom) e (rL04_ E _dilac) e (rL04_ E _encarc) e (rL04_ E -_incin) e (rL04_ E -_persev) e (rL04_ E _refrig) e (rL04_ E _c) e (rcL02_ E _ex) e (rcL02_ E _alic) e (rcL02_ E - _esqu) e (rdL03_ e + _esqu) e (rdL08_ e _C) e (rdL04_ E _des) e (rdL04_ E - _oblit) e (rL04_ E +_oblit) e (rL04_ E s_colh) e (res_ E _) e (rgL03_ e _re) e (rgL03_ e _so) e (rgL03_ e sp) e (rma_ E e (rquL02_ E - _bez) e (rrL03_ e + _beC) e (rrL08_ e v) e (rtL03_ e // con- re- in- _f) e (rvL03_ e _alic) e (rçL03_ E @@ -525,7 +509,7 @@ s_colh) e (res_ E _p) e (scL03_ E _m) e (sclL04 E dioc) e (ses_ E - _aust) e (rA_ E + _aust) e (rL08_ E _d) e (spL02_ E proc) e (ssL02_ E _p) e (squL02_ E @@ -535,20 +519,20 @@ s_colh) e (res_ E _ac) e (ssL02_ E _esp) e (ssL03_ e _c) e (stL03_ e - _pr) e (tL03_ e + _pr) e (tL08_ e _rem) e (tL03_ e _derr) e (tL03_ e -_obsol) e (tL03_ e +_obsol) e (tL08_ e _bol) e (tL04_ e _CaC) e (ta_ e _minu) e (tA_ e _terc) e (tA_ e viol) e (ta_ e _Carr) e (ta_ e - _Gur) e (ta_ e + _Gur) e (ta_ e _pen) e (trL04_ E _sol) e (trL04_ E - _n) eu (trL03_ 'eU + _n) eu (trL08_ 'eU _d) e (vL03_ e scr) e (vL03_ e // e- in- pre- ree- de- _atr) e (vL03_ e @@ -632,7 +616,7 @@ _redar) gu (A gw san) gu (ín gw san) gu (in gw stin) gu (A gw - _un) gu (ento_ gw + _un) gu (ento_ gw xtin) gu (A gw ?1 n) gu (A gw // eg: língua, etc. ?1 man) gu (ei g // mangueira @@ -891,6 +875,7 @@ _redar) gu (A gw b) o (rL04_ O o (p_ O C) o (pL04_ O + o (pCL04_ O ?1 _) o (C O // eg: olá, orla, opção, etc... ?1 _C) o (CACAC u // Documento, documentação, localizar, etc. ?1 f) o (rmat u // formatar, formato. @@ -920,16 +905,16 @@ _redar) gu (A gw //sort _f) o (L05_ o _red) o (L05_ O -_pormen) o (L05_ O + men) o (L05_ O _f) o (L07_ o _s) o (bL02_ O _af) o (bL04_ O _esn) o (bL04_ O _engl) o (bL04_ O - _sal) o (brL03_ o - _) o (cL03_ o - _barr) o (cL03_ o - _ch) o (chA_ o + _sal) o (brL08_ o + _) o (cL08_ o + _barr) o (cL08_ o + _ch) o (chL08_ o _m) o (chA_ o _f) o (dL01_s o _ecl) o (dL03_ o @@ -944,7 +929,7 @@ _pormen) o (L05_ O _ap) oi (L02_ OI _b) oi (L04_ OI _C) oi (ce_ oI - _t) o (lL03_ o + _t) o (lL08_ o _f) o (lgL04_ O _emp) o (lgL04_ O _arr) o (lhL03_ O @@ -953,13 +938,10 @@ _pormen) o (L05_ O _) o (bstL04_ O m) o (lhL04_ O emb) o (lsL04_ O - _env) o (ltL03_ o + _env) o (ltL08_ o _esC) o (pA_ o - antr) o (pL03_ o - _s) o (prL04_ O - _al) o (prL04_ O - _ass) o (prL04_ O - _) o (ptL04_ O + g) ol (pe_ Ow + antr) o (pL08_ o flex) o (rA_ p) o (rL02_ o _dev) o (rL02_ O @@ -1004,13 +986,14 @@ _pormen) o (L05_ O ?1 ovos (_G Ov=UZ novos, povos, etc. ?2 ovos (_G Ov=Uz novos, povos, etc. ortos (_ O*@-t=Us# // tortos, mortos, etc. - _Gar) o (tL03_ o - _escr) o (tL03_ o + _Gar) o (tL08_ o + _escr) o (tL08_ o zig) o (to_ o _ch) o (vL01_ o pr) o (vL03_ O _Com) o (do_ o -_ortod) o (xL03_ O +_ortod) o (xL08_ O + _arr) ox (A OS _g) o (zL04_ O _alm) o (çL01_ O _esb) o (çL01_ O @@ -1019,7 +1002,7 @@ _ortod) o (xL03_ O _ad) o (çL03_ O _emp) o (çL03_ O _end) o (çL03_ O - _c) o (çL03_ O + _c) o (çL03_ O //endsort .group ô @@ -1229,11 +1212,9 @@ _ortod) o (xL03_ O .group x x (A S A) x (A ks + e) x (A ks _e) x (A z _ê) x (A z - _ine) x (A z - _ine) x (orAC ks - e) x (A ks ?1 e) x (CA S ai) x (A S ei) x (A S @@ -1254,7 +1235,6 @@ _ortod) o (xL03_ O xA) x (A S _abaca) x (i S ale) x (a S - _arro) x (e S _ave) x (A S bau) x (A S brA) x (A S @@ -1263,6 +1243,7 @@ _abaca) x (i S _ca) x (A S _co) x (A S _coe) x (A z + _eli) x (ir S _esdrA) x (ul S _e) x (u_ S _fa) x (i S @@ -1270,6 +1251,8 @@ _esdrA) x (ul S gra) x (A S _he) x (A z ?2 _he) x (A ks + _ine) x (A z + _ine) x (orAC ks _lagarti) x (A S _li) x (A S _lu) x (A S diff --git a/dictsource/ta_list b/dictsource/ta_list index 79e35808..5f48c492 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -304,6 +304,7 @@ _#-லும் ilUm // English words tamil தமிழ் $text +andagakavi அந்தகக்கவி $text // exceptions diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 2ab35568..6b5b9685 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -3966,7 +3966,6 @@ _பெனசீர்_) ப (ுட்டோ b //sort - _மனோ) ப்ப (ல bbV _குங்) ப fV# _நீர்) ப pV# _ப்ரூ) ப fV# @@ -4677,6 +4676,7 @@ _மைக்ரோசா) ப் (ட f _ஹ) ப்ப (ர்ட bbV _துர்) ப்ப (ல bbV _முழு) ப்ப (ல bbV +_மனோ) ப்ப (ல bbV உ) ப்ப (லா bbV உ) ப்ப (லாக bbV உ) ப்ப (லான bbV @@ -4719,6 +4719,7 @@ _வெளி) ப்பி (ரகார pp _சுக) ப்பி (ரச pp அதிக) ப்பி (ரசங்க pp _மலை) ப்பி (ரசங்க pp + _மலை) ப்பி (ரசங்க pp _சண்ட) ப்பி (ரசண்ட pp L03) ப்பிரச (ார pprVtS _கை) ப்பி (ரசுர pp @@ -4746,6 +4747,7 @@ _சத்திய) ப்பி (ரமா pp இரத்த) ப்பி (ரவாக pp _ஒL10ி) ப்பி (ரவாக pp _மணி) ப்பி (ரவாள pp + _மணி) ப்பி (ரவாள pp தேச) ப்பி (ரஷ்ட pp _ஜாதி) ப்பி (ரஷ்ட pp _வான) ப்பி (ரஸ்த pp @@ -4757,6 +4759,8 @@ _கூட்டு) ப்பி (ரார்த்தனை pp _வடை) ப்பி (ரிய pp _கஜ) ப்ப (ிருஷ்ட bb L03) ப்பி (ரேத pp + L03) ப்பி (ரேத pp + L03) ப்பி (ரேத pp L03) ப்பி (ரேரணை pp _ஹ) ப்ப (ிள bb _க்ள) ப்ப (ுகள bb @@ -4771,6 +4775,7 @@ _சந்தேக) ப்ப (ுத்தி bb _ல) ப்ப (ை bb _தர்) ப்ப (ை bb _மர) ப்ப (ொம்மை bb + ரா) ப்ப (ோஜன bb _ரா) ப்ப (ோஜன bb துர்) ப்ப (ோதனை bb _கே) ப் (மாரி p diff --git a/docs/commands.html b/docs/commands.html index fcf46181..0d739b5e 100644 --- a/docs/commands.html +++ b/docs/commands.html @@ -80,7 +80,7 @@ If neither -f nor --stdin is given, then the text input is taken from "text word
-s <integer>
Sets the speed in words-per-minute (approximate values for the default English voice, others may differ slightly). The default value is 175. I generally use a faster speed -of 200. Range 80 to 450. Larger value are rounded down to the maximum. +of 260. The lower limit is 80. There is no upper limit, but about 500 is probably a practical maximum.

-b <integer>
@@ -141,8 +141,9 @@ Some languages may need additional dictionary data, see
-x
-
The phoneme mnemonics, into which the input text is translated, are -written to stdout. +
The phoneme mnemonics, into which the input text is translated, are written to stdout. +If a phoneme name contains more than one letter (eg. [tS]), the --sep or --tie option can be used to distinguish +this from separate phonemes.

-X
@@ -167,12 +168,8 @@ The same as --compile, but source line numbers from the *_rules
--ipa
Writes phonemes to stdout, using the International Phonetic Alphabet (IPA).
-If a phoneme name contains more than one letter (eg. [tS]) an optional parameter can be used to distinguish +If a phoneme name contains more than one letter (eg. [tS]), the --sep or --tie option can be used to distinguish this from separate phonemes. -
---pho=1 Use a tie character (U+0361) before subsequence letters. -
---pho=2 Use a zero-width-joiner (U+200D) before subsequent letters.

--path [="<directory path>"]
@@ -190,10 +187,18 @@ If specified, the output from -x, -X, --ipa, and --pho options is written to thi
Speaks the names of punctuation characters when they are encountered in the text. If <characters> are given, then only those listed punctuation characters are spoken, eg. --punct=".,;?"

+

--sep [=<character>]
+
+The character is used to separate individual phonemes in the output which is produced by the -x or --ipa options. The default is a space character. The character z means use a ZWNJ character (U+200c). +

--split [=<minutes>]
Used with -w, it starts a new WAV file every <minutes> minutes, at the next sentence boundary.

+

--tie [=<character>]
+
+The character is used within multi-letter phonemes in the output which is produced by the -x or --ipa options. The default is the tie character  ͡  U+361. The character z means use a ZWJ character (U+200d). +

--voices [=<language code>]
Lists the available voices.
diff --git a/espeak-data/voices/europe/eu b/espeak-data/voices/europe/eu new file mode 100755 index 00000000..35ada0cf --- /dev/null +++ b/espeak-data/voices/europe/eu @@ -0,0 +1,3 @@ +name basque-test +language eu + diff --git a/phsource/compile_report b/phsource/compile_report index 1cb3bee4..a67910a6 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -49,7 +49,7 @@ consonants 11 119 es-la 2 125 ca 11 127 an 5 126 - eu 18 127 + eu 21 129 pt 29 140 pt-pt 20 140 ro 36 148 @@ -875,7 +875,6 @@ ufric/s [s] base [z2] fr [s] ru [s] es - [z] eu [z] sq [s] da [s] ar @@ -885,7 +884,6 @@ ufric/s_ [s] base [s] fr [z] fr [s] es - [z] eu [z;] ro [s] sw [z] sq @@ -914,7 +912,6 @@ ufric/sh_pzd2 [S] sr [dZ] sr [S;] zh ufric/sh_rfx [s.] base - [s] eu [s.] zh ufric/s_pal [s^] et ufric/s_pzd [s;] base @@ -932,6 +929,8 @@ ufric/tl# [tl#] is [tl#] kl ufric/tlh [K] nso [K] tn +ufric/ts_eu [ts] eu +ufric/tz_eu [tz] eu ufric/x_ [x] base ufric/x2 [x2] af [x] ku @@ -945,6 +944,7 @@ ufric/x_sr [h#] sr ufric/xx [X] base [Q"] base [Q] ka +ufric/z_eu [z] eu ustop/c [c] base ustop/k [k] base [k] fr @@ -1123,8 +1123,6 @@ ustop/tr [t] base ustop/ts [ts] consonants [dz] consonants [ts] hu - [ts] eu - [tz] eu [z] zhy [tsh] zh [ts] tn @@ -1133,8 +1131,6 @@ ustop/ts [ts] consonants ustop/ts_ [ts] consonants [dz] consonants [ts] lv - [ts] eu - [tz] eu [ts] tn [ts#] bo [dz#] bo @@ -1865,6 +1861,7 @@ vowel/a#_3 [a#] en vowel/a_4 [a] ga [a] es [a] eu + [a2] eu [a] el [a] vi vowel/a#_4 [a:] nl diff --git a/phsource/ph_basque b/phsource/ph_basque index ab02b371..fd9c5a11 100755 --- a/phsource/ph_basque +++ b/phsource/ph_basque @@ -1,186 +1,167 @@ - -//==================================================== -// Basque - based on Base2 -//==================================================== - -phoneme a - vowel starttype #a endtype #a - length 200 - FMT(vowel/a_4) -endphoneme - - -phoneme a2 // delete if the next vowel is 'a'. Used for numbers. - vowel starttype #a endtype #a - length 200 - - IF nextPh(#a) THEN - ChangePhoneme(NULL) // merge consecutive 'a' - ELSE - ChangePhoneme(a) - ENDIF -endphoneme - - -phoneme e - vowel starttype #e endtype #e - length 200 - FMT(vowel/e_mid2) -endphoneme - - -phoneme i - vowel starttype #i endtype #i - length 190 - IfNextVowelAppend(;) - FMT(vowel/i) -endphoneme - - -phoneme o - vowel starttype #o endtype #o - length 200 - FMT(vowel/oo) -endphoneme - - -phoneme u - vowel starttype #u endtype #u - length 200 - FMT(vowel/u_bck2) -endphoneme - - -phoneme Y - vowel starttype #@ endtype #@ - length 200 - FMT(vowel/y#) -endphoneme - - - -// Note: I have made [s] and [z] the same, and similarly [ts] and [tz] -// These should be changed to the correct "s", "z", "ts" and "tz" sounds fo Basque. - -phoneme s - vls alv frc sibilant - ipa ʂ - lengthmod 3 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 - Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 - - IF nextPh(isPause) THEN - WAV(ufric/sh_rfx, 60) - ENDIF - WAV(ufric/sh_rfx, 90) // different from s but probably not correct -endphoneme - - -phoneme z - vls alv frc sibilant - ipa s - lengthmod 3 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 - Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 - - // z+z=tz, z+g=zk, z+g=zt, z+b=zp - IF nextPh(z) THEN - ChangeNextPhoneme(tz) - ChangePhoneme(NULL) - ELSEIF nextPh(g) THEN - ChangeNextPhoneme(k) - ELSEIF nextPh(d) THEN - ChangeNextPhoneme(t) - ELSEIF nextPh(b) THEN - ChangeNextPhoneme(p) - ENDIF - - IF nextPh(isPause) THEN - WAV(ufric/s_, 60) - ENDIF - WAV(ufric/s, 80) -endphoneme - - -phoneme ts - vls alv afr sibilant - ipa tʂ - lengthmod 2 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 - Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 - IF nextPh(isPause2) THEN - WAV(ustop/ts_) - ENDIF - WAV(ustop/ts) -endphoneme - - -phoneme tz - vls alv afr sibilant - ipa ts - lengthmod 2 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 - Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 - IF nextPh(isPause2) THEN - WAV(ustop/ts_) - ENDIF - WAV(ustop/ts) -endphoneme - - -phoneme t - vls dnt stop - lengthmod 2 - - // t+g=k, t+d=t, t+z=tz - IF nextPh(g) THEN - ChangeNextPhoneme(k) - ChangePhoneme(NULL) - ELSEIF nextPh(d) THEN - ChangeNextPhoneme(t) - ChangePhoneme(NULL) - ELSEIF nextPh(z) THEN - ChangeNextPhoneme(tz) - ChangePhoneme(NULL) - ENDIF - - CALL base2/t -endphoneme - - -phoneme r - vcd alv flp rhotic - brkafter - ipa ɾ - lengthmod 3 - - IF nextPhW(isVowel) THEN - ChangePhoneme(**) - ENDIF - - CALL base/* -endphoneme - - -phoneme b - import_phoneme es/b -endphoneme - -phoneme d - import_phoneme es/d -endphoneme - -phoneme g - import_phoneme es/g -endphoneme - -phoneme n - vcd alv nasal - lengthmod 4 - - IF prevPhW(i) AND nextPhW(isVowel) THEN - ChangePhoneme(n^) - ENDIF - - CALL base/n -endphoneme + +//==================================================== +// Basque - based on Base2 +//==================================================== + +phoneme a + vowel starttype #a endtype #a + length 200 + FMT(vowel/a_4) +endphoneme + + +phoneme a2 // delete if the next vowel is 'a'. Used for numbers. + vowel starttype #a endtype #a + + length 200 + + IF nextPh(#a) THEN + ChangePhoneme(NULL) // merge consecutive 'a' + ENDIF + + FMT(vowel/a_4) +endphoneme + + +phoneme e + vowel starttype #e endtype #e + length 200 + FMT(vowel/e_mid2) +endphoneme + + +phoneme i + vowel starttype #i endtype #i + length 190 + IfNextVowelAppend(;) + FMT(vowel/i) +endphoneme + + +phoneme o + vowel starttype #o endtype #o + length 200 + FMT(vowel/oo) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + length 200 + FMT(vowel/u_bck2) +endphoneme + + +phoneme Y + vowel starttype #@ endtype #@ + length 200 + FMT(vowel/y#) +endphoneme + + +phoneme s +import_phoneme es/s +endphoneme + + +phoneme z + vls alv frc sibilant + ipa s + lengthmod 3 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + IF nextPh(isPause) THEN + WAV(ufric/z_eu, 60) + ENDIF + WAV(ufric/z_eu, 90) +endphoneme + + +phoneme ts + vls alv afr sibilant + ipa t? + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + IF nextPh(isPause2) THEN + WAV(ufric/ts_eu, 60) + ENDIF + WAV(ufric/ts_eu, 90) +endphoneme + + +phoneme tz + vls alv afr sibilant + ipa ts + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + IF nextPh(isPause2) THEN + WAV(ufric/tz_eu, 90) + ENDIF + WAV(ufric/tz_eu, 60) +endphoneme + + +phoneme t + vls dnt stop + lengthmod 2 + CALL base2/t +endphoneme + + +phoneme r + vcd alv flp rhotic + brkafter + ipa ? + lengthmod 3 + + IF nextPhW(isVowel) THEN + ChangePhoneme(**) + ENDIF + + CALL base/* +endphoneme + + +phoneme b + import_phoneme es/b +endphoneme + +phoneme d + import_phoneme es/d +endphoneme + +phoneme g + import_phoneme es/g +endphoneme + +phoneme n + vcd alv nasal + lengthmod 4 + + IF prevPhW(#i) AND nextPhW(isVowel) THEN + ChangePhoneme(n^) + ENDIF + + CALL base/n +endphoneme + +phoneme n2 // doesn't palatalise, used for exceptions + vcd alv nasal + lengthmod 4 + CALL base/n +endphoneme + +phoneme l + liquid + IF prevPhW(#i) AND nextPhW(isVowel) THEN + ChangePhoneme(l^) + ENDIF + CALL base/l +endphoneme + +phoneme l2 // same as l2 + liquid + CALL base/l +endphoneme diff --git a/phsource/ph_english b/phsource/ph_english index de0d554d..93218268 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -279,13 +279,14 @@ endphoneme phoneme i // optional variant of [I] for end of words vowel starttype #i endtype #i + unstressed ipa i length 150 IfNextVowelAppend(;) - IF NOT thisPh(isFinalVowel) THEN - ChangePhoneme(I) - ENDIF +// IF NOT thisPh(isFinalVowel) THEN +// ChangePhoneme(I) +// ENDIF FMT(vowel/ii_7) endphoneme diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 6d8edc33..02067c59 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -48,8 +48,8 @@ phoneme a IF nextPh(isNasal) THEN FMT(vnasal/ee_n2) - ELSEIF nextPh(r) THEN - length 230 + ELSEIF nextPh(r) AND thisPh(isStressed) THEN + length 190 FMT(vwl_en_us/ar) ENDIF FMT(vwl_en_us/a) diff --git a/phsource/ph_tamil b/phsource/ph_tamil index e12d9775..5708c83c 100644 --- a/phsource/ph_tamil +++ b/phsource/ph_tamil @@ -168,4 +168,3 @@ phoneme r import_phoneme base/r endphoneme - diff --git a/phsource/phonemes b/phsource/phonemes index 8140a18d..6634c244 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1978,5 +1978,6 @@ phonemetable kl base include ph_greenlandic -//phonemetable en2 en +//phonemetable en-test base //include ph_english_test + diff --git a/phsource/ufric/ts_eu.wav b/phsource/ufric/ts_eu.wav new file mode 100755 index 0000000000000000000000000000000000000000..67e5ae8953db24ec602421fd32af1a2fa51e7d49 GIT binary patch literal 5092 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 IJg33`0AvbK9qrHe375>2_D5iaCJVy>vES&MFA` z#p(~`?}vg(5%?HdLLE59!{Ku{#UH{CV%c_1f_iYB6JeL&)dQCEcY=N%{~-6u2bEzB zG=z!bft^s2n?f8+le_&0ncPL5+79YN8y*VGB?PIna6x?44syj0TbTJ*KFjg2o4de3 z{+5HGjO@6`$Hhmjp)|kc!f;ctN|1Y`^CVbDbLHOsIETi-Ur?WahI8B%nm`Z!AGCr1 z^okE!LM>du>Cg-|!%$ug1;n=QFcjW{DUb`VcozRHcWD5_U<60vecleG1Z78VdxZOP zJPv?Z9w+FW;7Sr#VS;yI_?I7W4Jg3Hv7M|@*aOap1qa|OvAzdZ<14U-lesjs=QP2- z1dJCXwRrM1Jf#V|8@j-8iG&C!2bL%Ee(o$*UzGUy6mDP)<#8wU+B34IG`ugi?dBNH zl>I&7nV>qEmg5jE#lOq@n&PA8Fj8)?lDyCtX48CZ10jM{4MDy?+@=ATAgG67eF*0A zd{W}ua0>jy^#zRx9)VGO1Gd_yYyF#^BO&%_%AsjV&{Q4u106JQz?;|zX}3qeIW?+?z0 z%V-0pazAV zaspQ5t8@rG9Dq@@4wK<1r9%+6#1K9MC%FLcQoopo_)?;=5;PJkGGIJigEd?h%iERk z1diD~c!xGh3}uNQI!nGT;aDz#9rzG-vu)ut)~1E9l;ZJML1qfqq}^%*?d4Hej2mMt z6@?FQDb%Ktcv`))@$iLe#rq^?YIA)xm|m;SJQ)tcQ5Z{4Bx4)#au^E}aSRQF`TUA& zLsM8y(O3o>lOKM<5%htROar(%k7dw(&3#%g&zS(Dxws(Ej-IQf?sFVWK`;-NN@o6H zi>Su9OtS7459P%;N7j#}!8`@aab+lK8#;fR7}$&rObb;M8$(?v2$dvIE4ms zH+_Pp+Q+IiJMLYbfj6zDdpgPuq$pJvR>A`ljYbzVf51*|EZlVqj;N9LHulANRzn)M z#|W{1KP;B0NK+r#I_jk@uTxArL>=q;IkBcU9)Td+j(sS|KuP>S{1~T8`HH~z(1JQ} z91f*ow8$Aup{6UoqW(5O-!&cRrk?4Jbxv>@?#Y)i20x&|s*Gu>Z_rxFlEpX%65PSg zw-95O!3AC3tWj;av-Q`d?Rng7iR$588m>azL+Tnmp;<6jJa7a)gG?%;m$;`fShy$4 zk~#qg+@dkfbr)s;@*0y+ips)MPAoA83fT|3p0cDqkK`Roki z2{`Mv;1X0@Hza?qLJ1h7Bh577%9UI|jkhx;){EdQiH?=vkJ;`|&MdbbJa9*NI@w`d zSC!$T^aqT^%BHFFh$q`W%?tmz-ok1wf5Xc;(!O%8b06MBAL~Vs=eyu}>z$(Z!v9Px z_7IMaVT)~W9Zj*P_$9V>H|Y>+#viDzrkbv7wwN3K5#HL)To?sG&bQtwo^?Fft>tNI z|A0C+$!~zEMXz+G_c!N?QMwdVb3a!d?Gh)!UBjuc2V2ujJRrH>Oe$c4iZRXXcBcZR z(muNpSK2eU-#5+4rcuy>d+5ckhN0LTdgC*C$qzBb&2_fZ1pL#i$FFgQZtW|g8=Kdj zf87h-Dt;ARpZV8Q+PvhhwxLRfsj9m>p2D5O?w^$H6tgw4kJ$vQD*4_(xNZWG=6AZG zXW1{zGQTXEM6KXo9cr)8K@6r-I?OE#chp>SABUP09i^jv=bZXx5QqBx?k1XJ&S-C# ztX6c$x$pjFzfe!v-#f>1#XZW8)hD{LZ3h{uyJ^Lr;%l1$AFEkrypD#ucCy+JcYQ0I zG)&4p5OC5o;I*C@x3cO_b>R^VGOwMpCR33?yo!mYy7>2huJUX)@31Q+sdB2KdEa?z z@430~i!eb4o1{O5AnXEVaE|)iKGJh&Go+iIp2oBoj?p@`fa7?L_7A$Xxf zOp5sni#YpopXx;R>UdKPN9mekX__W##Phs6V1!>Y?<*%AJl;uu(e7aw%U|e7EN&k7 z1@mirUT>fp{F^&DAc$jpqB=0Hpo9(Ep&_&%7&%U~7tPDPL)1f7ga`xJ-6bTJD8Vk@|)xjR66}*Xm z(98Hwm}{SE&WmAIW8A$`@w@5AqK61OnZ-^$u45ON{{GRBj2CSbv{Y$s1xnNdDFVKf zm}{iIgd97Whx26xFvhf}0{(~GG#rIJO(3+^FCf#~)k8Gjd=yZWH|L#IN1dU*NC*}# zyGwnYAX>un@FQw~8BiFj_@+A-)kbqb>h*3rQa$3)x|AEmv;A)Rf>aidx8LBu9D`wY zqSU%wI2-4AD%yweTxHu__k~oaXf=v@@MR}Scp};J%4CBd&CqLXY0-aP&q%kc4yFO_ zR$-dal#PRRDj*+5ht6@Pub*0r)94%SMPK=?vrVD5-sWzAPt-0_yjxW@13gPQlIGi6 zQcp^%>2@9zl-k}+*R(ly1p^*dgSZqlM z_KnIik0fscs6Qsc0%yMOGHk%p{M@Yb=F(WDJq_&(Y=M1wH~lTurU(Xm*4u2g(|#*e z|Cw7|^`t%24Q{JJCK-p|S=@@7A)Jg2gKp4(x~q5$RSesxscsAHO;PmcBr0sj;}*40 z*A~9-i1Dz)9E8rcmTl|_AV+j{B>hJDmF4PF{gFeo1i%~5c28-Y|9mi8@H;u;Xyp(r} zhF;4dcD(*hby8_O&Hh&t4~gzr$c540?t>h46aJz$P*zvQIA3Ma!;j#aLR>|CsfGvW zl^Y-`)V06T5~r}ru#Y)fXYwH%ZZjweYN;Hx&Hc+cuGiWqs*JNFgTAEq^+M`spJTSV zN(*>0ZZ^Gnn668|h^Jz7akat@SHq-s%{Tk(XntP}!SnovwmA3fVYdu#f`@#aHmZi) z)_^*J=cuRj5*@*@yF?k(!$T4!|3Gi*U~(|m_QLwSS5#>)8?KtuES#qn+PiQ_@^XQ_ zg8fvyU4S=L9$zv+)KypH?RFvkclT7`{7$* zkh4%!m!Jg7hMFpc7wEcJ2AAr9Y}F>M2pHqB;0{~c$;d{4tX6dNC57#7xA&$Ot)Cni_ItarP68X6v{)4 zzCsD?hypze$+n+x{-+cLRkR1{@i&mDvTQHOyvw{9mZ%P#A9JXQna(MAfS&U#Qy(3D z&R(bU@Pkg}TKv`yF@er0=pz}PhFP`&F2D%-iFVKzm`TT}h^Y2J(bY2{oqKUTnkFhO zo=;+3nu>v{9_^+Y(u=**T|}MNgC9jpFR;h~;Da5s1!CZ9j^G~rPS>EPJWXZNYRF*Z zD0PsE&|~()5z>`T<93O-6#-)1B3`*vo@pnq(<`8NJz-*`vSMWVyix}vL zanj9Qps%HB7*TFj_&I!p^Pm|%F>w?_F8{77z!6H(vvpr?X8w|h+{9-v8**)J4s+({ z;;86rTCJyHCKslIbXrwWA)<<^iQc>^`BjGs+5J#ZPokBA^(N?qL9%xdrE{P&MvbTP zoGn>9+}R87+(fqn|HK>2Qr{=MU!iB6y5~)_jLSt`P9cx&z;kqMEj_#mvU z>F|{()kPSflHi@4NjX5+O8rAOr6*s^x3D)Kum#~Wbx3R(VOPo1b6~LA%BMsN_r`Ym zEp@hQC>NGsVJu(^i3)8fbEWTPT2ug@!>_{O*QuvEf>$V$uJUb}5FMwJd`EcD%g1es zJqE2*5F`jI8~cXdz%cZaE@q;tD0L`@jtl2R%Pip*A0UDf_=Y zV=$DZb@Yg4W2|t~K=JYeRh-+I59|~;tkTsk++?%ukHYui5~p!oQ@oUccu^f{pl@ba<_?r~Vk*QVH7>Kldc4J5+~ObB0WILT!Ev9H@fT zX8XPEOO@aUoB-wRB-0*y>9x`aw<4KnsaWBW`?L+Js^z$r{4D zWxn<=HdN_Y4hPX%yPT`Q5MDz6)!w@@>xhM2_L{jVaXo_CP+vZVM^zpwZfQ61{{chp Bd|dzl literal 0 HcmV?d00001 diff --git a/phsource/ufric/z_eu.wav b/phsource/ufric/z_eu.wav new file mode 100755 index 0000000000000000000000000000000000000000..4adb41da003edd95fff7a9ba94790722c1e72a40 GIT binary patch literal 5168 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 B_aXoQ literal 0 HcmV?d00001 diff --git a/src/dictionary.cpp b/src/dictionary.cpp index bef2100e..8e372670 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -637,8 +637,11 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) /* Called after a clause has been translated into phonemes, in order to display the clause in phoneme mnemonic form. - phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator - bit 4: 0=eSpeak phoneme names, 1=IPA + phoneme_mode + bit 1: use IPA phoneme names + bit 7: use tie between letters in multi-character phoneme names + bits 8-23 tie or separator character + */ int ix; @@ -652,16 +655,12 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) int flags; int use_ipa; int use_tie; - int separate_phonemes = 0; + int separate_phonemes; char phon_buf[30]; char phon_buf2[30]; PHONEME_LIST *plist; static const char *stress_chars = "==,,''"; - static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner - - use_ipa = phoneme_mode & 0x10; - use_tie = phoneme_mode & 0x0f; if(phon_out_buf == NULL) { @@ -673,10 +672,15 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) } } - if(use_tie >= 3) + use_ipa = phoneme_mode & espeakPHONEMES_IPA; + if(phoneme_mode & espeakPHONEMES_TIE) { - // separate individual phonemes with underscores - separate_phonemes = '_'; + use_tie = phoneme_mode >> 8; + separate_phonemes = 0; + } + else + { + separate_phonemes = phoneme_mode >> 8; use_tie = 0; } @@ -690,14 +694,15 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); if(plist->newword) *buf++ = ' '; - else + + if((!plist->newword) || (separate_phonemes == ' ')) { if((separate_phonemes != 0) && (ix > 1)) { utf8_in(&c, phon_buf2); if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter { - *buf++ = separate_phonemes; + buf += utf8_out(separate_phonemes, buf); } } } @@ -734,12 +739,12 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) for(p=phon_buf2; *p != 0;) { p += utf8_in(&c, p); - if(use_tie > 0) + if(use_tie != 0) { // look for non-inital alphabetic character, but not diacritic, superscript etc. if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) { - buf += utf8_out(char_tie[use_tie-1], buf); + buf += utf8_out(use_tie, buf); } } buf += utf8_out(c, buf); @@ -1193,6 +1198,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, PHONEME_TAB *ph; int stress; int max_stress; + int max_stress_input; // any stress specified in the input? int vowel_count; // num of vowels + 1 int ix; int v; @@ -1257,7 +1263,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, unstressed_word = 1; } - max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1); + max_stress = max_stress_input = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1); if((max_stress < 0) && dictionary_flags) { max_stress = 0; @@ -1338,40 +1344,33 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { stressed_syllable = vowel_count - 2; - if(stressflags & (S_FINAL_SPANISH | S_FINAL_STRESS_C)) + if(stressflags & S_FINAL_SPANISH) { // LANG=Spanish, stress on last vowel if the word ends in a consonant other than 'n' or 's' if(phoneme_tab[final_ph]->type != phVOWEL) { - if(stressflags & S_FINAL_STRESS_C) + mnem = phoneme_tab[final_ph]->mnemonic; + + if(tr->translator_name == L('a','n')) { - stressed_syllable = vowel_count - 1; + if(((mnem != 's') && (mnem !='n')) || phoneme_tab[final_ph2]->type != phVOWEL) + stressed_syllable = vowel_count - 1; // stress on last syllable + } + else + if(tr->translator_name == L('i','a')) + { + if((mnem != 's') || phoneme_tab[final_ph2]->type != phVOWEL) + stressed_syllable = vowel_count - 1; // stress on last syllable } else { - mnem = phoneme_tab[final_ph]->mnemonic; - - if(tr->translator_name == L('a','n')) + if((mnem == 's') && (phoneme_tab[final_ph2]->type == phNASAL)) { - if(((mnem != 's') && (mnem !='n')) || phoneme_tab[final_ph2]->type != phVOWEL) - stressed_syllable = vowel_count - 1; // stress on last syllable + // -ns stress remains on penultimate syllable } - else - if(tr->translator_name == L('i','a')) + else if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL)) { - if((mnem != 's') || phoneme_tab[final_ph2]->type != phVOWEL) - stressed_syllable = vowel_count - 1; // stress on last syllable - } - else - { - if((mnem == 's') && (phoneme_tab[final_ph2]->type == phNASAL)) - { - // -ns stress remains on penultimate syllable - } - else if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL)) - { - stressed_syllable = vowel_count - 1; - } + stressed_syllable = vowel_count - 1; } } } @@ -1578,6 +1577,16 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, break; } + if((stressflags & S_FINAL_VOWEL_UNSTRESSED) && (vowel_count > 2) && (max_stress_input < 3) && (vowel_stress[vowel_count - 1] == 4)) + { + if(phoneme_tab[final_ph]->type == phVOWEL) + { + // don't allow stress on a word-final vowel + vowel_stress[vowel_count - 1] = 1; + vowel_stress[vowel_count - 2] = 4; + } + } + /* now guess the complete stress pattern */ if(max_stress < 4) stress = 4; /* no primary stress marked, use for 1st syllable */ @@ -2551,7 +2560,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ total_consumed = consumed; } - if((option_phonemes == 2) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0)) + if((option_phonemes & espeakPHONEMES_TRACE) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0)) { // show each rule that matches, and it's points score int pts; @@ -2628,7 +2637,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c word_copy[ix] = 0; - if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0)) + if((option_phonemes & espeakPHONEMES_TRACE) && ((word_flags & FLAG_NO_TRACE)==0)) { char wordbuf[120]; unsigned int ix; @@ -2866,7 +2875,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c return(0); } - if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0)) + if((option_phonemes & espeakPHONEMES_TRACE) && ((word_flags & FLAG_NO_TRACE)==0)) { fprintf(f_trans,"\n"); } @@ -3367,7 +3376,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(phoneme_len == 0) { - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); fprintf(f_trans,"Flags: %s %s\n", word1, dict_flags_buf); @@ -3378,7 +3387,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(flags != NULL) flags[0] |= FLAG_FOUND; // this flag indicates word was found in dictionary - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { char ph_decoded[N_WORD_PHONEMES]; int textmode; @@ -3560,7 +3569,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f word1 = *wordptr; *wordptr = &word_replacement[2]; - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { len = found - word1; memcpy(word,word1,len); // include multiple matching words @@ -3759,7 +3768,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) { utf8_out(tr->langopts.suffix_add_e, &word_end[1]); - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { fprintf(f_trans,"add e\n"); } diff --git a/src/espeak.cpp b/src/espeak.cpp index dbd83f22..517b3481 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -53,7 +53,7 @@ static const char *help_text = "-p \n" "\t Pitch adjustment, 0 to 99, default is 50\n" "-s \n" -"\t Speed in words per minute, 80 to 450, default is 175\n" +"\t Speed in approximate words per minute. The default is 175\n" "-v \n" "\t Use voice file of this name from espeak-data/voices\n" "-w \n" @@ -68,7 +68,6 @@ static const char *help_text = "\t Compile pronunciation rules and dictionary from the current\n" "\t directory. specifies the language\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" -"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" "--path=\"\"\n" "\t Specifies the directory containing the espeak-data directory\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" @@ -77,9 +76,15 @@ static const char *help_text = "--punct=\"\"\n" "\t Speak the names of punctuation characters during speaking. If\n" "\t = is omitted, all punctuation is spoken.\n" -"--split=\"\"\n" +"--sep=\n" +"\t Separate phonemes (from -x --ipa) with .\n" +"\t Default is space, z means ZWJN character.\n" +"--split=\n" "\t Starts a new WAV file every . Used with -w\n" "--stdout Write speech output to stdout\n" +"--tie=\n" +"\t Use a tie character within multi-letter phoneme names.\n" +"\t Default is U+361, z means ZWJ character.\n" "--version Shows version number and date, and location of espeak-data\n" "--voices=\n" "\t List the available voices for the specified language.\n" @@ -123,6 +128,37 @@ void strncpy0(char *dest, const char *source, int size) } } +int utf8_in(int *c, const char *buf) +{//================================= +// Read a unicode characater from a UTF8 string +// Returns the number of UTF8 bytes used. +// backwards: set if we are moving backwards through the UTF8 string + int c1; + int n_bytes; + int ix; + static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07}; + + n_bytes = 0; + + if((c1 = *buf++) & 0x80) + { + if((c1 & 0xe0) == 0xc0) + n_bytes = 1; + else if((c1 & 0xf0) == 0xe0) + n_bytes = 2; + else if((c1 & 0xf8) == 0xf0) + n_bytes = 3; + + c1 &= mask[n_bytes]; + for(ix=0; ix3)) + // deprecated and obsolete + switch(atoi(optarg2)) { - fprintf(stderr,"Bad value for -ipa=\n"); - value = 0; + case 1: + phonemes_separator = '_'; + break; + case 2: + phonemes_separator = 0x0361; + phoneme_options |= espeakPHONEMES_TIE; + break; + case 3: + phonemes_separator = 0x200d; // ZWJ + phoneme_options |= espeakPHONEMES_TIE; + break; } - option_phonemes += value; + } break; - case 0x10b: // -version + case 0x10b: // --version PrintVersion(); exit(0); + + case 0x10c: // --sep + phoneme_options |= espeakPHONEMES_SHOW; + if(optarg2 == 0) + phonemes_separator = ' '; + else + utf8_in(&phonemes_separator, optarg2); + if(phonemes_separator == 'z') + phonemes_separator = 0x200c; // ZWNJ + break; + + case 0x10d: // --tie + phoneme_options |= (espeakPHONEMES_SHOW | espeakPHONEMES_TIE); + if(optarg2 == 0) + phonemes_separator = 0x0361; // default: combining-double-inverted-breve + else + utf8_in(&phonemes_separator, optarg2); + if(phonemes_separator == 'z') + phonemes_separator = 0x200d; // ZWJ + break; + default: exit(0); @@ -707,7 +774,9 @@ int main (int argc, char **argv) espeak_SetParameter(espeakLINELENGTH,option_linelength,0); if(option_punctuation == 2) espeak_SetPunctuationList(option_punctlist); - espeak_SetPhonemeTrace(option_phonemes | option_mbrola_phonemes,f_phonemes_out); + + + espeak_SetPhonemeTrace(phoneme_options | (phonemes_separator << 8), f_phonemes_out); if(filename[0]==0) { diff --git a/src/speak.cpp b/src/speak.cpp index e402dea7..f7a4e28a 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -87,7 +87,7 @@ static const char *help_text = "-p \n" "\t Pitch adjustment, 0 to 99, default is 50\n" "-s \n" -"\t Speed in words per minute, 80 to 450, default is 175\n" +"\t Speed in approximate words per minute. The default is 175\n" "-v \n" "\t Use voice file of this name from espeak-data/voices\n" "-w \n" @@ -102,7 +102,6 @@ static const char *help_text = "\t Compile pronunciation rules and dictionary from the current\n" "\t directory. specifies the language\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" -"\t --ipa=1 Use ties, --ipa=2 Use ZWJ, --ipa=3 Separate with _\n" "--path=\"\"\n" "\t Specifies the directory containing the espeak-data directory\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" @@ -111,9 +110,15 @@ static const char *help_text = "--punct=\"\"\n" "\t Speak the names of punctuation characters during speaking. If\n" "\t = is omitted, all punctuation is spoken.\n" -"--split=\"\"\n" +"--sep=\n" +"\t Separate phonemes (from -x --ipa) with .\n" +"\t Default is space, z means ZWJN character.\n" +"--split=\n" "\t Starts a new WAV file every . Used with -w\n" "--stdout Write speech output to stdout\n" +"--tie=\n" +"\t Use a tie character within multi-letter phoneme names.\n" +"\t Default is U+361, z means ZWJ character.\n" "--version Shows version number and date, and location of espeak-data\n" "--voices=\n" "\t List the available voices for the specified language.\n" @@ -496,6 +501,8 @@ int main (int argc, char **argv) {"pho", no_argument, 0, 0x109}, {"ipa", optional_argument, 0, 0x10a}, {"version", no_argument, 0, 0x10b}, + {"sep", optional_argument, 0, 0x10c}, + {"tie", optional_argument, 0, 0x10d}, {0, 0, 0, 0} }; @@ -516,6 +523,8 @@ int main (int argc, char **argv) int flag_stdin = 0; int flag_compile = 0; int pitch_adjustment = 50; + int phoneme_options = 0; + int phonemes_separator = 0; espeak_VOICE voice_select; char filename[200]; char voicename[40]; @@ -622,11 +631,11 @@ int main (int argc, char **argv) break; case 'x': - option_phonemes = 1; + phoneme_options |= espeakPHONEMES_SHOW; break; case 'X': - option_phonemes = 2; + phoneme_options |= espeakPHONEMES_TRACE; break; case 'm': @@ -729,21 +738,29 @@ int main (int argc, char **argv) break; case 0x109: // --pho - option_mbrola_phonemes = 16; + phoneme_options |= espeakPHONEMES_MBROLA; break; case 0x10a: // --ipa - option_phonemes = 3; + phoneme_options |= espeakPHONEMES_IPA; if(optarg2 != NULL) { - value = -1; - sscanf(optarg2,"%d",&value); - if((value<0) || (value>3)) + // deprecated and obsolete + switch(atoi(optarg2)) { - fprintf(stderr,"Bad value for -ipa=\n"); - value = 0; + case 1: + phonemes_separator = '_'; + break; + case 2: + phonemes_separator = 0x0361; + phoneme_options |= espeakPHONEMES_TIE; + break; + case 3: + phonemes_separator = 0x200d; // ZWJ + phoneme_options |= espeakPHONEMES_TIE; + break; } - option_phonemes += value; + } break; @@ -751,6 +768,26 @@ int main (int argc, char **argv) init_path(argv[0],data_path); printf("speak text-to-speech: %s Data at: %s\n",version_string,path_home); exit(0); + + case 0x10c: // --sep + phoneme_options |= espeakPHONEMES_SHOW; + if(optarg2 == 0) + phonemes_separator = ' '; + else + utf8_in(&phonemes_separator, optarg2); + if(phonemes_separator == 'z') + phonemes_separator = 0x200c; // ZWNJ + break; + + case 0x10d: // --tie + phoneme_options |= (espeakPHONEMES_SHOW | espeakPHONEMES_TIE); + if(optarg2 == 0) + phonemes_separator = 0x0361; // default: combining-double-inverted-breve + else + utf8_in(&phonemes_separator, optarg2); + if(phonemes_separator == 'z') + phonemes_separator = 0x200d; // ZWJ + break; default: exit(0); @@ -803,6 +840,8 @@ int main (int argc, char **argv) SetParameter(espeakPUNCTUATION,option_punctuation,0); SetParameter(espeakWORDGAP,wordgap,0); + option_phonemes = phoneme_options | (phonemes_separator << 8); + if(pitch_adjustment != 50) { SetParameter(espeakPITCH,pitch_adjustment,0); diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index 9bb00818..8aa7dd8b 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -811,7 +811,6 @@ ENTER("espeak_Initialize"); return(EE_INTERNAL_ERROR); option_phonemes = 0; - option_mbrola_phonemes = 0; option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); VoiceReset(0); @@ -1159,19 +1158,22 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist) } // end of espeak_SetPunctuationList -ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) -{//============================================================ +ESPEAK_API void espeak_SetPhonemeTrace(int phonememode, FILE *stream) +{//=================================================================== ENTER("espeak_SetPhonemes"); - /* Controls the output of phoneme symbols for the text - bits 0-3: - value=0 No phoneme output (default) - value=1 Output the translated phoneme symbols for the text - value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) - value=3 as (1), but produces IPA phoneme names rather than ascii - bit 4: produce mbrola pho data - */ - option_phonemes = value & 7; - option_mbrola_phonemes = value & 16; +/* phonememode: Controls the output of phoneme symbols for the text + bits 0-2: + value=0 No phoneme output (default) + value=1 Output the translated phoneme symbols for the text + value=2 as (1), but produces IPA phoneme names rather than ascii + bit 3: output a trace of how the translation was done (showing the matching rules and list entries) + bit 4: produce pho data for mbrola + bit 7: use (bits 8-23) as a tie within multi-letter phonemes names + bits 8-23: separator character, between phoneme names + + stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. +*/ + option_phonemes = phonememode; f_trans = stream; if(stream == NULL) f_trans = stderr; @@ -1181,8 +1183,10 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode) {//================================================================================================= - /* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator - bits 4-7: 0=eSpeak phoneme names, 1=IPA + /* phoneme_mode + bit 1: 0=eSpeak's ascii phoneme names, 1= International Phonetic Alphabet (as UTF-8 characters). + bit 7: use (bits 8-23) as a tie within multi-letter phonemes names + bits 8-23: separator character, between phoneme names */ option_multibyte = textmode & 7; diff --git a/src/speak_lib.h b/src/speak_lib.h index f33e0313..be5ae1d6 100644 --- a/src/speak_lib.h +++ b/src/speak_lib.h @@ -34,7 +34,7 @@ #define ESPEAK_API #endif -#define ESPEAK_API_REVISION 9 +#define ESPEAK_API_REVISION 10 /* Revision 2 Added parameter "options" to eSpeakInitialize() @@ -61,6 +61,9 @@ Revision 8 26.Apr.2013 Revision 9 30.May.2013 Changed function espeak_TextToPhonemes(). +Revision 10 29.Aug.2014 + Changed phonememode parameter to espeak_TextToPhonemes() and espeak_SetPhonemeTrace + */ /********************/ /* Initialization */ @@ -473,15 +476,25 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); EE_INTERNAL_ERROR. */ +#define espeakPHONEMES_SHOW 0x01 +#define espeakPHONEMES_IPA 0x02 +#define espeakPHONEMES_TRACE 0x08 +#define espeakPHONEMES_MBROLA 0x10 +#define espeakPHONEMES_TIE 0x80 + #ifdef __cplusplus extern "C" #endif -ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); -/* Controls the output of phoneme symbols for the text - value=0 No phoneme output (default) - value=1 Output the translated phoneme symbols for the text - value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) - value=3 as (1), but produces IPA rather than ascii phoneme names +ESPEAK_API void espeak_SetPhonemeTrace(int phonememode, FILE *stream); +/* phonememode: Controls the output of phoneme symbols for the text + bits 0-2: + value=0 No phoneme output (default) + value=1 Output the translated phoneme symbols for the text + value=2 as (1), but produces IPA phoneme names rather than ascii + bit 3: output a trace of how the translation was done (showing the matching rules and list entries) + bit 4: produce pho data for mbrola + bit 7: use (bits 8-23) as a tie within multi-letter phonemes names + bits 8-23: separator character, between phoneme names stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. */ @@ -506,15 +519,11 @@ ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, espeakCHARS_WCHAR Wide characters (wchar_t) espeakCHARS_16BIT 16 bit characters. - phonememode: bits0-3: - 0= just phonemes. - 1= include ties (U+361) for phoneme names of more than one letter. - 2= include zero-width-joiner for phoneme names of more than one letter. - 3= separate phonemes with underscore characters. + phoneme_mode + bit 1: 0=eSpeak's ascii phoneme names, 1= International Phonetic Alphabet (as UTF-8 characters). + bit 7: use (bits 8-23) as a tie within multi-letter phonemes names + bits 8-23: separator character, between phoneme names - bits 4-7: - 0= eSpeak's ascii phoneme names. - 1= International Phonetic Alphabet (as UTF-8 characters). */ #ifdef __cplusplus diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index 961254ef..f3533f0e 100644 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -35,7 +35,6 @@ #include "translate.h" #include "voice.h" -int option_mbrola_phonemes; #ifdef INCLUDE_MBROLA @@ -646,7 +645,7 @@ int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) if(*n_ph == 0) return(0); - if(option_mbrola_phonemes) + if(option_phonemes & espeakPHONEMES_MBROLA) { // send mbrola data to a file, not to the mbrola library f_mbrola = f_trans; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index c1763765..87e92caa 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.48.10 09.Aug.14"; +const char *version_string = "1.48.11 31.Aug.14"; const int version_phdata = 0x014801; int option_device_number = -1; @@ -620,6 +620,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, int instn; int instn2; int count; + int check_endtype = 0; PHONEME_TAB *ph; PHONEME_LIST *plist_this; @@ -672,6 +673,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, case 0: // prevPh case 5: // prevPhW plist--; + check_endtype = 1; break; case 1: // thisPh @@ -705,6 +707,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, if((worddata==NULL) || (worddata->prev_vowel.ph == NULL)) return(false); // no previous vowel plist = &(worddata->prev_vowel); + check_endtype = 1; break; case 9: // next3PhW @@ -720,6 +723,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, if((plist[0].sourceix) || (plist[-1].sourceix)) return(false); plist-=2; + check_endtype = 1; break; } @@ -744,7 +748,9 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, // 'data' is a phoneme number if((phoneme_tab[data]->mnemonic == ph->mnemonic) == true) return(true); - if((which == 0) && (ph->type == phVOWEL)) + + // not an exact match, check for a vowel type (eg. #i ) + if((check_endtype) && (ph->type == phVOWEL)) return(data == ph->end_type); // prevPh() match on end_type return(data == ph->start_type); // thisPh() or nextPh(), match on start_type } diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 00fb8dc5..0c9ea3c1 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1980,14 +1980,10 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) CalcPitches(translator, clause_tone); CalcLengths(translator); - if((option_phonemes > 0) || (phoneme_callback != NULL)) + if((option_phonemes & 0xf) || (phoneme_callback != NULL)) { - int phoneme_mode = 0; - if(option_phonemes >= 3) - phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators - - phon_out = GetTranslatedPhonemeString(phoneme_mode); - if(option_phonemes > 0) + phon_out = GetTranslatedPhonemeString(option_phonemes); + if(option_phonemes & 0xf) { fprintf(f_trans,"%s\n",phon_out); } diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 7b3e0674..d70484a0 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -779,7 +779,8 @@ Translator *SelectTranslator(const char *name) if(name2 == L_pap) { // stress last syllable unless word ends with a vowel - tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; + tr->langopts.stress_rule = STRESSPOSN_1R; + tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; } else { @@ -793,7 +794,8 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_eu[8] = {200, 200, 200, 200, 0, 0, 210, 230}; // very weak stress static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 }; SetupTranslator(tr,stress_lengths_eu,stress_amps_eu); - tr->langopts.stress_rule = STRESSPOSN_2L; // ?? second syllable ?? + tr->langopts.stress_rule = STRESSPOSN_2L; // ?? second syllable, but not on a word-final vowel + tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED; tr->langopts.param[LOPT_SUFFIX] = 1; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_VIGESIMAL; } @@ -1345,8 +1347,8 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); - tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY; + tr->langopts.stress_rule = STRESSPOSN_1R; + tr->langopts.stress_flags = S_FINAL_VOWEL_UNSTRESSED | S_FINAL_DIM_ONLY; tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; @@ -1449,8 +1451,8 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); - tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C; + tr->langopts.stress_rule = STRESSPOSN_1R; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_VOWEL_UNSTRESSED; SetLetterVowel(tr,'y'); tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; tr->langopts.accents = 2; // "capital" after letter name diff --git a/src/translate.cpp b/src/translate.cpp index 265ec0c5..34c52d40 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -763,7 +763,7 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes) } remove_stress = pb[1]; - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { DecodePhonemes(phonemes, phonbuf); fprintf(f_trans,"(%s) %s -> (%s) ", phoneme_tab_list[lang2].name, phonbuf, phoneme_tab_list[tr->phoneme_tab_ix].name); @@ -806,7 +806,7 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes) strcpy(phonemes, phonbuf); - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { SelectPhonemeTable(tr->phoneme_tab_ix); DecodePhonemes(phonemes, phonbuf); @@ -1220,7 +1220,7 @@ if(end_type & SUFX_UNPRON) end_type = end2; strcpy(phonemes,phonemes2); strcpy(end_phonemes,end_phonemes2); - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { DecodePhonemes(end_phonemes,end_phonemes2); fprintf(f_trans," suffix [%s]\n\n",end_phonemes2); diff --git a/src/translate.h b/src/translate.h index ea7a915e..7f973a02 100644 --- a/src/translate.h +++ b/src/translate.h @@ -408,8 +408,8 @@ typedef struct { #define S_FIRST_PRIMARY 0x80 // bit7=if more than one primary stress, make the subsequent primaries to secondary stress -#define S_FINAL_STRESS_C 0x100 -// bit8=stress last syllable if it doesn't end in a vowel +#define S_FINAL_VOWEL_UNSTRESSED 0x100 +// bit8=don't apply default stress to a word-final vowel #define S_FINAL_SPANISH 0x200 // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish @@ -673,7 +673,6 @@ extern int option_tone_flags; extern int option_waveout; extern int option_quiet; extern int option_phonemes; -extern int option_mbrola_phonemes; extern int option_phoneme_events; extern int option_linelength; // treat lines shorter than this as end-of-clause extern int option_multibyte; diff --git a/src/transldlg.cpp b/src/transldlg.cpp index 58c7507b..7ee61a52 100644 --- a/src/transldlg.cpp +++ b/src/transldlg.cpp @@ -409,7 +409,6 @@ void TranslDlg::OnCommand(wxCommandEvent& event) const char *phon_out2; int clause_tone; int clause_count; - int use_ipa = 0; FILE *f; int fd_temp; char fname_temp[100]; @@ -447,21 +446,20 @@ void TranslDlg::OnCommand(wxCommandEvent& event) } #endif t_phonetic->SetDefaultStyle(style_phonetic); - translate_text = 2; + translate_text = espeakPHONEMES_TRACE; break; case T_TRANSLATE: case MENU_SPEAK_TRANSLATE: t_phonetic->SetDefaultStyle(style_phonetic); - translate_text = 1; + translate_text = espeakPHONEMES_SHOW; break; case T_TRANSLATE_IPA: case MENU_SPEAK_IPA: t_phonetic->SetDefaultStyle(style_phonetic_large); - translate_text = 3; - use_ipa = 0x10; + translate_text = espeakPHONEMES_IPA; break; case T_PROCESS: @@ -496,7 +494,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event) CalcPitches(translator,clause_tone); CalcLengths(translator); - phon_out2 = GetTranslatedPhonemeString(use_ipa); + phon_out2 = GetTranslatedPhonemeString(option_phonemes); if(clause_count++ > 0) strcat(phon_out," ||"); strcat(phon_out, phon_out2); @@ -514,7 +512,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event) ph_list[N_PH_LIST].ph = NULL; // to recognize overrun off list (in Generate() ) t_phonetic->Clear(); - if(option_phonemes == 2) + if(option_phonemes & espeakPHONEMES_TRACE) { option_phonemes=0; rewind(f_trans); From 1af0afa88c58de7fb6627afb546a19e0e73239b5 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 31 Aug 2014 17:22:12 +0100 Subject: [PATCH 7/7] 1.48.11 (from http://espeak.sourceforge.net/test/latest.html) --- espeak-data/voices/europe/eu | 0 espeak-data/voices/test/eu | 3 --- phsource/ufric/ts_eu.wav | Bin phsource/ufric/tz_eu.wav | Bin phsource/ufric/z_eu.wav | Bin src/Makefile | 10 +++++----- 6 files changed, 5 insertions(+), 8 deletions(-) mode change 100755 => 100644 espeak-data/voices/europe/eu delete mode 100644 espeak-data/voices/test/eu mode change 100755 => 100644 phsource/ufric/ts_eu.wav mode change 100755 => 100644 phsource/ufric/tz_eu.wav mode change 100755 => 100644 phsource/ufric/z_eu.wav diff --git a/espeak-data/voices/europe/eu b/espeak-data/voices/europe/eu old mode 100755 new mode 100644 diff --git a/espeak-data/voices/test/eu b/espeak-data/voices/test/eu deleted file mode 100644 index 35ada0cf..00000000 --- a/espeak-data/voices/test/eu +++ /dev/null @@ -1,3 +0,0 @@ -name basque-test -language eu - diff --git a/phsource/ufric/ts_eu.wav b/phsource/ufric/ts_eu.wav old mode 100755 new mode 100644 diff --git a/phsource/ufric/tz_eu.wav b/phsource/ufric/tz_eu.wav old mode 100755 new mode 100644 diff --git a/phsource/ufric/z_eu.wav b/phsource/ufric/z_eu.wav old mode 100755 new mode 100644 diff --git a/src/Makefile b/src/Makefile index 17224b85..95fe5493 100644 --- a/src/Makefile +++ b/src/Makefile @@ -93,13 +93,13 @@ SRCS3 = espeak.cpp OBJS3=$(patsubst %.cpp,%.o,$(SRCS3)) LIBS3=-lstdc++ -L . -lespeak -CXXFLAGS?=-O2 -CXXFLAGS+=-fno-exceptions -pedantic -Wall +CXXFLAGS=-O2 + all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) .cpp.o: - $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -I. -c $< + $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< $(BIN_NAME): $(OBJS1) $(CXX) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1) @@ -110,8 +110,8 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME) x_%.o: %.cpp - $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -fpic -fvisibility=hidden \ - -I. -D LIBRARY -c $< -o x_$*.o + $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fpic -fvisibility=hidden -pedantic \ + -I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o $(LIB_NAME): $(OBJS2) $(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \