都格草,才讓卓瑪,南措吉,算太本
(青海師范大學 計算機學院 藏文智能信息處理與機器翻譯重點實驗室,青海 西寧 810008)
語音合成(speech synthesis)是人機交互的核心技術之一,也是中文信息處理領域的一項前沿技術。語音合成的目標是將文字信息自動轉換為清晰、流暢的語音,它的研究對自動控制、智能機器人和人機語音通信系統(tǒng)等的研制具有重要的理論意義和實用價值。隨著計算機技術和通信技術的發(fā)展,語音合成技術越來越引起社會的關注。
語音合成技術的發(fā)展按時間順序大致經歷了機械式、電子式和計算機語音合成[1]三個階段。盡管計算機語音合成技術由于其側重點的不同,分類方法也有所差異,但當前主流和獲得較認同的分類是將語音合成方法按照設計思想分為規(guī)則驅動(rule-based)方法和數據驅動(data-based)方法。前者的主要思想是根據人類發(fā)音的物理過程制定一系列規(guī)則來模擬語音合成過程,例如共振峰合成和發(fā)音規(guī)則合成;數據驅動方法則是對語音庫的數據用統(tǒng)計方法實現合成,例如波形拼接(concatenative synthesis)合成[2]、基于隱馬爾可夫模型(hidden markov model,HMM)的統(tǒng)計參數語音合成[3]及深度神經網絡(deep neural networks,DNN)的語音合成[4-8]。相對而言,基于數據驅動方法更為成功,也更受研究人員的青睞。近年來,隨著神經網絡方法在機器翻譯、文本分類、問答系統(tǒng)及信息抽取等領域的廣泛應用,基于神經網絡的語音處理技術在語音合成中也取得了顯著成績[9-12],從而成為當前研究語音識別及合成的主流技術。
藏語語音合成技術是中文信息處理的重要任務之一,目前藏語語音合成系統(tǒng)的實現主要采用波形拼接技術[13]或基于隱馬爾可夫模型(HMM)統(tǒng)計參數語音合成技術[14-15]??紤]到波形拼接技術對存儲容量要求高且系統(tǒng)構建周期長,而統(tǒng)計參數語音合成技術的合成語音效果不穩(wěn)定且韻律表現不佳,本文通過分析藏文字結構與拼讀規(guī)則,融合Sequence to Sequence(簡稱Seq2Seq)模型和注意力機制(attention),研究基于神經網絡的藏語語音合成技術。
本文分為幾個部分:引言主要介紹語音合成技術的發(fā)展及藏語語音合成研究現狀;第1部分介紹語音合成模型相關技術;第2部分給出了基于神經網絡的藏語語音合成方法;第3部分進行了實驗及實驗結果分析;第4部分是結語與展望。
隨著神經網絡理論的不斷深入,基于神經網絡的各種模型被廣泛地應用于語音合成中。例如,文獻[4]中使用DNN模型進行語音合成、文獻[5-7]使用循環(huán)神經網絡(recurrent neural network, RNN)模型進行語音合成,而文獻[8]使用長短時記憶網絡(long short term memory,LSTM)模型進行語音合成等??紤]到Seq2Seq模型突破了傳統(tǒng)神經網絡的固定大小輸入問題,并在英語-法語翻譯、英語—德語翻譯[16-17]等的應用中有著不俗的表現。本文采用基于Seq2Seq模型和注意力機制融合研究藏語語音合成。Seq2Seq模型主要通過深度神經網絡模型(常用的是LSTM,長短時記憶網絡)將一個作為輸入的序列映射為一個作為輸出的序列。
2014年,Google Brain團隊和Yoshua Bengio團隊針對機器翻譯的相關問題不約而同地提出了Seq2Seq模型[17-18],該模型通過使用長短時記憶網絡或者遞歸神經網絡(recursive neural network,RNN)將一個序列作為輸入映射為另外一個輸出序列,機器翻譯的準確率因為該模型的應用而有了較大的提升。同時,由于Seq2Seq模型突破了傳統(tǒng)的固定大小輸入問題,從而被廣泛應用于自動編碼、分類器訓練、句法分析、文本自動摘要、智能對話系統(tǒng)、語音合成與識別等領域。Seq2Seq模型結構如圖1所示。
圖1 Seq2seq模型
從圖1中可見,Seq2Seq模型是一個編碼器到解碼器結構的網絡,通過編碼器來產生上下文向量C(其中C有可能是一個輸入序列X={x1,x2,…,xT}的向量或者向量序列),向量C輸入到解碼器,得到輸出序列Y(輸出序列Y={y1,y2,…,yT})。
Seq2Seq模型中輸入序列的所有信息都被編譯成一定維度的特征向量C,但隨著序列的不斷增長,Seq2Seq模型處理較長數據時會出現兩個問題,其一是無論輸入有多長,都被編碼成一個固定長度的向量,當句子比較長時編碼結果可能會損失較多的信息,這將不利于接下來的解碼工作;其次,每個時刻的輸出在解碼過程中用到的上下文向量都相同,也會給解碼帶來困難。為了解決這些問題,需要引入注意力機制,該機制的核心目標是從輸入序列和輸出序列中選擇出對當前任務目標更關鍵的信息。計算上下文向量C如式(1)所示。
(1)
其中h(t)為編碼器輸出的特征向量,a(t)為權重。a(t)權重向量在Decoder每次進行預測時都不一樣,計算方法如式(2)所示。
(2)
其中的eij代表Encoder的第j個輸入與Decoder的第i個輸出的注意力匹配程度。
藏語文字是一種拼音文字,主要由30個輔音字母和4個元音組成[20]。輔音字母中有10個后加字,4個下加字。后加字中5個字母也可作前加字、2個字母也可作重后加字、3個字母也可作上加字。藏語雖有衛(wèi)藏方言、康方言和安多方言等不同方言,但各方言都遵從相同的文法與拼接規(guī)則[19]。藏文字以基字為中心呈橫向與縱向結構。其基字的橫向有前加字、后加字、重后加字拼寫,而基字的縱向還有上加字、下加字和元音拼寫。藏文字的基本結構如圖2所示。藏文字的拼讀按照其文字結構逐項疊加進行[21],即將藏文字按其基本結構從左往右、從上到下逐項拼讀,便可得到相應的音節(jié),音節(jié)中的元音通常只出現一次。藏文字拼讀順序示意圖如圖3所示。
圖2 藏文字的基本結構
圖3 藏文字拼讀順序示意圖
在基于神經網絡的語音合成模型中,輸入為一系列文本字向量,輸出為聲譜圖, 然后使用Griffin_Lim算法[22]生成對應音頻。以下將對模型進行簡單介紹。
圖4 藏文字符嵌入過程
人的聽覺系統(tǒng)是一個特殊的非線性系統(tǒng),它響應不同頻率信號的靈敏度是不同的。在語音特征的提取上,人類聽覺系統(tǒng)做得非常好,它不僅能提取出語義信息,而且能提取出說話人的個人特征。因此,為了使合成系統(tǒng)能更好地模擬人類聽覺感知處理特點,本文在語音特征的選取中主要考慮了參數維度低且更符合聽覺系統(tǒng)的梅爾頻率倒譜系數(mel frequency cepstral coefficients,MFCC)。MFCC的主要思想是先將線性頻譜映射到基于聽覺感知的Mel非線性頻譜中,然后轉換到倒譜上,其主要過程如下:首先,對語音進行預加重、分幀和加窗;其次,對每一個短時分析窗,通過快速傅里葉氏變換(fast fourier transformation,FFT)得到對應的頻譜(spectrum),并通過Mel濾波器組得到Mel頻譜;最后,在Mel頻譜上面進行倒譜分析,即取對數,做傅里葉變換逆變換,獲得Mel頻率倒譜系數MFCC。
第1節(jié)已介紹Seq2Seq模型與注意力機制。該模型主要由編碼器與解碼器兩大模塊組成。
2.3.1 編碼器模塊
編碼器模塊主要包含預網(pre-net)結構與CBHG(全稱conv bank highway gru_rnn)結構。模塊訓練過程如圖5所示。
圖5 編碼器模塊訓練過程
Pre-net的主要功能是對輸入進行一系列非線性的變換。它是一個3層的網絡結構,有兩個隱藏層,層與層之間均為全連接。第一層的神經元個數與輸入藏文詞向量個數一致,第二層的神經元個數為第一層的一半。兩個隱藏層采用的激活函數均為ReLu,并保持0.5的dropout來提高泛化能力。CBHG主要用于提高模型的泛化能力。Pre-net的輸出經過一個卷積層。它有K個大小不同的1維濾波器(filter),其中Filter的大小為1,2,3,…,K(16)。大小不同的卷積核提取長度不同的上下文信息。然后,將經過不同大小的K個卷積核的輸出堆積在一起。下一層為最大池化層(max-pool),步長(stride)為1。經過池化之后,會再經過兩層一維的卷積層。第一個卷積層的Filter大小為3,Stride為1,采用的激活函數為ReLu;第二個卷積層的Filter大小為3,Stride為1,沒有采用激活函數。然后把卷積層輸出與字符的序列相加輸入到Highway layers中,同時放入到兩個一層的全連接網絡,兩個網絡的激活函數分別采用ReLu和Sigmoid函數。假定輸入為Input,ReLu的輸出為H,Sigmoid的輸出為T,Highway layer的輸出為:Output=H×T+Input×(1-T)。它的輸出提供給GRU模型,得到上下文向量C。
2.3.2 解碼器模塊
解碼器模塊主要分為Pre-net、Attention RNN、Decoder RNN三部分。模塊訓練過程如圖6所示。
圖6 解碼器模塊訓練過程
Pre-net的結構與Encoder中的Pre-net相同,主要是對輸入做一些非線性變換。Attention RNN的結構為一層包含256個GRU的RNN單元,它將Pre-net的輸出和注意力機制的輸出作為輸入,經過GRU單元后輸出到Decoder RNN中。Decode RNN為兩層Residual GRU,它的輸出為輸入與經過GRU單元輸出之和。
在Decoder-RNN輸出之后并沒有直接將輸出轉化為音頻文件,所以添加了后處理的網絡。后處理的網絡在一個線性頻率范圍內預測幅度譜(spectral magnitude),并且后處理網絡能看到整個解碼的序列從左至右地運行。后處理網絡通過反向傳播來修正每一幀的錯誤。最后使用Griffin-Lim算法生成音頻。
訓練神經網絡模型時語料是必不可少的主要要素,本實驗使用的語料是藏族第1部哲理格言詩集《薩迦格言》,詩集強調知識、智慧的作用,它既是藏族學者必讀著作,也在群眾中口頭廣泛流傳。詩集中有456個韻文,每個韻文由四個句子構成,每個句子有7個音節(jié),總共有1 824個句子和12 768個音節(jié)。這些語料作為本文的訓練數據。采樣率為16kHz,采樣精度為16bits。
為了評估模型的性能和模型擬合的好壞,本文從客觀和主觀兩方面進行分析??陀^上用模型訓練的誤差函數來度量擬合程度。誤差(loss)函數極小化,意味著擬合程度最好,對應的模型參數即為最優(yōu)參數。由圖7可知,模型訓練的誤差逐步極小化,說明模型的擬合程度最好,收斂速度最快。圖中train/loss是快速傅里葉變換與MFCC語音特征和的誤差圖,train/loss1是MFCC特征在訓練過程中的誤差圖,誤差接近0,說明訓練后的MFCC值靠近原始MFCC的值。train/lr是不同的學習率下每輪完整迭代過后的loss應該呈現的變化狀況,初始學習率設為0.001,先使用較大的學習率來快速得到一個較優(yōu)的解,然后隨著迭代的繼續(xù),逐步減小學習率,使得模型在訓練后期更加穩(wěn)定。
圖7 訓練藏語語音合成模型的誤差
主觀上,由7位測聽員通過對合成語音與原始語音(設定為5分)進行對比打分給出了MOS分。
表1是不同測試語料下合成語音的清晰度、自然度的MOS值。
表1 合成語音的MOS值
由表1可見,合成語音的清晰度和自然度分別為3.46和3.9分,基本能達到預期效果。評分中測聽員一致認為能夠完全聽清楚合成語音的內容,語音自然、清晰,但與原始真人語音相比有較重的機器味。
語音合成技術的主要任務是將文本映射為音頻信號。為了提高語音合成的自然度和清晰度,本文通過分析藏文字結構與拼讀規(guī)則,融合Seq2Seq模型和注意力機制研究基于神經網絡的藏語語音合成技術?;谏窠浘W絡的語音合成模型中,輸入為一系列文本字向量和MFCC語音特征,并進行神經網絡模型訓練,輸出為聲譜圖, 然后使用Griffin_Lim算法生成對應音頻。為了評估模型的性能和模型擬合的好壞,本文從模型訓練的誤差和MOS評估兩方面進行客觀和主觀分析,合成效果均達到預期目標。
在本文研究內容的基礎上,后續(xù)的工作主要是收集更多的語料,并加強語料文體的多樣化,對藏語的語言學和語音學內在關系進行深入研究。