2015-12-02 51 views
5

voice_kal_diphone and voice_ral_diphone在唱歌模式下正常工作(聲音輸出和音高對於指定的音符是正確的)。節日2.4:爲什麼有些聲音不適合唱歌模式?

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 script。您也可以download voice_cmu_us_ahw_cg separately

+0

你有沒有建立自己的聲音? 「voice_cmu_us_ahw_cg」在當前的語音列表中不可用。如果它是社區的聲音,那麼它可能還處於測試階段。 –

+0

@kiran:我使用了festvox.org的「fest_build」腳本:http://festvox.org/fest_build,具體的聲音可以在這裏找到:http://festvox.org/packed/festival/2.4/voices/festvox_cmu_us_ahw_cg .tar.gz – Beau

+0

「這個軟件沒有做我想做的事」並不是一個真正的編程問題,但我不能因爲獎勵而將其作爲題外話題。除非你試圖編寫代碼來修復它,否則這似乎是一個通用的軟件問題。 – TessellatingHeckler

回答

1

看來問題出在手機世代。

voice_kal_diphone使用UniSyn合成模型,而voice_cmu_us_ahw_cg使用ClusterGen模型。最後一個有自己的語調和持續時間模型(基於狀態),而不是電話語調/持續時間:可能你注意到生成的「歌曲」中的持續時間沒有改變。

singing-mode.scm試圖提取每個音節並修改其頻率。在ClusterGen的情況下,由於不同的建模,模型波發生器會簡單地忽略在Target中設置的音節頻率和持續時間。

因此,我們有更好的語音質量(基於統計模型),但不能直接改變頻率。

生成管道的很好的描述可以找到here