查看“︁WaveNet”︁的源代码
←
WaveNet
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
'''WaveNet'''(波網)是一個用於直接生成聲音訊號的[[人工神經網路]]。由倫敦人工智慧公司[[Google DeepMind]]的研究人員於2016年9月的一篇論文<ref>Oord, Aaron van den, et al. "Wavenet: A generative model for raw audio." arXiv preprint arXiv:1609.03499 (2016). </ref>中提出。 WaveNet通過使用用真實語音記錄訓練的神經網絡方法直接模擬波形,能夠生成聽起來相對真實的人類聲音。除了[[語音合成]]外,WaveNet也能應用在音樂生成以及語音辨識等領域。<ref>{{Cite web |title=WaveNet: A generative model for raw audio |url=https://deepmind.google/discover/blog/wavenet-a-generative-model-for-raw-audio/ |website=Google DeepMind |date=2024-12-17 |language=en |access-date=2025-02-04 |archive-date=2025-02-01 |archive-url=https://web.archive.org/web/20250201232454/https://deepmind.google/discover/blog/wavenet-a-generative-model-for-raw-audio/ |dead-url=no }}</ref> 2018年,[[Google]]在其雲端語音合成服務Google Cloud Text-to-Speech<ref>{{Cite web |title=Text-to-Speech AI:逼真的语音合成效果 |url=https://cloud.google.com/text-to-speech |website=Google Cloud |language=zh-CN |access-date=2025-02-04 |archive-date=2022-05-10 |archive-url=https://web.archive.org/web/20220510150032/https://cloud.google.com/text-to-speech |dead-url=no }}</ref>中提供了基於WaveNet的語音合成[[API]]<ref name="API">{{Cite web |title=Toward better phone call and video transcription with new Cloud Speech-to-Text |url=https://cloud.google.com/blog/products/gcp/toward-better-phone-call-and-video-transcription-with-new-cloud-speech-to-text |website=Google Cloud Blog |language=en-US |access-date=2025-02-04 |archive-date=2021-01-26 |archive-url=https://web.archive.org/web/20210126001639/https://cloud.google.com/blog/products/gcp/toward-better-phone-call-and-video-transcription-with-new-cloud-speech-to-text |dead-url=no }}</ref>。截至2019年,該產品提供了32種語言以及多種不同音色的語音合成服務,且基於WaveNet的合成結果在自然度上相比傳統方法更接近人類語音<ref>{{Cite web |title=Cloud Text-to-Speech expands its number of voices by nearly 70%, now covering 33 languages and variants |url=https://cloud.google.com/blog/products/ai-machine-learning/cloud-text-to-speech-expands-its-number-of-voices-now-covering-33-languages-and-variants |website=Google Cloud Blog |language=en-US |access-date=2025-02-04 |archive-date=2022-04-22 |archive-url=https://web.archive.org/web/20220422203034/https://cloud.google.com/blog/products/ai-machine-learning/cloud-text-to-speech-expands-its-number-of-voices-now-covering-33-languages-and-variants |dead-url=no }}</ref>。 ==背景== 在WaveNet被提出之前,傳統上常見語音合成的方法有串接生成(Concatenative synthesis)及參數化法(Parametric method)等。串接生成是透過錄製多段聲音來拼接合成目標語句;參數化法則是用模型生成聲音特徵的參數,再經由[[聲碼器]]合成聲音。 近年,隨著[[深度學習]]興起,使用人工神經網路合成語音的方法也被提出,如Tacotron<ref>{{Cite journal |last=Wang |first=Yuxuan |last2=Skerry-Ryan |first2=R. J. |last3=Stanton |first3=Daisy |last4=Wu |first4=Yonghui |last5=Weiss |first5=Ron J. |last6=Jaitly |first6=Navdeep |last7=Yang |first7=Zongheng |last8=Xiao |first8=Ying |last9=Chen |first9=Zhifeng |last10=Bengio |first10=Samy |last11=Le |first11=Quoc |title=Tacotron: Towards End-to-End Speech Synthesis |url=https://www.isca-archive.org/interspeech_2017/wang17n_interspeech.html |date=2017 |doi=10.21437/Interspeech.2017-1452}} </ref>。該模型利用人工神經網路生成目標聲音的[[時頻譜]]或特徵參數,再透由[[Griffin-Lim演算法]]或其他聲碼器合成聲音。 然而無論上述何種方法,皆無法直接生成聲音訊號。原因在於即便僅僅一秒的聲音訊號,就可能包含了數萬個樣本點,要對龐大的樣本點之間的關聯性建模是相當困難的。 WaveNet結合了自迴歸特性和空洞[[卷積神經網路]](Dilated Convolutional Neural Network)架構,成功的提出第一個能夠生成高品質聲音樣本點的人工神經網路模型。 ==架構設計== ===WaveNet模型架構=== ===自迴歸特性=== WaveNet採用和PixelCNN<ref>Van den Oord, Aaron, et al. "Conditional image generation with pixelcnn decoders." Advances in neural information processing systems. 2016. </ref>相似的自迴歸特性模型。設聲音訊號<math>x = {x_{1}, x_{2}, ..., x_{T}} </math>,WaveNet將其機率建模成: <math>p(x) = \prod_{t=1}^{T} p(x_{t} | x_{1}, ..., x_{t-1}) </math> 即在時間點t生成的樣本點<math>x_{t} </math>,模型會以<math>{x_{1}, ..., x_{t-1}} </math>為輸入,其輸出是基於前幾個時間點的樣本點作為條件的條件機率分布。而模型訓練目標便是讓<math>p(x) </math>愈大愈好。 ===8位元量化=== WaveNet模型的輸出是下個樣本點的[[機率分布]],而聲音訊號的樣本點通常會以16位元的整數儲存,這使模型在每個時間點,要輸出65536個機率來表示所有可能的樣本點的機率分布。為了降低建模難度,WaveNet使用µ律演算法(µ-law algorithm, [[G.711]])將樣本點量化成8位元,即256種可能的數值: <math>F(x_{t}) = \sgn(x_{t}) \frac{\ln(1+ \mu |x_{t}|)}{\ln(1+\mu)} </math> 其中<math>-1 \leq x_{t} \leq 1 </math>是在時間點t的聲音訊號樣本點,<math>\mu = 255 </math>,<math>F(x_{t}) </math>是0~255的整數。 研究中顯示這種非線性量化方法的表現結果比單純線性量化好上許多,且透過<math>F^{-1} </math>重建的語音在人類聽覺上與原始語音非常相似。 ===多層空洞因果卷積神經網路=== 因果卷積神經網路是WaveNet組成的主要部分,透過因果卷積,可以確保對資訊正確地建模。 在預測<math>p(x_{t}) = p(x_{t} | x_{1}, ..., x_{t-1}) </math>時,不會參考到<math>{x_{t+1}, x_{t+2}, ..., x_{T}} </math>的資訊。 一卷積神經網路的[[感受野]](receptive field)會隨著網路的加深而加大。然而對於動輒數萬個樣本點的聲音訊號而言,一般的因果卷積神經網路仍需堆疊相當多的層數來使感受野大到足以抽取出有用的資訊。下圖為堆疊數層的因果卷積神經網路感受野示意圖,每一個輸出結果(橘色點)參考了五個輸入資料(藍色點)的資訊。 為了解決此一問題,WaveNet使用了多層空洞因果卷積神經網路,如下圖所示,在同樣層數的情況下,每一個輸出點參考了16個輸入點,模型的感受野隨層數加深而[[指數增長]]。這樣的架構能讓WaveNet很好地從輸入樣本點中抽取資訊,並預測下一個時間的樣本點的機率分布。 ===門激勵單元(Gated Activation Unit)=== WaveNet中使用了和PixelCNN相同的門激勵單元: <math>z = \tanh(W_{f,k}*x) \circ \sigma(W_{g,k}*x) </math> 其中<math> * </math>代表[[摺積]]運算,<math> \circ </math>代表逐點乘法,<math> \sigma </math>是[[S函數]],<math>W_{f,k} </math>和<math>W_{g,k} </math>代表在第k層的兩種摺積核(convolutional kernel)。 研究中表明,使用門激勵單元作為非線性[[激勵函數]],相比[[線性整流函數]]有更好的表現。 ==應用== ===[[語音合成]]=== ===[[語音辨識]]=== ===神經聲碼器(Neural Vocoder)=== 在過往的語音生成任務,如文字轉語音、語者轉換等,模型往往會先生成聲音特徵參數或時頻譜,再使用聲碼器或Griffin-Lim演算法合成聲音訊號。在Tacotron2<ref>{{Cite journal |last=Shen |first=Jonathan |last2=Pang |first2=Ruoming |last3=Weiss |first3=Ron J. |last4=Schuster |first4=Mike |last5=Jaitly |first5=Navdeep |last6=Yang |first6=Zongheng |last7=Chen |first7=Zhifeng |last8=Zhang |first8=Yu |last9=Wang |first9=Yuxuan |last10=Skerrv-Ryan |first10=Rj |last11=Saurous |first11=Rif A. |title=Natural TTS Synthesis by Conditioning Wavenet on MEL Spectrogram Predictions |url=https://ieeexplore.ieee.org/document/8461368/ |journal=2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) |date=2018-04 |doi=10.1109/ICASSP.2018.8461368 |access-date=2025-02-04 |archive-date=2024-05-07 |archive-url=https://web.archive.org/web/20240507125249/https://ieeexplore.ieee.org/document/8461368/ |dead-url=no }}</ref>中,首次將WaveNet用作神經聲碼器來補足從時頻譜或[[梅爾刻度]]時頻譜重建聲音訊號所缺失的資訊(如相位等)。研究人員發現使用神經聲碼器所重建的聲音訊號,比起使用傳統聲碼器或演算法生成的聲音更為自然。此後,除了大量被使用在語音生成研究中來提高聲音品質外,神經聲碼器也逐漸被應用在許多產品當中<ref name="API" />。 ==缺點== 儘管WaveNet作為語音合成模型或類神經聲碼器,能夠生成與人類自然語音接近的聲音品質,然而其自迴歸特性也帶來不少明顯缺點。 其一是生成速度十分緩慢,由於樣本點是逐一生成,因此生成一秒的聲音訊號可能就要花上數分鐘的時間<ref name="WaveGlow">{{Cite journal |last=Prenger |first=Ryan |last2=Valle |first2=Rafael |last3=Catanzaro |first3=Bryan |title=Waveglow: A Flow-based Generative Network for Speech Synthesis |url=https://ieeexplore.ieee.org/document/8683143/ |journal=ICASSP 2019 - 2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) |date=2019-05 |doi=10.1109/ICASSP.2019.8683143 |access-date=2025-02-04 |archive-date=2024-04-29 |archive-url=https://web.archive.org/web/20240429113256/https://ieeexplore.ieee.org/document/8683143/ |dead-url=no }}</ref>,使其在實際應用上受到限制。此外,模型以之前生成的樣本點作為輸入來生成下一個樣本點,因此當生成較差的樣本點時,錯誤可能會不斷累積下去,影響聲音訊號品質<ref name="FFTNet">{{Cite journal |last=Jin |first=Zeyu |last2=Finkelstein |first2=Adam |last3=Mysore |first3=Gautham J. |last4=Lu |first4=Jingwan |title=Fftnet: A Real-Time Speaker-Dependent Neural Vocoder |url=https://ieeexplore.ieee.org/document/8462431/ |journal=2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) |date=2018-04 |doi=10.1109/ICASSP.2018.8462431 |access-date=2025-02-04 |archive-date=2024-07-07 |archive-url=https://web.archive.org/web/20240707204934/https://ieeexplore.ieee.org/document/8462431 |dead-url=no }}</ref>。 ==後續研究== WaveNet提出之後,作為類神經聲碼器使基於深度學習語音合成模型能夠進一步生成更為接近自然的語音,後續的研究皆著重於改良WaveNet架構或訓練方式,使其能夠[[實時]]生成高品質語音。 * Parallel WaveNet<ref>Oord, Aaron van den, et al. "Parallel wavenet: Fast high-fidelity speech synthesis." arXiv preprint arXiv:1711.10433 (2017). </ref> * FFTNet<ref name="FFTNet" />: 簡化WaveNet架構,能以更快的速度自迴歸地生成聲音樣本點,並提出一些優化自迴歸類神經聲碼器的方法。 * WaveRNN<ref>Kalchbrenner, Nal, et al. "Efficient neural audio synthesis." arXiv preprint arXiv:1802.08435 (2018). </ref>: 引入RNN和雙重Softmax層(dual softmax layer)來簡化WaveNet模型運算的複雜度,並提出多個優化生成速度的方法,使模型甚至能在手機[[CPU]]上實時生成語音。 * WaveGlow<ref name="WaveGlow" />: 不採用自迴歸模型,而是以基於流(flow-based)的模型來達到實時生成高品質語音。 ==參考文獻== {{Reflist|2}} {{Differentiable computing}} [[Category:Google]] [[Category:人工神經網路]] [[Category:語音合成]]
该页面使用的模板:
Template:Cite journal
(
查看源代码
)
Template:Cite web
(
查看源代码
)
Template:Differentiable computing
(
查看源代码
)
Template:Reflist
(
查看源代码
)
返回
WaveNet
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息