轉(zhuǎn)帖|使用教程|編輯:龔雪|2017-03-17 16:50:23.000|閱讀 691 次
概述:如果你是語音合成的新手,那這篇文章教你快速理解百度的語音合成原理!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
最近,前百度首席科學(xué)家吳恩在的百度人工智能團(tuán)隊(duì)發(fā)布了一篇文章,文章介紹了一種基于深度學(xué)習(xí)把文本轉(zhuǎn)換成語音的新系統(tǒng)。文章中百度 Deep Voice 生成的錄音例子如下所示,讓結(jié)果來說話()
顯而易見,與 MacOS 的 TTS (文本轉(zhuǎn)換成語音)系統(tǒng)相比,百度 Deep Voice 生成的錄音聽起來更自然,更像人類朗讀的聲音。但以上結(jié)果應(yīng)當(dāng)注意到一個(gè)大前提——百度 Deep Voice 原型有一個(gè)先天優(yōu)勢,那就是它利用人類朗讀的一個(gè)錄音源件來進(jìn)行訓(xùn)練,這給它添加了一點(diǎn)人類說話的韻味。除此之外,Deep Voice還可以訪問頻率和持續(xù)時(shí)間數(shù)據(jù)。
除了能輸出高質(zhì)量的語音,論文創(chuàng)新的幾個(gè)關(guān)鍵點(diǎn)是:
以前的 TTS 系統(tǒng)會在某些環(huán)節(jié)上采用深度學(xué)習(xí),但在Deep Voice之前,沒有團(tuán)隊(duì)采用全深度學(xué)習(xí)的框架。
傳統(tǒng)語音合成需要進(jìn)行大量的特征處理和特征構(gòu)建,但百度通過使用深度學(xué)習(xí)避免了這些問題。這使得 Deep Voice 的應(yīng)用范圍更加廣泛,使用起來也更加方便。論文中也提到,如果需要應(yīng)用于新的數(shù)據(jù)集,與傳統(tǒng)系統(tǒng)動(dòng)輒幾個(gè)星期的時(shí)間相比,Deep Voice 可以在幾個(gè)小時(shí)內(nèi)完成重新調(diào)試:
傳統(tǒng)的 TTS 系統(tǒng)完成(重新訓(xùn)練)需數(shù)天到數(shù)周的時(shí)間進(jìn)行調(diào)節(jié),而對Deep Voice進(jìn)行手動(dòng)操作和訓(xùn)練模型所需的時(shí)間只要幾個(gè)小時(shí)就足夠。
相比于 DeepMind 關(guān)于人類音頻合成的中實(shí)現(xiàn)的 WaveNet ,現(xiàn)在這個(gè)系統(tǒng)的有效速度提升了400倍。
我們專注于創(chuàng)建一個(gè)能迅速實(shí)現(xiàn)產(chǎn)品化的系統(tǒng),這需要我們的模型能運(yùn)行實(shí)時(shí)推斷。Deep Voice 可以在幾分之一秒內(nèi)合成音頻,并在合成速度和音頻質(zhì)量之間提供可調(diào)和的權(quán)衡。相比之下, WaveNet 合成一秒鐘的音頻,系統(tǒng)需要跑好幾分鐘。
光說說這些創(chuàng)新點(diǎn)就足以令人感到興奮不已了!但是它是如何工作的呢?本文的剩余部分,將嘗試深入研究 Deep Voice 的不同部分,以及分析它們是如何融合在一起的。在此之前,可能你需要先看看這個(gè)視頻,了解一下基礎(chǔ)知識:
1.首先,看看 Deep Voice 如何理解一個(gè)例句并將其轉(zhuǎn)換為與人聲相似的語音(這一步就是大家熟知的合成流程)。
2.然后將推理流程進(jìn)一步拆解,了解每個(gè)部分的作用。
3.接下來,我們將介紹這些獨(dú)立部分實(shí)際上是如何訓(xùn)練的,以及實(shí)際的培訓(xùn)數(shù)據(jù)和標(biāo)簽。
4.最后,在下一篇博文中,我們將深究用于實(shí)現(xiàn)這些不同組件的深度學(xué)習(xí)架構(gòu)。
現(xiàn)在讓我們立足高點(diǎn),看看 Deep Voice 如何識別一個(gè)簡單的句子,并將其轉(zhuǎn)換為我們聽得見的音頻。
為了理解這些組件是什么,以及它們?nèi)绾谓M合在一起,我們一起逐步細(xì)究合成的具體過程。我們來看看 Deep Voice 是如何處理下面這個(gè)句子的:
It was early spring.
步驟1:將語素(文本)轉(zhuǎn)換為音素
以英語為代表的語言不是語音語言(phonetic)。
例如以下單詞(參考于linguisticslearner),都帶后綴“ough”:
注意,即使它們有相同的拼寫,但它們的發(fā)音卻完全不同。如果我們的 TTS 系統(tǒng)使用拼寫作為其主要輸入,即使有相同的后綴,在接受為什么"thoug"和"rough"發(fā)音如此不同上,會不可避免地會陷入困境。 因此,我們需要使用稍微不同的表達(dá)方式,展示出更多的發(fā)音信息。
音素正是這樣的一樣?xùn)|西。我們發(fā)出來的聲音由不同音素單位組成。將因素組合在一起,我們幾乎可以 重復(fù)發(fā)出任何單詞的發(fā)音。這里有幾個(gè)拆分成音素的詞語(改編自CMU的音素字典):
在音素旁邊的1,2等數(shù)字表示應(yīng)該發(fā)重音的位置。此外,句號表示音間停頓。
因此 Deep Voice 的第一步是,利用一個(gè)簡單的音素字典,把每個(gè)句子直接轉(zhuǎn)換為對應(yīng)的音素。
我們的句子
處理我們句子的第一步, Deep Voice 將具有以下輸入和輸出。
步驟2,第1部分:預(yù)測持續(xù)時(shí)間
現(xiàn)在有了音素后,我們需要估計(jì)在說話時(shí),這些音素的發(fā)音時(shí)間。這也是一個(gè)有趣的問題,因?yàn)橐羲貞?yīng)該基于上下文來決定它們或長或短的持續(xù)時(shí)間。拿下面圍繞音素“AH N”的單詞舉例:
相比第二個(gè)單詞,“AH N”顯然需要在第一個(gè)單詞里發(fā)更長的發(fā)音時(shí)間,我們可以訓(xùn)練系統(tǒng)做到這一點(diǎn)。能夠理解每個(gè)音素,并預(yù)測它們的發(fā)音時(shí)長(以秒為單位)是關(guān)鍵。 我們的句子 在這一步我們的例句會變成以下形式:
步驟2,第2部分:基頻預(yù)測
基本頻率(藍(lán)線)是聲帶發(fā)出濁音音素期間產(chǎn)生的最低頻率(將其視為波形的形狀)。我們的目標(biāo)是預(yù)測每個(gè)音素的基頻。
為了讓發(fā)音盡可能地接近人聲,我們還想要預(yù)測出每個(gè)音素的音調(diào)和語調(diào)。這一點(diǎn)從多方面考量,對以漢語為代表的語言尤為重要。因?yàn)檫@些語言中,相同的聲音,讀出不同的音調(diào)和重音具有完全不同的含義。預(yù)測每個(gè)音素的基頻有助于我們發(fā)好每一個(gè)音素,因?yàn)轭l率會告訴系統(tǒng),什么音素該發(fā)什么音高和什么音調(diào)。
此外,一些音素并不完全都發(fā)濁音,這意味著發(fā)這些音不需要每次都震動(dòng)聲帶。
例如,拿發(fā)音“ssss”和“zzzz”做例子,注意到前者是清音 (unvoiced),發(fā)音時(shí)聲帶沒有振動(dòng),而后者是濁音 (voiced) ,發(fā)音時(shí)聲帶振動(dòng)了。
我們的基本頻率預(yù)測也將考慮到這一點(diǎn),預(yù)測出何時(shí)應(yīng)當(dāng)發(fā)清音,何時(shí)應(yīng)該發(fā)濁音。
我們的句子 在這一步我們的例句會變成以下形式:
步驟3:音頻合成
在最后一步,我們將音素、持續(xù)時(shí)間和基頻 (F0 profile) 合并,生成一個(gè)真正的音頻。
生成語音的最后一步是,合并音素、持續(xù)時(shí)間和頻率,輸出聲音。Deep Voice 是基于 DeepMind 的 基礎(chǔ)之上的改進(jìn)版本,成功地實(shí)現(xiàn)了這一步。
基于每個(gè)輸入的貢獻(xiàn), DeepMind 的原始 WaveNet 可以把眾多不同輸入擴(kuò)大指數(shù)倍。注意上面列出的指數(shù)樹結(jié)構(gòu)。
WaveNet 生成原始波形,允許生成所有類型的聲音,不同的口音、情緒、呼吸和人類語音的其他基本部分都能包含在內(nèi),這樣的聲音和人類的聲音區(qū)別就非常小了。此外, WaveNet 甚至能在這一步之上生成音樂。
在發(fā)布的文章中,百度團(tuán)隊(duì)通過優(yōu)化程序的執(zhí)行能力,特別是優(yōu)化執(zhí)行生成高頻輸入的能力來改進(jìn) WaveNet 。因此, WaveNet 需要幾分鐘來生成一秒鐘的新音頻,百度修改后的 WaveNet 可能只需要幾分之一秒完成同樣的任務(wù),如 Deep Voice 的作者所述:
Deep Voice 可以在幾分之一秒內(nèi)合成音頻,并在合成速度和音頻質(zhì)量之間提供可調(diào)諧的權(quán)衡。相比之下,以前的 WaveNe 合成一秒鐘的音頻需要幾分鐘的運(yùn)行時(shí)間。
我們的句子
下面是 Deep Voice 管道最后一步的輸入和輸出!
以上就是探究的結(jié)果了!通過這三個(gè)步驟,我們已經(jīng)看到了 Deep Voice 如何理解一段簡單的文字,以及如何生成這段文字的讀音。以下是這些步驟的再次總結(jié):
1.將文本轉(zhuǎn)換為音素。“It was early spring”
· [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG,. ]
2.預(yù)測每個(gè)音素的發(fā)音持續(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í)間和頻率,輸出該文本的聲音。
· [IH1 (140hz, 0.5s), T (142hz, 0.1s), . (Not voiced, 0.2s), W (140hz, 0.3s),…] - > Audio但是我們該如何實(shí)際訓(xùn)練 Deep Voice 以便能夠執(zhí)行上述這些步驟呢? Deep Voice 如何利用深度學(xué)習(xí)實(shí)現(xiàn)這個(gè)目標(biāo)?
更多行業(yè)資訊,更新鮮的技術(shù)動(dòng)態(tài),盡在。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn