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