ph_pt_brazil 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. //====================================================
  2. // Portuguese - based on Base2
  3. //====================================================
  4. phoneme I // epenthetic i
  5. vwl starttype #i endtype #i
  6. unstressed
  7. length 90
  8. FMT(vowel/ii_6)
  9. endphoneme
  10. phoneme e~
  11. vwl starttype #e endtype #e
  12. length 240
  13. FMT(vnasal/e_n)
  14. endphoneme
  15. phoneme i~
  16. vwl starttype #i endtype #i
  17. length 240
  18. IfNextVowelAppend(;)
  19. FMT(vnasal/i_n)
  20. endphoneme
  21. phoneme o~
  22. vwl starttype #o endtype #o
  23. length 240
  24. FMT(vnasal/o_n)
  25. endphoneme
  26. phoneme u~
  27. vwl starttype #u endtype #u
  28. length 180
  29. FMT(vnasal/u_n)
  30. endphoneme
  31. phoneme &~
  32. vwl starttype #@ endtype #@
  33. ipa ɐU+0303
  34. length 180
  35. IF thisPh(isFinalVowel) THEN
  36. FMT(vnasal/a#_n2)
  37. ELSE
  38. FMT(vnasal/a#_n)
  39. ENDIF
  40. endphoneme
  41. phoneme &U~
  42. vwl starttype #@ endtype #u
  43. ipa ɐU+0303ʊU+0303
  44. length 240
  45. FMT(vnasal/a#u_n)
  46. endphoneme
  47. phoneme oI~
  48. vwl starttype #o endtype #i
  49. ipa oU+0303ɪU+0303
  50. length 260
  51. FMT(vnasal/oi_n)
  52. endphoneme
  53. phoneme &
  54. vwl starttype #@ endtype #@
  55. length 180
  56. FMT(vowel/a#_3)
  57. endphoneme
  58. phoneme &/ // Used for final "a" when next word starts with "a"
  59. vwl starttype #@ endtype #@
  60. length 180
  61. IF nextPh(isVowel) THEN
  62. ChangePhoneme(NULL)
  63. ENDIF
  64. FMT(vowel/a#_3)
  65. endphoneme
  66. phoneme A // for "al" in European Portuguese, don't reduce to [&]
  67. vwl starttype #a endtype #a
  68. length 200
  69. FMT(vowel/a_2)
  70. endphoneme
  71. phoneme E
  72. vwl starttype #e endtype #e
  73. length 170
  74. FMT(vowel/ee_3)
  75. endphoneme
  76. phoneme e
  77. vwl starttype #e endtype #e
  78. length 160
  79. FMT(vowel/e)
  80. endphoneme
  81. phoneme y // this is the same as [i] for Brazil
  82. vwl starttype #i endtype #i
  83. length 110
  84. IfNextVowelAppend(;)
  85. FMT(vowel/ii_6)
  86. endphoneme
  87. phoneme i/ // changes to [j] before a vowel
  88. vwl starttype #i endtype #i
  89. length 150
  90. IF nextPh(isVowel) THEN
  91. ChangePhoneme(j)
  92. ENDIF
  93. IfNextVowelAppend(;)
  94. FMT(vowel/ii_6)
  95. endphoneme
  96. phoneme O
  97. vwl starttype #o endtype #o
  98. length 170
  99. FMT(vowel/0)
  100. endphoneme
  101. phoneme u
  102. vwl starttype #u endtype #u
  103. length 160
  104. FMT(vowel/u_bck)
  105. endphoneme
  106. phoneme U
  107. vwl starttype #u endtype #u
  108. length 140
  109. IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN
  110. ChangePhoneme(w)
  111. ENDIF
  112. FMT(vowel/uu_bck)
  113. endphoneme
  114. phoneme aI
  115. vwl starttype #a endtype #i
  116. length 230
  117. IfNextVowelAppend(;)
  118. FMT(vdiph/ai)
  119. endphoneme
  120. phoneme eI
  121. vwl starttype #e endtype #i
  122. length 210
  123. IfNextVowelAppend(;)
  124. FMT(vdiph/ei)
  125. endphoneme
  126. phoneme OI
  127. vwl starttype #o endtype #i
  128. length 230
  129. IfNextVowelAppend(;)
  130. FMT(vdiph/0i)
  131. endphoneme
  132. phoneme eU
  133. vwl starttype #e endtype #u
  134. length 230
  135. FMT(vdiph/eu)
  136. endphoneme
  137. phoneme EU
  138. vwl starttype #e endtype #u
  139. length 230
  140. FMT(vdiph/eeu)
  141. endphoneme
  142. phoneme l
  143. import_phoneme en/l // use 'dark' [l] after a vowel, should be [w]
  144. endphoneme
  145. phoneme x
  146. CALL base1/h
  147. ipa x
  148. endphoneme
  149. phoneme r-
  150. import_phoneme en/r-
  151. endphoneme
  152. phoneme s# // This is [s] for Brazil, [S] for Portugal
  153. IF nextPh(isVoiced) THEN
  154. ChangePhoneme(z)
  155. ENDIF
  156. CALL base1/s
  157. ipa s
  158. endphoneme
  159. phoneme *
  160. vcd alv stp
  161. lengthmod 6
  162. ipa ɾ
  163. Vowelin f1=1 f2=1700 -300 300 f3=0 80
  164. Vowelout f1=2 f2=1700 -300 300 f3=0 80
  165. IF PreVoicing THEN
  166. FMT(d/x_tap)
  167. ENDIF
  168. FMT(d/tap2) addWav(x/d, 40)
  169. endphoneme