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