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.2KB

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