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_spanish 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //====================================================
  2. // Spanish - based on Base2
  3. //====================================================
  4. phoneme a
  5. vowel starttype #a endtype #a
  6. length 200
  7. FMT(vowel/a_4)
  8. endphoneme
  9. phoneme e
  10. vowel starttype #e endtype #e
  11. length 200
  12. FMT(vowel/e_mid2)
  13. endphoneme
  14. phoneme E
  15. vowel starttype #e endtype #e
  16. length 200
  17. FMT(vowel/e_mid2)
  18. endphoneme
  19. phoneme i
  20. vowel starttype #i endtype #i
  21. length 190
  22. IfNextVowelAppend(;)
  23. FMT(vowel/i)
  24. endphoneme
  25. phoneme o
  26. vowel starttype #o endtype #o
  27. length 200
  28. FMT(vowel/oo)
  29. endphoneme
  30. phoneme O
  31. vowel starttype #o endtype #o
  32. length 200
  33. FMT(vowel/oo)
  34. endphoneme
  35. phoneme u
  36. vowel starttype #u endtype #u
  37. length 200
  38. FMT(vowel/u_bck2)
  39. endphoneme
  40. phoneme g
  41. vcd vel stop
  42. lengthmod 5
  43. voicingswitch k
  44. Vowelin f1=2 f2=2300 200 300 f3=-300 80
  45. Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
  46. IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(isLiquid) THEN
  47. IF prevPh(isPause) OR prevPh(isNasal) THEN
  48. ELSE
  49. ChangePhoneme(Q)
  50. ENDIF
  51. ENDIF
  52. IF PreVoicing THEN
  53. FMT(g/xg)
  54. ENDIF
  55. IF nextPh(isPause2) THEN
  56. FMT(g/g_) addWav(x/g_)
  57. ENDIF
  58. FMT(g/g) addWav(x/g2) // weaker [g]
  59. endphoneme
  60. phoneme d
  61. vcd dnt stop
  62. IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(j) THEN
  63. IF prevPh(isPause) OR prevPh(isNasal) OR prevPh(l) THEN
  64. ELSE
  65. ChangePhoneme(D)
  66. ENDIF
  67. ENDIF
  68. CALL base2/d
  69. endphoneme
  70. phoneme b
  71. vcd blb stop
  72. IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(isLiquid) THEN
  73. IF prevPh(isPause) OR prevPh(isNasal) THEN
  74. ELSE
  75. ChangePhoneme(B)
  76. ENDIF
  77. ENDIF
  78. CALL base/b
  79. endphoneme
  80. phoneme D
  81. vcd dnt frc
  82. lengthmod 6
  83. voicingswitch T
  84. CALL base/D
  85. IF nextPh(isPause2) THEN
  86. FMT(voc/dh_) addWav(vocw/dh, 35) // weaker
  87. ENDIF
  88. endphoneme
  89. phoneme s
  90. vls alv frc sibilant
  91. lengthmod 3
  92. voicingswitch z
  93. Vowelin f1=0 f2=1700 -300 300 f3=-100 80
  94. Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
  95. IF nextPh(isPause) THEN
  96. WAV(ufric/s_, 60) // quieter 's' at end of word
  97. ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
  98. WAV(ufric/s!)
  99. ENDIF
  100. WAV(ufric/s, 80)
  101. endphoneme
  102. phoneme v# // a shorter [v], a little towards [b]
  103. vcd lbd frc
  104. ipa ʋ
  105. lengthmod 6
  106. voicingswitch f
  107. Vowelin f1=1 f2=1000 -300 -200 f3=-300 100
  108. Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=10
  109. IF nextPh(isPause2) THEN
  110. FMT(voc/v_) addWav(vocw/v, 80)
  111. ENDIF
  112. FMT(voc/v2) addWav(vocw/v, 80)
  113. endphoneme
  114. phoneme r
  115. vcd alv flp rhotic
  116. brkafter
  117. ipa ɾ
  118. lengthmod 3
  119. IF nextPhW(isVowel) THEN
  120. ChangePhoneme(**)
  121. ENDIF
  122. CALL base/*
  123. endphoneme