diff --git a/CHANGELOG.md b/CHANGELOG.md index 0691084f..9f570539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ updated languages: * zh (Chinese) -- Silas S. Brown new languages: +* haw (Hawaiian) -- Valdis Vitolins * uk (Ukrainian) -- Valdis Vitolins * qu (Quechua) -- Valdis Vitolins diff --git a/Makefile.am b/Makefile.am index 5af05e9c..3e106fa0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -489,6 +489,7 @@ dictionaries: \ espeak-ng-data/grc_dict \ espeak-ng-data/gu_dict \ espeak-ng-data/hak_dict \ + espeak-ng-data/haw_dict \ espeak-ng-data/hi_dict \ espeak-ng-data/hr_dict \ espeak-ng-data/ht_dict \ @@ -633,6 +634,9 @@ espeak-ng-data/fr_dict: dictsource/fr_list dictsource/fr_rules dictsource/fr_ext hak: espeak-ng-data/hak_dict espeak-ng-data/hak_dict: dictsource/hak_list dictsource/hak_rules dictsource/hak_extra +haw: espeak-ng-data/haw_dict +espeak-ng-data/haw_dict: dictsource/haw_list dictsource/haw_rules dictsource/haw_extra + ht: espeak-ng-data/ht_dict espeak-ng-data/ht_dict: dictsource/ht_list dictsource/ht_rules dictsource/ht_extra diff --git a/dictsource/haw_list b/dictsource/haw_list new file mode 100644 index 00000000..a1dd1304 --- /dev/null +++ b/dictsource/haw_list @@ -0,0 +1,105 @@ +// Names of letters +a a +e e +i i +o o +u u +'a: a:: +ē e:: +ī i:: +ō o:: +'u: u:: +ai ai +ae ae +ao ao +au au +ei ei +eu eu +iu iu +oi oi +ou ou +ui ui +h he: +k ke: +l la: +m mu: +n nu: +p pi: +w ve: +‘ ?okina + +// Numbers +_0 ?ole +_1 ?ekahi +_2 ?elua +_3 ?ekolu +_4 ?eh'a: +_5 ?elima +_6 ?eono +_7 ?ehiku +_8 ?ewalu +_9 ?eiwa +_10 ?umi +_11 ?umik'u:m'a:kahi +_12 ?umik'u:m'a:lua +_13 ?umik'u:m'a:kolu +_14 ?umik'u:m'a:h'a: +_15 ?umik'u:m'a:lima +_16 ?umik'u:m'a:ono +_17 ?umik'u:m'a:hiku +_18 ?umik'u:m'a:walu +_19 ?umik'u:m'a:iwa +_20 iwak'a:lua +_21 iwak'a:luak'u:m'a:kahi +_22 iwak'a:luak'u:m'a:lua +_23 iwak'a:luak'u:m'a:kolu +_24 iwak'a:luak'u:m'a:h'a: +_25 iwak'a:luak'u:m'a:lima +_26 iwak'a:luak'u:m'a:ono +_27 iwak'a:luak'u:m'a:hiku +_28 iwak'a:luak'u:m'a:walu +_29 iwak'a:luak'u:m'a:iwa +_30 kanakolu +_40 kanah'a: +_50 kanalima +_60 kanaono +_70 kanahiku +_80 kanawalu +_90 kanaiwa +_0C ho?okahi +_0M1 kaukani +_0M2 miliona +_0M3 piliona + +// Unstressed words +a'ela $u +a'e $u +akula $u +aku $u +'ana $u +a'o $u +au $u +ho'i $u +'ia $u +ia $u +iā $u +ihola $u +iho $u +ilelo $u +kākou $u +lākou $u +lā $u +maila $u +mai $u +mau $u +nō $u +'oe $u +'o $u +'oukou $u +paha $u +po'e $u +pono $u +pū $u +ua $u +wale $u +wau $u diff --git a/dictsource/haw_rules b/dictsource/haw_rules new file mode 100644 index 00000000..7ed8619d --- /dev/null +++ b/dictsource/haw_rules @@ -0,0 +1,115 @@ +.replace + â ā + ê ē + î ī + ô ō + û ū + ` ' + ‘ ' + ’ ' + ʻ ' + +.L20 a o u +.L40 i e + +.group a + a a + +.group e + e e + +.group i + i i + +.group o + o o + +.group u + u u + +.group ā + ā 'a: + +.group ē + ē 'e: + +.group ī + ī 'i: + +.group ō + ō 'o: + +.group ū + ū 'u: + +.group ai + ai ai + +.group ae + ae ae + +.group ao + ao ao + +.group au + au au + +.group ei + ei ei + +.group eu + eu eu + +.group iu + iu iu + +.group oi + oi oi + +.group ou + ou ou + +.group ui + ui ui + +.group h + h h + +.group k + k k + +.group l + l l + +.group m + m m + +.group n + n n + +.group p + p p + +.group v + v v + +.group w + w (L20 w + w (L40 v + +.group ' + ' _! // short non-breking pause instead of standard ? glottal stop + + +// other Latin letters, to not switch to standard English during pronunciation +.group + b b + c ts + d d + f f + g g + q k + r r + s s + t t + z z diff --git a/docs/languages.md b/docs/languages.md index 5eb663d1..b16be276 100644 --- a/docs/languages.md +++ b/docs/languages.md @@ -31,6 +31,7 @@ The 111 supported languages and accents are: | `roa` | `ca` | Romance | Catalan | | | `sit` | `yue` | Sino-Tibetan | Chinese | Cantonese | | `sit` | `hak` | Sino-Tibetan | Chinese | Hakka | +| `map` | `haw` | Austronesian | Hawaiian | | | `sit` | `cmn` | Sino-Tibetan | Chinese | Mandarin | | `zls` | `hr` | South Slavic | Croatian | | | `zlw` | `cs` | West Slavic | Czech | | diff --git a/espeak-ng-data/lang/map/haw b/espeak-ng-data/lang/map/haw new file mode 100644 index 00000000..c0869132 --- /dev/null +++ b/espeak-ng-data/lang/map/haw @@ -0,0 +1,3 @@ +name Hawaiian +language haw +status testing diff --git a/phsource/ph_hawaiian b/phsource/ph_hawaiian new file mode 100644 index 00000000..fb15cf66 --- /dev/null +++ b/phsource/ph_hawaiian @@ -0,0 +1,236 @@ +phoneme a + vwl starttype #a endtype #a + length 130 + FMT(vwl_lv/a, 100) +endphoneme + +phoneme a: + vwl starttype #a endtype #a + length 310 + lng + FMT(vwl_lv/aa, 90) +endphoneme + +phoneme e + vwl starttype #e endtype #e + length 120 + FMT(vwl_lv/e, 100) +endphoneme + +phoneme e: + vwl starttype #e endtype #e + length 300 + FMT(vwl_lv/ee, 100) +endphoneme + +phoneme i + vwl starttype #i endtype #i + length 120 + FMT(vwl_lv/i, 110) +endphoneme + +phoneme i: + vwl starttype #i endtype #i + length 280 + FMT(vwl_lv/ii, 90) +endphoneme + +phoneme o + vwl starttype #o endtype #o + length 120 + FMT(vwl_lv/o, 90) +endphoneme + +phoneme o: + vwl starttype #o endtype #o + length 300 + FMT(vwl_lv/oo, 75) +endphoneme + +phoneme u + vwl starttype #u endtype #u + length 120 + FMT(vwl_lv/u, 100) +endphoneme + +phoneme u: + vwl starttype #u endtype #u + length 300 + FMT(vwl_lv/uu, 90) +endphoneme + +phoneme ai + vwl starttype #a endtype #i + length 280 + lng + FMT(vdiph/aai, 100) +endphoneme + +phoneme au + vwl starttype #a endtype #u + length 300 + lng + FMT(vdiph/aau, 100) +endphoneme + +phoneme ei + vwl starttype #e endtype #i + length 280 + lng + FMT(vdiph/eei_2, 100) +endphoneme + +phoneme ie + vwl starttype #i endtype #e + length 250 + lng + FMT(vdiph2/ie_2, 100) +endphoneme + +phoneme iu + vwl starttype #i endtype #u + length 250 + lng + FMT(vdiph2/iu_2, 100) +endphoneme + +phoneme ui + vwl starttype #u endtype #i + length 250 + lng + FMT(vdiph/ui, 100) +endphoneme + +phoneme uo + vwl starttype #u endtype #a + length 280 + lng + FMT(vdiph2/ua, 110) +endphoneme + +phoneme oi + vwl starttype #o endtype #i + length 250 + lng + FMT(vdiph/ooi, 100) +endphoneme + +phoneme k + vls vel stp + lengthmod 2 + voicingswitch g + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 + IF nextPh(isPause2) THEN + WAV(ustop/k_) + ENDIF + IF nextPh(#i) OR nextPh(l^) THEN + WAV(ustop/ki) + ENDIF + IF nextPh(l) THEN + WAV(ustop/kl) + ENDIF + WAV(ustop/k_unasp, 60) +endphoneme + +phoneme l + liquid + + IF nextPh(isNotVowel) THEN + PrevVowelEndings + VowelEnding(l/L1_@L) + VowelEnding(l/L1_aL) + VowelEnding(l/L1_eL) + VowelEnding(l/L1_iL) + VowelEnding(l/L1_oL) + VowelEnding(l/L1_uL) + EndSwitch + + FMT(l/l_) + RETURN + ENDIF + + CALL vowelstart_l + + IF prevPh(a) OR prevPh(a:) THEN + VowelEnding(l/xl, 20) + ELSEIF prevPh(isVowel) THEN + VowelEnding(l/xl, 10) + ENDIF + + IF prevPh(isPause) THEN + FMT(l/_l) + ENDIF + + IF prevPh(t) THEN + FMT(l/tl) + ENDIF + + IF prevPh(l/) THEN + FMT(l/l_long) + ENDIF + + FMT(l/l) +endphoneme + +phoneme m + vcd blb nas + Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk + lengthmod 4 + + IF KlattSynth THEN + Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 + IF nextPh(isPause2) THEN + FMT(klatt/m_) + ENDIF + FMT(klatt/m) + ENDIF + + NextVowelStarts + VowelStart(m/m@) + VowelStart(m/ma) + VowelStart(m/me) + VowelStart(m/mi) + VowelStart(m/mo) + VowelStart(m/mu) + EndSwitch + + IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN + FMT(m/mj) + ELIF prevPh(isPause) THEN + FMT(m/_m) + ELIF nextPh(isNotVowel) THEN + FMT(m/m_) + ELIF nextPh(m) THEN + FMT(m/mj) + ENDIF +endphoneme + +phoneme p + vls blb stp + lengthmod 2 + voicingswitch b + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 + Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 + IF nextPh(isPause2) THEN + WAV(ustop/p_unasp_, 80) + ENDIF + IF nextPh(l) THEN + WAV(ustop/pl) + ENDIF + WAV(ustop/p_unasp, 120) +endphoneme + +phoneme v + vcd lbd frc + ipa ʋ + lengthmod 6 + voicingswitch f + Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 + Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 + IF nextPh(isPause2) THEN + FMT(voc/v#_) + ENDIF + FMT(voc/v#) +endphoneme + diff --git a/phsource/phonemes b/phsource/phonemes index f3350247..fd490bbe 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1722,6 +1722,9 @@ include ph_guarani phonemetable hak base1 include ph_hakka +phonemetable haw base1 +include ph_hawaiian + phonemetable hi_base base1 include ph_hindi_base