第九章 智能機器人語音合成系統的設計與實現
來自專欄智能機器人1 人贊了文章
第九章 智能機器人語音合成系統的設計與實現
第一節 幾種典型的語音合成平台
靈雲語音合成(TTS)6.3.0版本全面提高了整體語音合成效果的自然度,多音字標音的正確率,多層韻律結構分析和斷句能力以及對人名識別的準確性。優化了基本模式下對數字元號的讀法,調整音高、語速後的效果,幾乎達到「真人」說話的水平。同時6.0版新增對64位全平台的支持,提高了穩定性與兼容性,並完善了標記語言體系。PC端軟體VoiceReader一直在應用靈雲語音合成技術。移動互聯網開發者,也可以通過靈雲開發者社區,免費獲取最新靈雲語音合成技術能力,升級換代自身語音應用,使語音播報更加流暢自然並能實現一鍵開啟雲端聽書功能。
科大訊飛已經推出從電信、金融等行業到企業和家庭用戶,從PC到手機到MP3/MP4/PMP和玩具,能夠滿足不同應用環境的多種產品。比較方便是文語通,它直接把要聽的txt文本拖進播放器,就可以聽到聲音了。運行在win7、xp環境下的語音朗讀軟體,無需複雜的安裝,不必忍受一打開軟體就彈出要求購買註冊碼的煩惱。你要做的就是下載本軟體,如果你的系統沒有語音庫(xp系統默認只有一個英文聲音的語音庫),可在軟體中單擊:下載語音庫按鈕,進入語音庫下載頁後,試聽語音庫朗讀效果,再下載一個你認為朗讀聲音最好的語音庫,安裝即可使用本軟體進行朗讀了。
微軟的Speech API(簡稱為SAPI)支持多種語言的識別和朗讀,包括英文、中文、日文等,在Windows環境下應用廣泛。SAPI5.0於2000年發布,新的版本嚴格將應用與引擎分離的理念體現得更為充分,所有的調用都是通過動態調用sapi.dll來實現的,這樣做的目的是使得API引擎更為獨立,防止應用依賴於某個具有特定特徵的引擎,這種改變也意圖通過將一些配置和初始化的代碼放 到運行時來使得應用程序的開發更為容易。
第二節 總體架構與硬體環境
本節介紹一個TTS系統的基本架構。如圖垂直虛線的左邊是基於PC端的功能模塊,包括語料庫訓練、語音庫壓縮、生成浮點運算定點化表格以及串口工具,其中語料庫訓練可以使用HTK工具實現,語音庫壓縮是通過LZSS壓縮演算法實現,另外由於語音合成階段在目標終端實現,並且會進行一些與浮點數相關的運算,而CM3內核是不支持浮點運算的,所以在PC端先實現浮點數轉定點數的處理,這樣可以提高目標終端在進行語音合成時運算的效率,PC端的串口工具可以實現PC與目標終端的通信,如發送測試文本給目標終端以及接收來自目標終端的log信息。垂直虛線的右邊是目標終端系統,按水平虛線可劃分為硬體層與軟體層,其中水平虛線下方是硬體層,主要包括基於ARM Cortex-M3內核的CPU,在CPU內部還包含了片內Flash和SRAM,其中片內Flash存儲軟體代碼和部分會頻繁讀取的數據,SRAM存儲器一部分用於Cache,另外一部分為堆棧空間,其它的空間都是可動態申請的系統內存區,片外設備主要包括片外Flash存儲器、DMA控制器、12S輸出介面。目標終端的軟體層主要包括驅動程序、實時操作系統和上層語音合成系統,其中驅動程序主要有Flash、Cache、fuart、dma、i2s等驅動,操作系統採用了開源的μC/OS11,上層語音合成系統實現了本系統的所有應用功能。
第三節 語音信號的分析與採樣定律
語音信號的參數是隨時間而變化的,由於不同的語音是由人的口腔肌肉運動構成聲道某種形狀而產生的響應,而這種口腔肌肉運動相對於語音頻率來說是比較緩慢的,語音信號在一個10~30ms短時間範圍內其特性基本保持不變,因此又是一個準穩態過程。任何語音信號的分析和處理必須建立在「短時分析」的基礎上,將語音信號分為一「幀」一「幀」來分析其特徵參數,幀長一般取為10~30ms。這樣,對於整體的語音信號來講,分析出的是由每一幀特徵參數組成的特徵參數時間序列。
由於語音信號最重要的感知特性反映在功率譜中,而相位變化只起著很小的作用,所以相對於時域分析來說頻域分析更為重要。採樣定理又稱奈奎斯特定理,它指出在進行模擬/數字信號的轉換過程中,當採樣頻率maxsf大於信號中最高頻率maxf的2倍時,採樣之後的數字信號可以完整地保留原始信號中的信息,一般實際應用中保證採樣頻率為信號最高頻率的5~10倍。採樣位數即採樣值或取樣值,是指音效卡在採集和播放聲音文件時所使用數字聲音信號的二進位位數。採樣頻率是指計算機每秒鐘採樣多少個聲音樣本,是描述聲音文件的音質、音調,衡量音效卡、聲音文件的質量標準。採樣頻率是衡量音效卡採集、記錄和還原聲音文件的質量標準。
採樣位數與採樣頻率的關係。採樣位數和採樣率對於音頻介面來說是最為重要的兩個指標,也是選擇音頻介面的兩個重要標準,每增加一個採樣位數相當於力度範圍增加了6dB。對於採樣率來說你可以想像它類似於一個照相機,而44.1khz意味著音頻流進入計算機時計算機每秒會對其拍照達441000次。
第四節 Matlab與語音信號處理
MATLAB是matrix和laboratory的組合,意為矩陣工廠。它將高性能的數值計算和可視化集成在了一起,其軟體包括數值計算、符號運算、數據可視化、圖形文字處理和建模模擬可視化五大功能。MATLAB是一個高級的矩陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程等功能,用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的複雜的應用程序後再一起運行。新版本的MATLAB是基於最為流行的C++語言基礎上的,更加符合科技人員對數學表達式的書寫格式,而且這種語言可移植性好、可拓展性極強,能夠廣泛運用到科學研究及工程計算各個領域。
具體到語音信號處理上,其強大的數據處理能力可以極大程度上削弱雜訊影響,還原出真實的語音信號。我們日常生活中所聽到的各種聲音都是不同的聲波的組合,改變波的頻率或者幅值,其發出的聲音就會改變。另外我們聽到的雜訊都是一定頻率的波,通過設定特定的濾波器,我們就可以有效地把雜訊聲波過濾掉,從而提取出我們需要的聲音信號。
作為存儲於計算機中的語音信號,其本身可以看作離散化了的向量,我們只需將這些離散的數據讀取出來,就可以對其進行處理了。通過MATLAB里幾個命令函數的調用,能夠很輕易的在實際化語音與數字信號的理論之間搭建一座橋。我們可以像給一般信號做頻譜分析一樣,來給語音信號做頻譜分析,也可以較容易的用數字濾波器來對語音進行濾波處理。最後,還可以利用MATLAB的gui界面設計出一個漂亮的用戶應用界面,讓研究者實現界面操作,更加方便的進行語音的頻譜分析與濾波處理。總之MATLAB可以很容易地完成對語音信號的頻譜分析,進行快速傅里葉變換(fft),得出語音信號的頻譜圖並建立各種數字濾波器,比如IIR和FIR等。
第五節 目標終端軟體系統設計與實現
語音合成的總體流程是跨平台的,但可以根據數據流向來說明各環節的處理順序和大致過程。在常見的嵌入式終端的應用中包括PC端的HMM語料庫訓練和嵌入式終端的語音合成系統。語料庫的構建主要是對其內容進行必要的篩選和音段、韻律標註後,通過HMM方法訓練出合格的語音庫,並對其進行無損數據壓縮,以減少存儲空間佔用量。在嵌入式終端則是利用HMM訓練得到的語音庫和詞典對輸入文本進行分詞、韻律分析和語音單元挑選,最後將挑選出的語音單元序列進行波形拼接,輸出連續的合成語音數據流並實時播放。
第六節 系統的功能模塊劃分與任務調度管理
語音合成軟體系統分為文本分析、單元挑選、數據解壓、波形拼接四個子模塊。其中文本分析模塊接收輸入文本並經過分詞和韻律分析後轉換為帶分詞、韻律標註信息的數據流;單元挑選模塊負責對已標註的文本數據流進行解析,並根據解析結果搜索決策樹與語音庫挑選出匹配度最高的語音單元;數據解壓模塊負責對挑選出的語音單元進行解壓還原音頻流原始數據;波形拼接模塊將經過挑選並解壓的語音單元序列進行拼接輸出合成語音並播放。
上述模塊功能實現上獨立,但運行時依賴相鄰模塊的輸出數據。為了進行系統資源管理和任務調度,系統需要一個OS模塊。另外可選擇建立文件系統(FS)模塊,但如果系統擴展支持SD卡和U盤,FS模塊就是必須的了。DEBUG模塊主要用來對系統進行各種調試,它可以通過uart的tx輸出口向PC串口端實時輸出log信息,當然也可以通過rx口接收PC端發來的調試命令,比如查詢當前CPU佔用情況,內存消耗情況等。功能配置管理模塊是為了能夠讓系統應用層選擇功能配置的能力。通過該模塊可以規定系統支持哪些功能,禁止哪些功能,怎樣調整運行參數與當前硬體平台相匹配等。系統配置模塊為二次開發用戶提供了一個可針對不同硬體環境和功能需求對系統進行調整的介面,提高了系統的可移植能力。
系統文本分析、單元選擇和波形拼接三個模塊可並行工作,為了提高並行處理的效益及避免模塊間不必要的同步等待,每個模塊將任務按粒度進行切分,這樣可以同時處理多條語句,模塊間處理順序是首先通過DEBUG模塊從PC端輸入一段文本,文本分析模塊對輸入文本進行處理後將數據傳遞給單元挑選模塊,再經過數據解壓模塊解壓數據,最後將語音序列傳遞給波形拼接模塊處理,輸出最終的合成語音。
第七節 大語料庫中語音單元序列的自動挑選
基於大語料庫的語音單元挑選是現今最為常見的一種語音合成方法,由於使用了自然的語音波形,音質可以得到保證,且隨著語料庫規模的增大,合成語音的自然度也能不斷提高。為了在語音合成中實現語音單元的合理選擇,需要計算各個備選單元相對於合成目標單元的目標代價以及前後備選單元之間的連接代價,並通過動態規劃演算法來進行最優備選序列的搜索。中國科大針對單元挑選語音合成的特點,提出了一種新的最小單元挑選錯誤準則,採用區分性模型訓練方法同時進行模型權值和模型分布參數的更新,可以顯著提升合成語音的效果。
基於統計建模的方法,在模型訓練階段首先要定義一組能夠反映語音合成系統性能的聲學特徵,包括各個音素單元對應的頻譜、基頻、時長特徵等,然後使用最大似然機器學習方法進行每一種聲學特徵對應統計模型的訓練( )。使用HMM模型來表示頻譜特徵, MSD-HMM表示基頻特徵, 使用GMM表示音素的時長。被訓練的統計模型均是上下文相關的,為了解決模型訓練過程中存在的數據稀疏問題,可以引入決策樹的模型聚類方法,來保證模型參數的魯棒性。
在合成階段必須保證挑選得到的最優備選語音單元序列所對應的聲學參數與訓練中得到的統計模型有最大的似然值。針對具體的特徵選擇,最大似然可以轉換為傳統的目標代價與連接代價加和的形式,從而通過動態規劃演算法實現最優單元序列的搜索。相對於傳統的單元挑選演算法,這裡的代價函數由統計模型自動導出,需要進行的手工調試很少。當合成使用的語料庫規模較大時,為了提高單元挑選過程的運算效率,可以利用訓練得到的統計模型,基於Kullback-Leibler距離進行備選單元的快速預選。
第八節 基於波形拼接的語音合成方法
基於波形拼接的語音合成首先要通過音段切分,將語音庫中的語料切分為波形拼接所需的最小基本單元,按幀提取原始音頻中所有基元的聲學參數(基頻、梅爾倒譜與能量)與文本參數,並據此訓練時長預測與權重預測模型,然後採用分層預選的方法,針對文本分析的目標基元,利用時長預測模型預測的時長並對語料庫中的基元進行預選,獲得候選基元。在此基礎上,對目標基元、候選基元和權重信息進行計算,獲得目標代價;對相鄰兩個基元的契合度進行計算,得到拼接代價;用維特比搜索方法對目標代價和拼接代價進行搜索,得到最小代價路徑,進而得到最佳基元並使用平滑技術得到合成語音。
在基元預選時可用分層預選方法,這樣能高效地保證在候選基元接近目標基元的情況下,減少基元的個數,降低後期代價計算的時間開銷,增強拼接合成的實時性;另外加入的時長預測模型能保證選到的基元在時長上的連續性,提高合成語音自然度;目標代價的計算方法可採用文本信息結合權重信息的方法來計算,這樣可以保證代價最小的基元在韻律上與目標基元的一致性,提高合成語音的韻律表現。
為了使得合成語音更加平滑,減少咔噠聲的頻率,最為常用的方法就是使用較大的合成基元,這意味著合成時拼接點的減少。不過這也要求相應的要增加語音庫的容量。在得到拼接基元之後,需要把它們按順序拼接起來組成所需語音文件進行輸出。如果不做任何處理,在拼接邊界處由於數據的不連續會產生一些雜訊,因此,基元間在拼接時要進行平滑處理,以有效地消除邊界處的不連續,這對於改善合成語音的自然度有很重要的作用。常用的語音平滑方法有線性預測參數插值法,最優匹配法,波形插值法,傅立葉變換的頻譜平滑方法等。
第九節 無損數據壓縮與LZSS演算法
無損數據壓縮也稱為信息保持編碼、熵編碼、無失真編碼等,從壓縮模型上大體可以分為基於統計的壓縮演算法和基於字典的壓縮演算法兩大類,它是指使用壓縮後的數據進行解壓縮後的數據與原來的數據完全相同,也就是根據一定方法對大量數據進行編碼處理以達到信息壓縮存儲的過程。無損數據壓縮這類演算法壓縮率較低,一般為1/2~1/5。常用的無損壓縮演算法有霍夫曼演算法和LZW壓縮演算法,主要用於文本文件、語音資料庫、程序數據等方面的壓縮。
詞典編碼無損壓縮技術主要有LZ77、LZ78、LZSS、LZW等幾種基本演算法,比較而言LZSS演算法在單片機上實現起來較為理想,其壓縮率較高,編解碼演算法也較為簡單。LZSS壓縮演算法的字典模型使用了自適應的方式,也就是說,將已經編碼過的信息作為字典,如果要編碼的字元串曾經出現過,就輸出該字元串的出現位置及長度,否則輸出新的字元串。實際使用時,由於被壓縮的文件往往較大,一般使用「滑動窗口壓縮」方式,就是將一個虛擬的,可以跟隨壓縮進程滑動的窗口作為術語字典。LZSS演算法採用二分搜索樹,大大加快了壓縮速度,解碼時無鬚生成和維護樹因此更為迅速。該演算法的壓縮率較高,編譯演算法較簡單,但不足之處是每次壓縮都需要向前搜索到原文開頭,對於較長的原文(因建立的二叉樹過於龐大而降低了編碼的效率)需要的時間是不可忍受的,另外無論匹配長度為多少,都分配相同的代碼長度,這顯然存在一定的冗餘。
LZSS演算法仍有不少可改進之處。改進演算法的思路一是從過程出發,即提高編碼程序的效率,在壓縮率保持不變的前提下盡量減少演算法複雜度;二是從結果出發,分析壓縮代碼對,盡量精簡壓縮代碼對每個分量的表示方法,並盡量減少壓縮代碼所佔用的空間,以達到較好的壓縮效果。
第十節 語音合成效果的評測
因實現細節的不同,TTS系統合成的語音在準確性、自然度、清晰度、連貫性等方面也有著不一樣的表現,如何從多維度評價TTS系統質量成了測試人員的一大挑戰。TTS系統評測的內容主要包括TTS系統的前端、後端存在的問題,主要方法包括主觀評測和客觀評測方法。
由於自然語言本身的複雜性和開放性,前端處理部分難以覆蓋所有情況,可能導致的問題包括發音錯誤、聲調不準、韻律異常等等。後端通過聲音參數和聲碼器合成語音波形,實際實現過程中無論是聲音參數的選擇,還是聲碼器的設計都是對真實發音過程的有損估計,無法百分百還原人聲,可能引入的問題包括清晰度差,即合成的字、詞發音不清晰,近音詞區分度差;還原度差,合成音與目標說話人的音色有差異;雜音,在合成語音過程中引入背景雜訊、字詞間隔不順暢等等。客觀評測指標有發音準確率、韻律準確率、字典覆蓋率、字清晰度得分、詞清晰度得分等五項內容。評測方法應以客觀評測指標為依據來搜集組織測試語料,語料需要包括評測指標中的全部內容,工作量巨大,如果資源不夠,可以使用其他現有的評測語料庫。
主觀評測主要使用MOS評測,就是向聽音人播放合成語音,由聽音人根據設計好的規則對語音的自然度進行評分,最好是能夠邀請到有經驗的聽音專家來參與。MOS作為一個整體的主觀打分可用於反映不同系統合成語音之間的差距,但是不適用於細緻分析差異所在。通過兩兩比較評分法可以解決這個問題,它是播放兩個或多個合成語音,讓聽音人對各細分主觀評測指標打分,前端指標包括正確性、語調、情感、韻律感、連貫性、多音字、語氣詞、句型等,後端指標包括擬人、音質、清晰度等,主觀指標包括理解、體驗、悅耳、整體發音等。
冨Q?7
推薦閱讀:
※AI產品推薦_Replika(聊天機器人App)
※百應智能電話機器人
※我叫小芳,一位來自機器人村的姑娘!
※智能機器人將改變未來工作的10種方式
※仿生機器人,沒人能秀的過Festo