eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ph_malayalam 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. // Phonemes for Malayalam
  2. // This inherits from ph_hindi
  3. phoneme @
  4. vowel starttype #@ endtype #@
  5. length 130
  6. FMT(vowel/@_low)
  7. endphoneme
  8. phoneme y // epenthetic vowel
  9. vowel starttype #@ endtype #@
  10. unstressed
  11. ipa ɨ
  12. length 80
  13. FMT(vowel/u#_4, 80)
  14. endphoneme
  15. phoneme a
  16. vowel starttype #a endtype #a
  17. ipa ɐ
  18. length 130
  19. IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN
  20. FMT(vowel/a#_4)
  21. ELSE
  22. ChangeIfUnstressed(@)
  23. IF nextPh(m) AND nextPh(isWordEnd) THEN
  24. ChangePhoneme(@)
  25. ENDIF
  26. FMT(vowel/a#_3)
  27. ENDIF
  28. endphoneme
  29. phoneme a# // don't reduce to [@]
  30. vowel starttype #a endtype #a
  31. ChangePhoneme(a)
  32. endphoneme
  33. phoneme a:
  34. vowel long starttype #a endtype #a
  35. length 300
  36. FMT(vowel/a_5)
  37. endphoneme
  38. phoneme e
  39. vowel starttype #e endtype #e
  40. length 130
  41. FMT(vowel/e)
  42. endphoneme
  43. phoneme e:
  44. vowel long starttype #e endtype #e
  45. length 270
  46. FMT(vowel/e)
  47. endphoneme
  48. phoneme i
  49. vowel starttype #i endtype #i
  50. length 130
  51. FMT(vowel/i_6)
  52. endphoneme
  53. phoneme I
  54. vowel starttype #i endtype #i
  55. length 130
  56. FMT(vowel/ii)
  57. endphoneme
  58. phoneme i:
  59. vowel long starttype #i endtype #i
  60. length 270
  61. FMT(vowel/i)
  62. endphoneme
  63. phoneme o
  64. vowel starttype #o endtype #o
  65. length 130
  66. FMT(vowel/o)
  67. endphoneme
  68. phoneme o:
  69. vowel long starttype #o endtype #o
  70. length 300
  71. FMT(vowel/o)
  72. endphoneme
  73. phoneme u
  74. vowel starttype #u endtype #u
  75. length 110
  76. FMT(vowel/u)
  77. endphoneme
  78. phoneme u:
  79. vowel long starttype #u endtype #u
  80. length 280
  81. FMT(vowel/u)
  82. endphoneme
  83. phoneme aI
  84. vowel long starttype #a endtype #i
  85. length 280
  86. FMT(vdiph/ai)
  87. endphoneme
  88. phoneme aU
  89. vowel long starttype #a endtype #u
  90. length 270
  91. FMT(vdiph/aau_3)
  92. endphoneme
  93. // ?? This is standard [v]. Should be it [v] without the fricative noise?
  94. phoneme v
  95. import_phoneme base/v
  96. endphoneme
  97. phoneme r
  98. import_phoneme base/**
  99. endphoneme
  100. phoneme R
  101. import_phoneme base/R2
  102. endphoneme
  103. phoneme d2 // 'rr' sounds like English 'd'
  104. import_phoneme base/d
  105. endphoneme
  106. // Aspirated voice stops, sound like aspirated unvoiced stops ?
  107. phoneme b#
  108. vls blb stop prevoice
  109. lengthmod 2
  110. voicingswitch b
  111. Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
  112. Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
  113. IF PreVoicing THEN
  114. IF prevPhW(isVowel) THEN
  115. FMT(b/xb)
  116. ELSE
  117. FMT(voc/murmur1)
  118. ENDIF
  119. ENDIF
  120. IF nextPh(isPause2) THEN
  121. WAV(ustop/p_)
  122. ENDIF
  123. IF nextPh(l) THEN
  124. WAV(ustop/pl)
  125. ENDIF
  126. WAV(ustop/p_asp)
  127. endphoneme
  128. phoneme d#
  129. vls dnt stop prevoice
  130. lengthmod 2
  131. voicingswitch d
  132. Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16
  133. Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
  134. IF PreVoicing THEN
  135. IF prevPhW(isVowel) THEN
  136. FMT(d/xd)
  137. ELSE
  138. FMT(voc/murmur1)
  139. ENDIF
  140. ENDIF
  141. IF nextPh(isPause2) THEN
  142. WAV(ustop/t_dnt, 35)
  143. ENDIF
  144. WAV(ustop/t_dnt, 50)
  145. endphoneme
  146. phoneme d.#
  147. vls rfx stop prevoice
  148. lengthmod 2
  149. ipa ʈU+02B0
  150. Vowelin f1=0 f2=1800 -300 300 f3=-400 80
  151. Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
  152. IF PreVoicing THEN
  153. IF prevPhW(isVowel) THEN
  154. FMT(d/xdr)
  155. ELSE
  156. FMT(voc/murmur1)
  157. ENDIF
  158. ENDIF
  159. voicingswitch d.#
  160. WAV(ustop/t)
  161. endphoneme
  162. phoneme J#
  163. vls pal afr sibilant palatal prevoice
  164. voicingswitch c#
  165. lengthmod 2
  166. Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
  167. IF PreVoicing THEN
  168. IF prevPhW(isVowel) THEN
  169. FMT(dzh/xdz_pzd)
  170. ELSE
  171. FMT(voc/murmur1)
  172. ENDIF
  173. ENDIF
  174. IF nextPh(isPause2) THEN
  175. WAV(ustop/ts_pzd)
  176. ENDIF
  177. WAV(ustop/ts_pzd)
  178. endphoneme
  179. phoneme g#
  180. vls vel stop prevoice
  181. lengthmod 2
  182. Vowelin f1=1 f2=1400 -100 100 f3=-150 80
  183. Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
  184. IF PreVoicing THEN
  185. IF prevPhW(isVowel) THEN
  186. FMT(g/xg)
  187. ELSE
  188. FMT(voc/murmur1)
  189. ENDIF
  190. ENDIF
  191. IF nextPh(isPause2) THEN
  192. WAV(ustop/k_asp, 40)
  193. ENDIF
  194. IF nextPhW(#e) OR nextPhW(#i) THEN
  195. WAV(ustop/k_asp_e, 40)
  196. ELIF nextPhW(#o) OR nextPhW(#u) THEN
  197. WAV(ustop/k_asp_a, 25)
  198. ELSE
  199. WAV(ustop/k_asp_a, 30)
  200. ENDIF
  201. endphoneme