diff --git a/dictsource/vi_list b/dictsource/vi_list index 7d8b6501..dbcad85b 100644 --- a/dictsource/vi_list +++ b/dictsource/vi_list @@ -29,41 +29,41 @@ _2 h'a:I // hai _3 _b'a: // ba _4 _b'o3n // bốn _5 n'am // năm -_6 s.'aU3 // sáu +_6 s'aU3 // sáu _7 _b'aI4 // bảy _8 t['a:3m // tám -_9 c'i3n // chín +_9 tSi3n // chín _1X m'y@2j // mười _2X h'a:I||m'y@7j // hai mươi _3X _b'a:||m'y@7j // ba mươi _4X _b'o3n||m'y@7j // bốn mươi _5X n'am||m'y@7j // năm mươi -_6X s.'aU3||m'y@7j // sáu mươi +_6X s'aU3||m'y@7j // sáu mươi _7X _b'aI4||m'y@7j // bảy mươi _8X t['a:3m||m'y@7j // tám mươi -_9X c'i3n||m'y@7j // chín mươi +_9X tSi3n||m'y@7j // chín mươi _21 h'a:I||m'y@7j||m'o3t[ _31 _b'a:||m'y@7j||m'o3t[ _41 _b'o3n||m'y@7j||m'o3t[ _51 n'am||m'y@7j||m'o3t[ -_61 s.'aU3||m'y@7j||m'o3t[ +_61 s'aU3||m'y@7j||m'o3t[ _71 _b'aI4||m'y@7j||m'o3t[ _81 t['a:3m||m'y@7j||m'o3t[ -_91 c'i3n||m'y@7j||m'o3t[ +_91 tSi3n||m'y@7j||m'o3t[ _25 h'a:I||m'y@7j||l'a7m _35 _b'a:||m'y@7j||l'a7m _45 _b'o3n||m'y@7j||l'a7m _55 n'am||m'y@7j||l'a7m -_65 s.'aU3||m'y@7j||l'a7m +_65 s'aU3||m'y@7j||l'a7m _75 _b'aI4||m'y@7j||l'a7m _85 t['a:3m||m'y@7j||l'a7m -_95 c'i3n||m'y@7j||l'a7m +_95 tSi3n||m'y@7j||l'a7m -_0C cr'am // trăm +_0C tS'am // trăm _0M1 N'a:2n // ngàn -_0M2 cr'i@6w // triệu +_0M2 tS'i@6w // triệu _0M3 t['i4 // tỷ _0and l,in^ // linh _dpt _f,@I4_ @@ -71,14 +71,14 @@ _dpt _f,@I4_ // kí hiệu - symbols ~ J'@U3N'a:5 ` J'@U3hw'i@2n -_! J'@U3c'@3mt'a:7n +_! J'@U3tS@3mt'a:7n @ a:1k'O2N # J'@U3t'a7N $max3 $ J'@U3_d'o1l'a:7 -% f'@2ncr'a7m +% f'@2ntS'a7m ^ J'@U3m'u5 & J'@U3v,a:2 -* J'@U3s.'a:U7 $max3 +* J'@U3s'a:U7 $max3 _( m'@:4Nw'a6kh _) _d'O3NNw'a6kh _- Q'a:6cN'a:7N @@ -91,16 +91,16 @@ _[ m'@:4Nw'a6khv'u@7N _] _d'O3NNw'a6khv'u@7N _| s'o4t'a4N _\ s'o4f,a:I4 -_: h'a:I1c'@3m -_; c'@3mf'@I4 +_: h'a:I1tS@3m +_; tS@3mf'@I4 _' Nw'a6kh_d'@:7n _“ Nw'a6khk'E3p _, f'@I4 -_. c'@3m -_/ s'o4cr'a:I3 +_. tS@3m +_/ s'o4tS'a:I3 _< n^'O4h'@:7n _> l'@:3nh'@:7n -_? h'OI4c'@3m +_? h'OI4tS@3m // ?? found in festival wow_vi_ptn_phrasing.scm bị $u diff --git a/dictsource/vi_rules b/dictsource/vi_rules index a9259b96..83079e67 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -81,7 +81,7 @@ ỵ ỵ //================================ .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge r .L02 n a -.L03 t ch nh +.L03 ch nh .L04 a u ă â o ô á à ả ã ạ ù ú ủ ũ ụ ắ ằ ẳ ẵ ặ ấ ầ ẩ ẫ ậ ó ò ỏ õ ọ ố ồ ổ ỗ ộ ư ứ ừ ử ữ ự ơ ớ ờ ở ỡ ợ .group b b b @@ -93,8 +93,8 @@ ỵ ỵ .group c c g //k c (C _^_EN - c (_ kh - _) ch tS; // try [tS;] [tS] [c] c + c (_ c + _) ch tS // try [tS;] [tS] [c] c ?2 _) ch c ?1 _) ch c ch (_ c @@ -209,7 +209,7 @@ ỵ ỵ .group k - _) k k + _) k g _) kh x //kh x k (_ _^_EN @@ -266,9 +266,9 @@ ỵ ỵ .group q - q k + q g q (_ kh - qu w //kw + qu gw //kw @@ -286,7 +286,7 @@ ỵ ỵ .group s - s s. // try [s.] [s] [S] + s s // try [s.] [s] [S] _) sh _^_EN @@ -390,7 +390,7 @@ ỵ ỵ a (L01 _^_EN ai (L02 _^_EN a (@ _^_EN - + a (L03 a .group à @@ -470,7 +470,7 @@ ỵ ỵ .group ắ ắ a3 - + ắk a3c @@ -777,7 +777,7 @@ ỵ ỵ oả o@4 oã o@5 oạ o@6 - oo o@ + oo O oi OI oì OI2 oí OI3 @@ -799,6 +799,7 @@ ỵ ỵ oẳ o@4 oẵ o@5 oặ o@6 + oc O#c .group ò ò O2 @@ -819,7 +820,7 @@ ỵ ỵ óa o@3 //ó (A w3 óng O#3 óe o&3 - + óc O#3c @@ -858,7 +859,7 @@ ỵ ỵ ọa o@6 //ọ (A w6 ọng O#6 ọe o&6 - + ọc O#6c diff --git a/espeak-ng-data/lang/aav/vi b/espeak-ng-data/lang/aav/vi index 2ab8767c..c988a8e7 100644 --- a/espeak-ng-data/lang/aav/vi +++ b/espeak-ng-data/lang/aav/vi @@ -2,4 +2,4 @@ name Vietnamese (Northern) language vi words 1 -pitch 80 118 +pitch 100 180 diff --git a/phsource/envelopes.png b/phsource/envelopes.png index 5876f8bc..20de5bce 100644 Binary files a/phsource/envelopes.png and b/phsource/envelopes.png differ diff --git a/phsource/ph_vietnam b/phsource/ph_vietnam index f0d2552a..8e92e8d7 100644 --- a/phsource/ph_vietnam +++ b/phsource/ph_vietnam @@ -6,44 +6,44 @@ phoneme 1 // ngang tone: level stress - Tone(34,36, envelope/p_level, NULL) // 28 29 + Tone(30, 28, envelope/p_level, NULL) // 28 29 endphoneme phoneme 2 // huyền tone: low falling stress - Tone(30, 8, envelope/p_fall, NULL) //20 8 + Tone(20, 8, envelope/p_fall, NULL) //20 8 endphoneme phoneme 3 // sắc Tone(rising stress - Tone(30, 60, envelope/p_rise, NULL) // 30 60 + Tone(30, 55, envelope/p_rise, NULL) // 30 60 endphoneme phoneme 4 // hỏi Tone(curve (dipping rising) stress - Tone(10, 55, envelope/p_fallrise, NULL) //33 31 + Tone(10, 31, envelope/p_fallrise, NULL) //33 31 endphoneme phoneme 5 // ngã tone: broken (creaking rising) stress - Tone(28,58,envelope/p_214, envelope/vi_5amp) // 28,58 20 80 + Tone(34, 60,envelope/p_214, envelope/vi_5amp) // 28,58 20 80 endphoneme phoneme 6 // nặng Tone(drop (constricted) stress //length 150 // ignore because it make too short sound 75 // reduce the length of the vowel - Tone(25, 60, envelope/p_512, envelope/vi_6amp) //40 20 + Tone(34, 10, envelope/p_512, envelope/vi_6amp) //40 20 endphoneme phoneme 7 // Tone(1 (ngang) at end of clause stress - Tone(40, 35, envelope/p_fall, NULL) //40 20 + Tone(30, 28, envelope/p_fall, NULL) //40 20 endphoneme @@ -54,16 +54,22 @@ endphoneme phoneme a vwl starttype #@ endtype #@ - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vowel/a_4) //a_4) endphoneme phoneme a: vwl starttype #a endtype #a - IF nextPh(n^) OR nextPh(c) THEN + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd)THEN + length 240 + ELIF nextPh(n^) OR nextPh(c) THEN length 100 ELSE - length 140 //280 + length 140 //200 ENDIF FMT(vowel/a_8) endphoneme @@ -71,13 +77,21 @@ endphoneme phoneme E vwl starttype #e endtype #e - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vowel/e_e) //ee_3) endphoneme phoneme e vwl starttype #e endtype #e - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vowel/e) endphoneme @@ -88,6 +102,9 @@ phoneme i IF prevPhW(w) THEN VowelStart(w/wi) ENDIF + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ENDIF IF nextPh(n^) OR nextPh(c) THEN length 100 FMT(vnasal/ii_n) @@ -102,16 +119,32 @@ phoneme O vwl starttype #o endtype #o IF nextPh(kh) OR nextPh(N) THEN length 80 + ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 ELSE length 140 ENDIF FMT(vdiph2/o_oo) //vowel/oo) endphoneme +phoneme O+ + vwl starttype #o endtype #o + IF nextPh(kh) OR nextPh(N) THEN + length 80 + ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF + FMT(vowel/o) //vowel/oo) +endphoneme + phoneme o vwl starttype #o endtype #o IF nextPh(kh) OR nextPh(N) THEN length 110 + ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 ELSE length 140 ENDIF @@ -123,6 +156,8 @@ phoneme u vwl starttype #u endtype #u IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound length 120 + ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 ELSE length 140 ENDIF @@ -133,8 +168,10 @@ phoneme y vwl starttype #u endtype #u IF nextPh(kh) OR nextPh(N) THEN length 120 + ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 ELSE - length 180 + length 140 ENDIF FMT(vowel/u#_5) endphoneme @@ -145,6 +182,8 @@ phoneme @ vwl starttype #@ endtype #a IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN length 120 + ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 ELSE length 140 ENDIF @@ -154,7 +193,11 @@ endphoneme phoneme @: vwl starttype #@ endtype #@ - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vowel/@_2) endphoneme @@ -165,69 +208,81 @@ endphoneme phoneme aI vwl starttype #a endtype #i - length 140 //250 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/&i_2) endphoneme phoneme a:I vwl starttype #a endtype #i - length 200 //250 + length 240 //250 FMT(vdiph/ai) endphoneme phoneme @I vwl starttype #@ endtype #i - length 200 //250 + length 240 //250 FMT(vdiph/@i) endphoneme phoneme @:I vwl starttype #@ endtype #i - length 200 //250 + length 240 //250 FMT(vdiph/y#i) endphoneme phoneme eI vwl starttype #e endtype #i - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/ei) endphoneme phoneme EI vwl starttype #e endtype #i - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/eei) endphoneme phoneme OI vwl starttype #o endtype #i - length 200 + length 240 FMT(vdiph/ooi_4) endphoneme phoneme oI vwl starttype #o endtype #i - length 200 + length 240 FMT(vdiph/oi) endphoneme phoneme uI vwl starttype #u endtype #i - length 200 + length 240 FMT(vdiph/ui) endphoneme phoneme yI vwl starttype #u endtype #i - length 200 + length 240 FMT(vdiph/u-i) endphoneme @@ -236,46 +291,74 @@ endphoneme phoneme aU vwl starttype #a endtype #u - length 150 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/aau_4) endphoneme phoneme a:U vwl starttype #a endtype #u - length 150 //270 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/au) endphoneme phoneme eU vwl starttype #e endtype #u - length 150 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/eu) endphoneme phoneme EU vwl starttype #e endtype #u - length 150 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/eeu) endphoneme phoneme iU vwl starttype #i endtype #u - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph2/iu) endphoneme phoneme @U vwl starttype #@ endtype #u - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/@u_3) endphoneme phoneme @:U vwl starttype #@ endtype #u - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/@u) endphoneme @@ -283,19 +366,31 @@ endphoneme phoneme i@ vwl starttype #i endtype #@ - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph2/ii@_3) endphoneme phoneme y@ vwl starttype #i endtype #@ - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph2/y-y#) endphoneme phoneme u@ vwl starttype #u endtype #@ - length 100 //200 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph2/uu@) endphoneme @@ -303,38 +398,62 @@ endphoneme phoneme o# // ông vwl starttype #o endtype #o - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vnasal/a#u_n) endphoneme phoneme O# // ong vwl starttype #o endtype #o - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vnasal/&u_n) endphoneme phoneme o@ vwl starttype #o endtype #a - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph2/oa) endphoneme phoneme o& vwl starttype #o endtype #o - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vietnam/oe) endphoneme phoneme iE // iê : viết, giệc vwl starttype #i endtype #e - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vietnam/ie_2) endphoneme phoneme Oi // oai sound vwl starttype #o endtype #i - length 140 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/ooi_3) endphoneme @@ -342,30 +461,40 @@ endphoneme phoneme O- // ôi southern sound vwl starttype #o endtype #i - length 150 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vnasal/oi_n) endphoneme phoneme @- // ơi southern sound vwl starttype #o endtype #i - length 150 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vdiph/@i_3) endphoneme phoneme u- // u southern sound vwl starttype #u endtype #u - length 150 + IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 240 + ELSE + length 140 + ENDIF FMT(vowel/u_3,70) endphoneme - - phoneme kh vls vel frc lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30 Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 - WAV(vietnam/_c,5) //ufric/x, 50) + WAV(ustop/k_unasp) //ufric/x, 50) endphoneme @@ -433,15 +562,6 @@ phoneme p endphoneme -phoneme n - vcd alv nas - Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 brk len=15 - Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk len=15 - lengthmod 4 - length 75 -FMT(n/nr_) -endphoneme - phoneme t[ // dental variant of /t/ vls dnt stp voicingswitch d[