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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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 nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(isLiquid) 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 nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(j) 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 nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(isLiquid) 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
  101. phoneme r
  102. vcd alv flp rhotic
  103. brkafter
  104. ipa ɾ
  105. lengthmod 3
  106. IF nextPhW(isVowel) OR nextPhW(t) THEN
  107. ChangePhoneme(**)
  108. ENDIF
  109. CALL base/*
  110. endphoneme