摘要:針對現今大規模語料庫TTS系統要求有較大的存貯空間的特點,改進設計了一種基于雙音素聲韻母的嵌入式語音合成系統,并對其語音合成質量的提高采取了多種算法以及措施,使其可以順利運行在存貯空間和運算速度都受限的嵌入式環境下,并盡可能的保證較高的語音合成質量。
關鍵詞:嵌入式TTS;語音合成;韻律調整
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)16-21345-02
Research and Implementation of Embedded TTS System
YUAN Jun, ZHANG Si-ming
(Department of Computer Science and Technology of Yangen University, quan zhou 362014,china)
Abstract: A kind of phonetic compound system has been improved and designed, according to the characteristic of the TTS system, which is on a big scale nowadays and needs larger storage space, and this system is based on the inserting of diphoneme initial finals. What’s more, a lot of arithmetic expression and methods has been used in order to improve the quality of phonetic compound. Therefore, let it run smoothly under the inserting circumstance of restriction both in storage space and arithmetic speed, and try every effort to assure the high quality of phonetic compound.
Key words: embedded TTS system; phonetic compound; prosodic adjusting
1 引言
TTS技術發展至今已歷經了幾十年的時間,有眾多的科研機構和企業對此方面做了比較深入的研究以及產品的開發工作。技術也越來越成熟,成績比較突出的有清華大學語音重點實驗室,以及安徽中科大訊飛公司等,他們開發的軟件,已經在PC機的很多桌面系統上得到了比較廣泛的應用。但這些軟件都是基于大規模語料庫,其原理是應用大量的語料采集來盡可能的涵蓋我們說話發音的全部情況,然后對語料庫進行處理,生成大規模的音庫,音庫中最小的單元一般是句子,一個句子有幾個不同的樣本,音庫大小通常在幾百兆到幾個G。
TTS程序運行過程中先對文本進行分析,然后從音庫中選擇一個合適的樣本來拼接生成語句發音。
這樣的處理方式,是以大容量的存貯空間作為代價的,顯然不能適應存貯容量和運算速度都受限的嵌入式環境下。嵌入式環境下主要要解決以下問題:(1)存貯容量的限制;(2)運算速度的限制;(3)保證盡可能真實的發音。因此有人提出了基于大規模的語料庫進行壓縮的方法,主要是以類聚算法為主,原理是對大規模音庫的語音單元進行處理,合并算法認為是相同的發音單元。主要代表有:以基頻為特征、采用分段變長量化的方法裁剪音庫容量[1]、以基頻作為特征采用K均值聚類算法裁減音庫[2]、基于音節基頻包絡特征的樣本集聚類裁減音庫[3]等。這些方式可以大幅度的減少音庫的存貯空間,但當壓縮比到了一定的程度以后,由于不同的語境的發音畢竟是不同的,用其它語境的同一種音來代替發音勢必影響到合成的語音的質量。
2 以聲韻母為合成單元的嵌入式系統
鑒于大規模語料庫所帶來的缺點,大幅度的語料裁減必然會帶來合成質量的下降,我們舍棄了大規模語料庫的主要思想:以盡可能多的樣本來保證發音的質量。而使用聲韻母為合成基元,并只保留一個樣本,這樣的處理使我們的系統在存貯空間上有很大的優勢,因為漢語中所有聲母21個,韻母43個,加上聲調的處理,小于200個樣本就可以完成音庫。但這樣隨之帶來了合成語音質量的問題,我們采用的幾個方案來解決這個問題。
2.1 使用雙音素拼接的方法,保證單個音節發音的質量
一個音節的發音部分分為聲母和韻母,但是聲母和韻母的過渡部分的發音就是兩個部分的協同發音,這一部分的發音如果在聲韻母切分的時候直接切下來而沒有包括進去,那么得到的聲韻母拼接起來所發出的音節的發音聽起來就很不連貫。因此,聲韻母部分的過渡發音一定要處理,所以我們借鑒英語中雙音素的處理方法[4]。比如:“風”就分為fe和eng兩個部分,過渡部分是放在了聲母中。
從圖1可以看出,b部分為音節間的協同發音的部分,如果我們采用聲韻母直接切分的方式,聲母部分為a語音段,韻母部分為c語音段,這時協同發音的b部分就沒有包含進去,這時如果拼接起聲韻母,就會有部分音遺失,從而使合成音節的發音質量受到很大的影響,雙音素的切分把a,b兩個部分一起包含入聲母中,這樣的處理方法雖然加大了一定的音庫的冗余,但可以很好的提高合成音的質量。
2.2 切分音素用TD-PSOLA進行對時長進行預調整
采用直接拼接的方式,音素在錄音時的發音的長短,和音高的控制一般很難達到一致,從而導致了兩音素拼接處有在的音高的不合,產生跳音,失去合成的效果。因此我們要對切分音素做一定的處理以后,再生成音庫。調整切分音的方法我們用的是TD-PSOLA基于時域的波形拼接算法,它是TTS中最常用的算法之一,由于它的計算量比較小,而且可以同時對時長以及基頻進行調整,所以在我們的系統中也用上這個算法。先用TD-PSOLA算法對切分下的音素先進行一個時長,基頻的幅度的調整,這樣可以使我們拼接而成的音節有一個相對固定的長度,這樣可以保證在韻律調整的時候有相對較好的可控制性和調整結果。
2.3 以改進的TD-PSOLA算法來調整韻律
因為我們的系統中的樣本的個數幾乎是不冗余的,這樣在不同的語境之下要達到良好合成的發音效果,就要以另外的一種方法來彌補。在這里我們采用的方法是優化TD-PSOLA算法以的韻律調整算法。并采用在韻律詞中逐字調整算法的原則,這樣調整的粒度可以更加的細化。
基于時域的同步基音疊加算法TD-PSOLA是本系統的核心算法,通常的PSOLA算法實質是將短時傅里葉變換方法中聲源濾波器分解和聲源譜修改這兩個步驟合作一步來完成。
首先,將語音信號波形分解成一系列短時分析信號:
■
其中t(s)為第s幀分析時刻或稱作分析基音標記,它的在濁音的時候與基音周期同步,在清音部分以恒定速度進行,hs(n)為第s幀的分析窗,在這里選用的是hanning窗,窗長與該分析時刻所對應的合成時刻合成基音周期成正比,在TD-PSOLA算法中這個比例系數取為2。
其次,將短時分析信號序列轉變為一系列修改了的短時合成信號。這些短時合成信號序列與一套新的合成信號基音標記同步.這個步驟涉及到短時信號序列數量的更改、短時信號序列之間延遲的更改以及每一個短時信號波形可能要發生的更改。在TD-PSOLA算法中短時合成信號就是相應的短時分析信號。這一階段,基音的標注的準確性是影響最終合成質量的關鍵。
最后,由原始的基音標注點得到最后的合成信號的基音同步標注點以后,根據原始波形與合成波形誤差最小的原則得到合成公式:
■
其中as代表合成能量變化因子;Xs(n)是合成的適時信號,hs(n)為合成的窗函數。合成語音信號的幅值可以由as來調整。
以上的作法是將原始的基音標記序列,均勻的映射到目標基音標記序列上,這樣的作法并沒有考慮到音節在詞的不同的位置所產生的音節間的協調的發音現象,在這里我們稱之為“調素理論”[5],這樣的原始算法會損失音節拼接過程中的自然度。因此,我們采用的了一種改進的TD-PSOLA算法:
由于音節在一個發音的語流中,變化并不一定是均勻的,要根據他在詞語中的位置而確定,音節在左邊的時候,音長的改變Yl和Yy,對于給定的時長因子Y有Y=(Yl +Yy)/2,這時目標基音序列的函數定義為:
■
由以上的公式所得到的基音序列通過合成公式合成以后,語音流中基音分布的狀態更接近于自然的語音流,中間的密度高面兩邊的密度比較低。
3 嵌入式TTS系統的實現
3.1 目標平臺
我們測試嵌入式TTS系統選用的操作系統為Linux,硬件平臺的核心芯片選用的是ARM9,其配置為600MHZ的CPU以及64M的SDRAM,64M的Flash,它的性能足以完成本TTS系統對要求存貯容量以及CPU運算速度的要求。
3.2 系統流程
基于上述的原理,我們設計了基于嵌入式的TTS語音系統,它的框架如圖2:
圖2 嵌入式TTS的系統流程(下轉第1348頁)
(上接第1346頁)
1) 對輸入的文本進行文本處理以及分析,調用文本標注和韻律詞分析模塊,得到時長和基頻因子,以及韻律詞的邊界切分;
2) 調用多音字處理模塊,國際化字符編碼的轉化模塊,漢字獲取有調拼音模塊,以及雙音素拼音對照模塊,最后得到每一個音節的雙音素元素。在這里由于我們的操作系統是linux所以在漢字的字符集方面,我們使用的是UTF8編碼來表示一個漢字;
3) 從雙音素音庫中,對照索引找到雙音素的聲母和韻母的發音數據流,然后拼接成音節的發音,音節的發音再通過韻律調整模塊,使用上面文本分析所得到的時長因子和基頻因子進行韻律的調整;
4) 最后把調整好的韻律音節合成為一個韻律詞的音節,并以韻律詞為單位進行語音流的輸出。
4 結論
本文采用雙音素聲韻母作為TTS合成音庫的最小合成單位,提出了在存貯容量和運算速度都受限的嵌入式環境下構建TTS系統的一種方法,以加強韻律調整算法在整個系統中的比重來彌補不同語境下不同語音流的發音差異。有效的減少了TTS音庫的空間復雜度,并能保證一定的合成音質量。
系統開發完成以后,通過主觀的聽辯測試,可懂度和自然度都比較好,音庫語音流搜索方面由于用上了索引技術,有效的減少了語音流合成播放所用的時間,聽感上比較連貫,基本上達到了使用的要求。
本方案不足處:合成過程中過多的依賴于算法,對CPU的要求比較高,我們的嵌入式系統中CPU的主頻達到了600MHZ,低端的ARM芯片可能無法勝任這樣繁重的運算工作量。
參考文獻:
[1] 陳芳,等.Natural Sounding Embedded Text-To-Speech Systems[A].第五界全國現代語音學學術會議論文集[C],北京,2001.10,302-306.
[2] 孫金城,易立夫.分層語音合成數據庫設計與分析[A]全國聲學學術會議[C],2002-337-338.
[3] 劉濤,葉振興,蔡蓮紅.嵌入式漢語TTS系統的設計與實現[A] 中文信息學報,2004.3,54-59.
[4] Shih C L,Sproat R.Issues in Text-to-Speech Conversion for Mandarin,Computational Linguistics and Chinese Language Processing,1996,1(1):37-86.
[5] 鄭新春,柴佩琪.語音拼接合成中基于“調素”論的時長標尺修改[A].計算機科學,2001,(3):60-61.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。