Festival 文本转语音功能在 20.04 版中忽略了 `.festivalrc` 中定义的 `current-voice`

Festival 文本转语音功能在 20.04 版中忽略了 `.festivalrc` 中定义的 `current-voice`

在 Ubuntu 18.04 上,我~/.festivalrc

(voice.select 'en1_embrola)

其工作符合预期。

然而升级到 20.04 后我的默认声音是kal_diphone

在节日的交互式 shell 上(voice.select 'en1_embrola)做了正确的事情所以我知道 embrola 声音已正确安装。

我还可以(!set variable-name 'to-value)在我的~/.festivalrc全新交互式 shell 中看到该值,因此我知道我的配置文件已被评估。

然而current-voice在一个新的交互式 shell 中总是kal_diphone

voice-locations顺便说一句,我注意到我的 Ubuntu 18.04 和 20.04 安装的值之间存在差异:

在 18.04 上它是:

((kal_diphone . "/usr/share/festival/voices/english/kal_diphone/")
 (en1_mbrola . "/usr/share/festival/voices/english/en1_mbrola/"))

而在 20.04 上则顺序相反:

((en1_mbrola . "/usr/share/festival/voices/english/en1_mbrola/")
 (kal_diphone . "/usr/share/festival/voices/english/kal_diphone/"))

有任何想法吗?

答案1

这非常是一种黑客行为,虽然它解决了我眼前的问题,但我不认为这是一个解决方案。

可以set_voice_default通过(sudo)编辑/usr/share/festival/voices.scm文件并在(set! voice_default 'voice_en1_embrola)该文件的底部附近添加来覆盖对的调用,如下所示:

--- a/usr/share/festival/voices.scm
+++ b/usr/share/festival/voices.scm
@@ -437,4 +437,5 @@


 (set_voice_default default-voice-priority-list)
+(set! voice_default 'voice_en1_embrola)
 (provide 'voices)

答案2

根据我的黑客正确的解决方案很简单:

应该~/.festivalrc是:

(set! voice_default 'voice_en1_embrola)

相关内容