1. 程式人生 > >系統學習NLP(二)--語音合成的計算機處理綜述

系統學習NLP(二)--語音合成的計算機處理綜述

參考:https://blog.csdn.net/zlj925/article/details/79061900 略刪改。

語音合成跟語音識別,自然語音理解,作為人機互動的基礎模組,加上對話管理器,形成人機語音對話系統。

語音合成原理

語音合成(Text to Speech,TTS)是指將文字通過一系列的訊號處理轉換為“人造”語音(聲學波形。與簡單的錄音播放不同,機器進行語音合成時,往往並沒有這些文字的人聲錄音,而是通過音節拼接與引數調整來生成儘可能接近人聲的合成語音。

語音合成一般會經過文字與韻律分析、聲學處理與聲音合成三個步驟,分別依賴於文字與韻律分析模型、聲學模型與聲碼器。
其中文字與韻律分析模型一般被稱為“前端”,聲學模型和聲碼器被稱為“後端”。也可以定義為輸入文字轉換成語音內部表示的文字分析階段和內部表示轉換為波形的波形合成。

這裡寫圖片描述
(語音合成的處理過程)

文字與韻律分析中,首先對文字進行分詞和標註:分詞會將文字切成一個個詞語,標註則會註明每個字的發音以及哪裡是重音、哪裡需要停頓等韻律資訊;然後根據分詞和標註的結果提取文字的特徵,將文字變成一個個文字特徵向量組成的序列。也就是文字分析的結果,內部表示。

聲學模型建立了從文字特徵向量到聲學特徵向量的對映:一個個文字特徵向量經過聲學模型的處理,會變成一個個聲學特徵向量。

聲碼器則會將一個個聲學特徵向量通過反變換分別得到相應的聲音波形,然後依次進行拼接就得到了整個文字的合成語音。

聲學特徵反映了聲音訊號的一些“關鍵資訊”,反變換則可看作用關鍵資訊還原全量資訊。所以在反變換的過程中可以有人為“操作”的空間(如引數的調整),從而改變合成語音的語調、語速等。

反變換的過程還可以讓合成的語音具備特定的音色。錄製某個人少量的語音片段,在合成時即可據此調整引數,讓合成的語音擁有這個人的音色。老司機們最愛的“林志玲導航語音包”就是這麼來的。 

這裡寫圖片描述
(別傷心,你們的女神還是多少錄了幾句話的)

紅遍宇宙的深度學習技術同樣可以運用在語音合成中。無論是文字與韻律分析模型、聲學模型還是聲碼器,都可以採用通過大量的文字和語音資料訓練出的深度神經網路。

語音合成在功能上可以看作語音識別的“逆過程”。語音識別是通過語音波形提取得到聲學特徵向量,再變為文字特徵向量,最後得到文字;而語音合成則是通過文字提取得到文字特徵向量,再變為聲學特徵向量,最後反變換得到合成語音波形。

然而,語音識別和語音合成在每個步驟的技術原理卻差異很大。語音識別可以看作是一個分類問題(連續到離散),而語音合成則應看作迴歸問題(離散到連續);前者希望儘可能排除個體發音的差異獲得其中的“共性”,後者則是從“共性”出發,希望儘可能還原個體發音的特色,獲得更有表現力的合成語音。

像一點,再像一點

和語音識別不同,對語音合成質量的評價標準相對主觀。對於一段合成語音,一些人耳中的“發音錯誤”對其他人來說可能只是“發音不準”;同時,什麼樣的聲音像人聲,像到什麼程度,都很難通過幾個像“準確率”這樣的簡單指標來進行評價。

所以,語音合成的質量一般通過人工根據一系列規則打分來評價;而讓合成的語音聽起來像真實的人聲,則是語音合成真正的難點所在。現代語音合成的研究可以追溯到數十年前,但這個問題直到現在也沒有完全解決。

語音合成的難點主要來自前端的文字與韻律分析以及後端的聲碼器,它們也成為了目前各家公司語音合成技術實力的體現。

文字與韻律分析中的分詞與標註往往需要結合文字語義以及上下文的有關的內容才能作出準確的判斷,而這些也正是自然語言處理中的難點。如果這一步的處理出了問題,那麼合成語音的節奏、語調等聽起來就會比較奇怪。

這裡寫圖片描述
(重音會隨著語義的變化而變化)

聲碼器反變換得到語音波形時,由於聲學特徵只反映了語音波形的少量關鍵資訊,所以還需要通過引數調整,新增大量資訊,才能使合成語音聽起來圓潤細膩、沒有機械感。真實的人聲擁有非常豐富的細節資訊,所以會使反變換的過程變得困難。

得到聲學特徵向量之後,也可以不用聲碼器,直接通過錄音拼接的方法進行合成。這種方式需要事先錄製大量的真人語音片段,然後根據聲學特徵向量找到它們所對應的那些語音片段直接進行拼接。

錄音拼接的方式相當於規避了聲碼器中引數合成的難度,所以更容易獲得高質量的語音,但所需要的語音片段資料量可能會非常龐大。所以,這種方法一般用在機器需要播放的合成語句的數量比較有限的場景中。

硬幣的正反面

這裡寫圖片描述