语音调度程序与节日的语音配置问题

语音调度程序与节日的语音配置问题

我终于开始Festival使用美国 HTS声音了:cmu_us_awb_cg、、、、、、、。cmu_us_jmk_cgcmu_us_slt_cgcmu_us_bdl_cgcmu_us_clb_cgcmu_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_voicescm文件中定义。请参考以下步骤:

  1. 转到节日/声音文件夹
  2. 编辑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.")))
      
  3. /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),看看是否可以使用列出的任何声音。

相关内容