轉帖|實施案例|編輯:龔雪|2017-03-29 17:38:20.000|閱讀 1090 次
概述:如果你是語音合成的新手,那這篇文章教你快速理解百度的語音合成原理!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
現(xiàn)在我們繼續(xù)上文的操作
步驟1:將語素(文本)轉換為音素
“It was early spring” -> [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]
步驟2:預測每個音素的持續(xù)時間和基頻
[IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .] -> [IH1 (140hz, 0.5s), T (142hz, 0.1s), . (Not voiced, 0.2s), W (140hz, 0.3s),…]
步驟3:將音素,持續(xù)時間和基頻結合從而輸出文本對應的語音
[IH1 (140hz, 0.5s), T (142hz, 0.1s), . (Not voiced, 0.2s), W (140hz, 0.3s),…] -> 音頻
那么,我們實際通過什么樣的方式來訓練這些步驟的模型,從而得到可靠的預測結果呢?
下面,我們將逐個講解訓練流程中的每個環(huán)節(jié)。
步驟一:訓練語素—音素模型
語音合成的第一步就是使用語素—音素轉換模型將文本轉換成音素。
上一篇文章中我們就介紹了這個例子:
Input?—?“It was early spring” Output?—?[IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]
在大多數(shù)情況下,我們可以使用音素字典直接將文本輸入,并得到如上對應的音素結果。
但如果出現(xiàn)音素字典沒有覆蓋的詞呢?這其實時常發(fā)生,就跟我們?nèi)祟惤?jīng)常會增加新的詞匯一樣(比如,“谷歌”,“截屏”等等的)。那么,在遇到新詞的時候,我們便需要一個回退機制來預測音素了。
Deep Voice使用神經(jīng)網(wǎng)絡來實現(xiàn)這個功能。準確來講,它沿用過了Yao和Zweig在微軟進行的Sequence to Sequence(Seq2Seq)的學習方法來進行文本對應的音素預測。
與其將這個原理用我自己的語言剖析深入,還是附上我覺得解釋得比較好的視頻和文章給大家來理解()。
那么,基于上述原理,訓練使用的數(shù)據(jù)和標簽是什么樣子的呢?
Input(X-逐字的)
[“It”, “was”, “early”, “spring”]
標簽(Y)
[[IH1, T, .], [W, AA1, Z, .], [ER1, L, IY0, .], [S, P, R, IH1, NG, .]]
通過查詢標準音素字典(比如CMU這個,鏈接),我們可以得到與輸入文本一一對應的標簽。
步驟二:運行分割模型
在上一篇中,我們講過,在語音合成的時候我們需要預測音素的持續(xù)時間和基頻。而通過音素的音頻剪輯,我們可以輕易地獲取這兩個數(shù)據(jù)。
Deep Voice運用了分割模型來獲取每個音素的音頻剪輯。
分割模型將每個音素發(fā)聲的場景進行匹配,從而獲取其對應的音頻分割片段和其在音頻中的發(fā)聲位置。
如下圖所示:
分割模型預測了音素在一組音頻剪輯中的發(fā)聲位置和時長
分割模型真正有趣的部分在于其預測的不是每個獨立音素的位置,而實際是預測了每組音素對的位置。此外,這種模式是無監(jiān)督的,因為我們事實上無法知道語音片段中語素對應的真正位置的標簽信息。分割模型通過CTC loss模型來訓練,你可以通過鏈接,深入了解它的原理。
Input(X)
Outputs(Y)
為什么要去預測音素對而不是獨立的每個音素呢?因為當我們對給定時間戳對應的某個音素進行預測時,在該音素發(fā)聲的中間位置預測的概率是最大的。
對獨立單個的音素而言,給定語音對應某個音素的概率在語音的發(fā)聲正中最大;而對成對的音素而言,概率最大值出現(xiàn)在兩個音素交界點上
對成對的音素來說,概率最大值出現(xiàn)在兩個音素交界點上(見上圖)。我們可以輕易的檢測出兩個音素發(fā)聲的交界點,因此,使用音素對可以讓我們更簡單地進行定位。
步驟三:訓練音素的持續(xù)時間和基頻的預測模型
在語音合成步驟中,我們需要對音素的持續(xù)時間和基頻進行預測。
根據(jù)步驟二,我們已經(jīng)從分割模型中拿到了音素的持續(xù)時間和基頻,現(xiàn)在我們可以通過模型訓練來預測新音素的數(shù)據(jù)了。
分割模型輸出是持續(xù)時間模型和基頻率模型的標簽
Deep Voice通過一組單一共同訓練的模型輸出這些數(shù)據(jù)。
Input(X)
標簽(Y)
有了這些數(shù)據(jù),我們就可以進行時間和Fo函數(shù)預測了。
步驟四:訓練語音合成
最后,我們需要對語音合成流程中的實際生成語音的步驟進行訓練。與Deep Mind中的WaveNet非常相似,這個模型具有如下的架構:
我們將會把真實的語音剪輯作為標簽來進行訓練
Input(X)
標簽(Y)
這樣,我們就將語音合成的各個步驟過了一遍,由此便可以進行語音合成了
恭喜你!讀到這里,你已經(jīng)知曉了Deep Voice生成語音的過程了,多加練習,你也能成為生成語音的大咖!
更多行業(yè)資訊,更新鮮的技術動態(tài),盡在。
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn