我終於開始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),看看是否可以使用列出的任何聲音。