5

voice_kal_diphonevoice_ral_diphone在歌唱模式下正常工作(有声音输出,音高对于指定的音符是正确的)。

voice_cmu_us_ahw_cg其他 CMU 声音不能正常工作——有声音输出但音高没有根据指定的音符改变。

是否可以使用更高质量的 CMU 声音获得正确的输出?

工作(音高影响)输出的命令行是:

text2wave -mode singing -eval "(voice_kal_diphone)" -o song.wav song.xml

非工作(音高不受影响)输出的命令行是:

text2wave -mode singing -eval "(voice_cmu_us_ahw_cg)" -o song.wav song.xml

这是song.xml

<?xml version="1.0"?>
<!DOCTYPE SINGING PUBLIC "-//SINGING//DTD SINGING mark up//EN" "Singing.v0_1.dtd" []>
<SINGING BPM="60">
 <PITCH NOTE="A4,C4,C4"><DURATION BEATS="0.3,0.3,0.3">nationwide</DURATION></PITCH>
 <PITCH NOTE="C4"><DURATION BEATS="0.3">is</DURATION></PITCH>
 <PITCH NOTE="D4"><DURATION BEATS="0.3">on</DURATION></PITCH>
 <PITCH NOTE="F4"><DURATION BEATS="0.3">your</DURATION></PITCH>
 <PITCH NOTE="F4"><DURATION BEATS="0.3">side</DURATION></PITCH>
</SINGING>

您可能还需要此补丁singing-mode.scm

@@ -339,7 +339,9 @@
 (defvar singing-max-short-vowel-length 0.11)

 (define (singing_do_initial utt token)
-  (if (equal? (item.name token) "")
+  (if (and
+        (not (equal? nil token))
+        (equal? (item.name token) ""))
       (let ((restlen (car (item.feat token 'rest))))
         (if singing-debug
             (format t "restlen %l\n" restlen))

为了设置我的环境,我使用了 festvox fest_build 脚本。您也可以单独下载voice_cmu_us_ahw_cg

4

1 回答 1

1

似乎问题出在手机一代上。

voice_kal_diphone使用UniSyn综合模型,而voice_cmu_us_ahw_cg使用ClusterGen模型。最后一个有自己的语调和持续时间模型(基于状态)而不是音素语调/持续时间:可能你注意到在生成的“歌曲”中持续时间没有太大变化。

singing-mode.scm尝试提取每个音节并修改其频率。在模型波发生器的情况下,由于建模不同ClusterGen,只需忽略设置的音节频率和持续时间。Target

结果我们有更好的语音质量(基于统计模型),但不能直接改变频率。

可以在这里找到对生成管道的非常好的描述。

于 2015-12-11T21:18:00.640 回答