我终于开始Festival
使用美国 HTS声音了:cmu_us_awb_cg
、、、、、、、。cmu_us_jmk_cg
cmu_us_slt_cg
cmu_us_bdl_cg
cmu_us_clb_cg
cmu_us_rms_cg
我手动配置festival.scm
为使用bdl
语音:
(set! voice_default 'voice_cmu_us_bdl_cg)
现在,无论是在交互式环境中festival
还是在服务器运行时(festival --server
),它都可以正常工作:
nc localhost 1314 <<< "(tts_text \"Hello big world, this is a test.\" nil)(quit)"
然后我配置了语音调度程序,它无法通过 正确配置自身spd-conf
,但我手动修复了配置文件speechd
。把它们加起来:
LogLevel 3
LogDir "default"
DefaultRate 5
DefaultVolume 100
DefaultLanguage "en"
DefaultPunctuationMode "all"
AudioOutputMethod "alsa"
AudioALSADevice "default"
AddModule "festival" "sd_festival" "festival.conf"
AddModule "dummy" "sd_dummy" ""
DefaultModule festival
LanguageDefaultModule "en" "festival"
Include "clients/*.conf"
现在 ALSA 测试工作正常(产生声音)。但是,当我发送短信至speech-dispatcher
:
spd-say "Hello big world, this is a test."
...festival
服务器变得疯狂,就像它没有成功地尝试它能想到的每一个声音:
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_axb_cg
SIOD: unknown voice cmu_us_axb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: could not open file /usr/share/festival/dicts/oald/oaldlex.scm
closing a file left open: /usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm
SIOD: unknown voice rab_diphone
SIOD ERROR: could not open file /usr/share/festival/dicts/oald/oaldlex.scm
closing a file left open: /usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm
SIOD: unknown voice rab_diphone
SIOD: unknown voice cmu_us_kal_com_hts
SIOD: unknown voice cmu_us_kal_com_hts
SIOD: unknown voice cstr_us_ked_timit_hts
SIOD: unknown voice cstr_us_ked_timit_hts
SIOD: unknown voice cmu_us_slt_cg
SIOD: unknown voice cmu_us_slt_cg
SIOD: unknown voice cmu_us_rms_cg
SIOD: unknown voice cmu_us_rms_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_clb_cg//rf_models/trees_08/cmu_us_clb_mcep.tree
SIOD: unknown voice cmu_us_clb_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_clb_cg//festival/trees/cmu_us_clb_mcep.tree
SIOD: unknown voice cmu_us_clb_cg
client(10) Mon Mar 16 22:10:26 2020 : accepted from localhost
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_axb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: could not open file /usr/share/festival/dicts/oald/oaldlex.scm
closing a file left open: /usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm
SIOD: unknown voice rab_diphone
SIOD: unknown voice cmu_us_kal_com_hts
SIOD: unknown voice cstr_us_ked_timit_hts
SIOD: unknown voice cmu_us_slt_cg
SIOD: unknown voice cmu_us_rms_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_clb_cg//rf_models/trees_08/cmu_us_clb_mcep.tree
SIOD: unknown voice cmu_us_clb_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_jmk_cg//festival/trees/cmu_us_jmk_mcep.tree
SIOD: unknown voice cmu_us_jmk_cg
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_awb_cg
因此,节日正在运行,与 ALSA 的连接正在运行,语音调度程序正在向节日发送一些内容,但不知何故损坏了,可能是语音设置错误。
/etc/speech-dispatcher/modules/
文件夹中还有一个节日模块的配置文件festival.conf
,但它实际上是空的(有很多注释文本),并且没有提到在speech-dispatcher
调用时设置的声音Festival
。我认为这是一个可以设置的地方,特别是因为中的注释speechd.conf
:
DefaultVoiceType 控制默认情况下应使用哪种语音类型。语音类型是符号名称,根据输出模块配置映射到合成器提供的特定语音。请参阅 etc/speech-dispatcher/modules/ 中的合成器特定配置,以查看哪些声音被分配给不同的符号名称。目前支持以下符号名称:MALE1、MALE2、MALE3、FEMALE1、FEMALE2、FEMALE3、CHILD_MALE、CHILD_FEMALE
# 默认语音类型“MALE1”
我还尝试将堆大小增加到 50M(根据其他讨论中的一些帖子),但这没有帮助:
festival --server --heap 50000000
我也遇到同样奇怪的错误。任何建议表示赞赏。
答案1
要解决这个问题需要(proclaim_voice
在scm
文件中定义。请参考以下步骤:
- 转到节日/声音文件夹
- 编辑scm文件
- 打开:
vim us/cmu_us_clb_arctic_clunits/festvox/cmu_us_clb_arctic_clunits.scm #<--voice clunits.scm
- 转到文件底部之前添加行
(provide 'cmu_us_clb_arctic_clunits)
- 添加以下内容(根据需要更新语言、性别、方言)。更新、保存并退出。
(proclaim_voice 'cmu_us_clb_arctic_clunits '((language english) (gender female) (dialect american) (description "This voice provides an American English male voice using a residual excited LPC diphone synthesis method. It uses the CMU Lexicon pronunciations. Prosodic phrasing is provided by a statistically trained model using part of speech and local distribution of breaks. Intonation is provided by a CART tree predicting ToBI accents and an F0 contour generated from a model trained from natural speech. The duration model is also trained from data using a CART tree.")))
- 打开:
/usr/bin/festival --server
错误应该消失后
您也可以运行spd-say -L
以显示详细信息。
如果需要更新默认节日语音:
- 编辑
/etc/festival.scm
添加(set! voice_default 'voice_<You prefered Voice name>)
- 重新启动 Festival 服务器或重新启动 ubuntu。默认语音将通过
spd-say
命令或从 Firefox更改为新语音。
答案2
问题可能是因为speech-dispatcher
不接受节日的默认声音,而是尝试使用自己的设置。
尝试取消注释并将其更改DefaultVoiceType
为以下内容:
DefaultVoiceType "FEMALE1"
我还会使用不同的程序进行一些测试,例如 Firefox 的阅读器模式 (ALT+CTRL+R),看看是否可以使用列出的任何声音。