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