摘要:針對(duì)現(xiàn)今大規(guī)模語(yǔ)料庫(kù)TTS系統(tǒng)要求有較大的存貯空間的特點(diǎn),改進(jìn)設(shè)計(jì)了一種基于雙音素聲韻母的嵌入式語(yǔ)音合成系統(tǒng),并對(duì)其語(yǔ)音合成質(zhì)量的提高采取了多種算法以及措施,使其可以順利運(yùn)行在存貯空間和運(yùn)算速度都受限的嵌入式環(huán)境下,并盡可能的保證較高的語(yǔ)音合成質(zhì)量。
關(guān)鍵詞:嵌入式TTS;語(yǔ)音合成;韻律調(diào)整
中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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技術(shù)發(fā)展至今已歷經(jīng)了幾十年的時(shí)間,有眾多的科研機(jī)構(gòu)和企業(yè)對(duì)此方面做了比較深入的研究以及產(chǎn)品的開發(fā)工作。技術(shù)也越來(lái)越成熟,成績(jī)比較突出的有清華大學(xué)語(yǔ)音重點(diǎn)實(shí)驗(yàn)室,以及安徽中科大訊飛公司等,他們開發(fā)的軟件,已經(jīng)在PC機(jī)的很多桌面系統(tǒng)上得到了比較廣泛的應(yīng)用。但這些軟件都是基于大規(guī)模語(yǔ)料庫(kù),其原理是應(yīng)用大量的語(yǔ)料采集來(lái)盡可能的涵蓋我們說(shuō)話發(fā)音的全部情況,然后對(duì)語(yǔ)料庫(kù)進(jìn)行處理,生成大規(guī)模的音庫(kù),音庫(kù)中最小的單元一般是句子,一個(gè)句子有幾個(gè)不同的樣本,音庫(kù)大小通常在幾百兆到幾個(gè)G。
TTS程序運(yùn)行過(guò)程中先對(duì)文本進(jìn)行分析,然后從音庫(kù)中選擇一個(gè)合適的樣本來(lái)拼接生成語(yǔ)句發(fā)音。
這樣的處理方式,是以大容量的存貯空間作為代價(jià)的,顯然不能適應(yīng)存貯容量和運(yùn)算速度都受限的嵌入式環(huán)境下。嵌入式環(huán)境下主要要解決以下問(wèn)題:(1)存貯容量的限制;(2)運(yùn)算速度的限制;(3)保證盡可能真實(shí)的發(fā)音。因此有人提出了基于大規(guī)模的語(yǔ)料庫(kù)進(jìn)行壓縮的方法,主要是以類聚算法為主,原理是對(duì)大規(guī)模音庫(kù)的語(yǔ)音單元進(jìn)行處理,合并算法認(rèn)為是相同的發(fā)音單元。主要代表有:以基頻為特征、采用分段變長(zhǎng)量化的方法裁剪音庫(kù)容量[1]、以基頻作為特征采用K均值聚類算法裁減音庫(kù)[2]、基于音節(jié)基頻包絡(luò)特征的樣本集聚類裁減音庫(kù)[3]等。這些方式可以大幅度的減少音庫(kù)的存貯空間,但當(dāng)壓縮比到了一定的程度以后,由于不同的語(yǔ)境的發(fā)音畢竟是不同的,用其它語(yǔ)境的同一種音來(lái)代替發(fā)音勢(shì)必影響到合成的語(yǔ)音的質(zhì)量。
2 以聲韻母為合成單元的嵌入式系統(tǒng)
鑒于大規(guī)模語(yǔ)料庫(kù)所帶來(lái)的缺點(diǎn),大幅度的語(yǔ)料裁減必然會(huì)帶來(lái)合成質(zhì)量的下降,我們舍棄了大規(guī)模語(yǔ)料庫(kù)的主要思想:以盡可能多的樣本來(lái)保證發(fā)音的質(zhì)量。而使用聲韻母為合成基元,并只保留一個(gè)樣本,這樣的處理使我們的系統(tǒng)在存貯空間上有很大的優(yōu)勢(shì),因?yàn)闈h語(yǔ)中所有聲母21個(gè),韻母43個(gè),加上聲調(diào)的處理,小于200個(gè)樣本就可以完成音庫(kù)。但這樣隨之帶來(lái)了合成語(yǔ)音質(zhì)量的問(wèn)題,我們采用的幾個(gè)方案來(lái)解決這個(gè)問(wèn)題。
2.1 使用雙音素拼接的方法,保證單個(gè)音節(jié)發(fā)音的質(zhì)量
一個(gè)音節(jié)的發(fā)音部分分為聲母和韻母,但是聲母和韻母的過(guò)渡部分的發(fā)音就是兩個(gè)部分的協(xié)同發(fā)音,這一部分的發(fā)音如果在聲韻母切分的時(shí)候直接切下來(lái)而沒(méi)有包括進(jìn)去,那么得到的聲韻母拼接起來(lái)所發(fā)出的音節(jié)的發(fā)音聽(tīng)起來(lái)就很不連貫。因此,聲韻母部分的過(guò)渡發(fā)音一定要處理,所以我們借鑒英語(yǔ)中雙音素的處理方法[4]。比如:“風(fēng)”就分為fe和eng兩個(gè)部分,過(guò)渡部分是放在了聲母中。
從圖1可以看出,b部分為音節(jié)間的協(xié)同發(fā)音的部分,如果我們采用聲韻母直接切分的方式,聲母部分為a語(yǔ)音段,韻母部分為c語(yǔ)音段,這時(shí)協(xié)同發(fā)音的b部分就沒(méi)有包含進(jìn)去,這時(shí)如果拼接起聲韻母,就會(huì)有部分音遺失,從而使合成音節(jié)的發(fā)音質(zhì)量受到很大的影響,雙音素的切分把a(bǔ),b兩個(gè)部分一起包含入聲母中,這樣的處理方法雖然加大了一定的音庫(kù)的冗余,但可以很好的提高合成音的質(zhì)量。
2.2 切分音素用TD-PSOLA進(jìn)行對(duì)時(shí)長(zhǎng)進(jìn)行預(yù)調(diào)整
采用直接拼接的方式,音素在錄音時(shí)的發(fā)音的長(zhǎng)短,和音高的控制一般很難達(dá)到一致,從而導(dǎo)致了兩音素拼接處有在的音高的不合,產(chǎn)生跳音,失去合成的效果。因此我們要對(duì)切分音素做一定的處理以后,再生成音庫(kù)。調(diào)整切分音的方法我們用的是TD-PSOLA基于時(shí)域的波形拼接算法,它是TTS中最常用的算法之一,由于它的計(jì)算量比較小,而且可以同時(shí)對(duì)時(shí)長(zhǎng)以及基頻進(jìn)行調(diào)整,所以在我們的系統(tǒng)中也用上這個(gè)算法。先用TD-PSOLA算法對(duì)切分下的音素先進(jìn)行一個(gè)時(shí)長(zhǎng),基頻的幅度的調(diào)整,這樣可以使我們拼接而成的音節(jié)有一個(gè)相對(duì)固定的長(zhǎng)度,這樣可以保證在韻律調(diào)整的時(shí)候有相對(duì)較好的可控制性和調(diào)整結(jié)果。
2.3 以改進(jìn)的TD-PSOLA算法來(lái)調(diào)整韻律
因?yàn)槲覀兊南到y(tǒng)中的樣本的個(gè)數(shù)幾乎是不冗余的,這樣在不同的語(yǔ)境之下要達(dá)到良好合成的發(fā)音效果,就要以另外的一種方法來(lái)彌補(bǔ)。在這里我們采用的方法是優(yōu)化TD-PSOLA算法以的韻律調(diào)整算法。并采用在韻律詞中逐字調(diào)整算法的原則,這樣調(diào)整的粒度可以更加的細(xì)化。
基于時(shí)域的同步基音疊加算法TD-PSOLA是本系統(tǒng)的核心算法,通常的PSOLA算法實(shí)質(zhì)是將短時(shí)傅里葉變換方法中聲源濾波器分解和聲源譜修改這兩個(gè)步驟合作一步來(lái)完成。
首先,將語(yǔ)音信號(hào)波形分解成一系列短時(shí)分析信號(hào):
■
其中t(s)為第s幀分析時(shí)刻或稱作分析基音標(biāo)記,它的在濁音的時(shí)候與基音周期同步,在清音部分以恒定速度進(jìn)行,hs(n)為第s幀的分析窗,在這里選用的是hanning窗,窗長(zhǎng)與該分析時(shí)刻所對(duì)應(yīng)的合成時(shí)刻合成基音周期成正比,在TD-PSOLA算法中這個(gè)比例系數(shù)取為2。
其次,將短時(shí)分析信號(hào)序列轉(zhuǎn)變?yōu)橐幌盗行薷牧说亩虝r(shí)合成信號(hào)。這些短時(shí)合成信號(hào)序列與一套新的合成信號(hào)基音標(biāo)記同步.這個(gè)步驟涉及到短時(shí)信號(hào)序列數(shù)量的更改、短時(shí)信號(hào)序列之間延遲的更改以及每一個(gè)短時(shí)信號(hào)波形可能要發(fā)生的更改。在TD-PSOLA算法中短時(shí)合成信號(hào)就是相應(yīng)的短時(shí)分析信號(hào)。這一階段,基音的標(biāo)注的準(zhǔn)確性是影響最終合成質(zhì)量的關(guān)鍵。
最后,由原始的基音標(biāo)注點(diǎn)得到最后的合成信號(hào)的基音同步標(biāo)注點(diǎn)以后,根據(jù)原始波形與合成波形誤差最小的原則得到合成公式:
■
其中as代表合成能量變化因子;Xs(n)是合成的適時(shí)信號(hào),hs(n)為合成的窗函數(shù)。合成語(yǔ)音信號(hào)的幅值可以由as來(lái)調(diào)整。
以上的作法是將原始的基音標(biāo)記序列,均勻的映射到目標(biāo)基音標(biāo)記序列上,這樣的作法并沒(méi)有考慮到音節(jié)在詞的不同的位置所產(chǎn)生的音節(jié)間的協(xié)調(diào)的發(fā)音現(xiàn)象,在這里我們稱之為“調(diào)素理論”[5],這樣的原始算法會(huì)損失音節(jié)拼接過(guò)程中的自然度。因此,我們采用的了一種改進(jìn)的TD-PSOLA算法:
由于音節(jié)在一個(gè)發(fā)音的語(yǔ)流中,變化并不一定是均勻的,要根據(jù)他在詞語(yǔ)中的位置而確定,音節(jié)在左邊的時(shí)候,音長(zhǎng)的改變Yl和Yy,對(duì)于給定的時(shí)長(zhǎng)因子Y有Y=(Yl +Yy)/2,這時(shí)目標(biāo)基音序列的函數(shù)定義為:
■
由以上的公式所得到的基音序列通過(guò)合成公式合成以后,語(yǔ)音流中基音分布的狀態(tài)更接近于自然的語(yǔ)音流,中間的密度高面兩邊的密度比較低。
3 嵌入式TTS系統(tǒng)的實(shí)現(xiàn)
3.1 目標(biāo)平臺(tái)
我們測(cè)試嵌入式TTS系統(tǒng)選用的操作系統(tǒng)為L(zhǎng)inux,硬件平臺(tái)的核心芯片選用的是ARM9,其配置為600MHZ的CPU以及64M的SDRAM,64M的Flash,它的性能足以完成本TTS系統(tǒng)對(duì)要求存貯容量以及CPU運(yùn)算速度的要求。
3.2 系統(tǒng)流程
基于上述的原理,我們?cè)O(shè)計(jì)了基于嵌入式的TTS語(yǔ)音系統(tǒng),它的框架如圖2:
圖2 嵌入式TTS的系統(tǒng)流程(下轉(zhuǎn)第1348頁(yè))
(上接第1346頁(yè))
1) 對(duì)輸入的文本進(jìn)行文本處理以及分析,調(diào)用文本標(biāo)注和韻律詞分析模塊,得到時(shí)長(zhǎng)和基頻因子,以及韻律詞的邊界切分;
2) 調(diào)用多音字處理模塊,國(guó)際化字符編碼的轉(zhuǎn)化模塊,漢字獲取有調(diào)拼音模塊,以及雙音素拼音對(duì)照模塊,最后得到每一個(gè)音節(jié)的雙音素元素。在這里由于我們的操作系統(tǒng)是linux所以在漢字的字符集方面,我們使用的是UTF8編碼來(lái)表示一個(gè)漢字;
3) 從雙音素音庫(kù)中,對(duì)照索引找到雙音素的聲母和韻母的發(fā)音數(shù)據(jù)流,然后拼接成音節(jié)的發(fā)音,音節(jié)的發(fā)音再通過(guò)韻律調(diào)整模塊,使用上面文本分析所得到的時(shí)長(zhǎng)因子和基頻因子進(jìn)行韻律的調(diào)整;
4) 最后把調(diào)整好的韻律音節(jié)合成為一個(gè)韻律詞的音節(jié),并以韻律詞為單位進(jìn)行語(yǔ)音流的輸出。
4 結(jié)論
本文采用雙音素聲韻母作為TTS合成音庫(kù)的最小合成單位,提出了在存貯容量和運(yùn)算速度都受限的嵌入式環(huán)境下構(gòu)建TTS系統(tǒng)的一種方法,以加強(qiáng)韻律調(diào)整算法在整個(gè)系統(tǒng)中的比重來(lái)彌補(bǔ)不同語(yǔ)境下不同語(yǔ)音流的發(fā)音差異。有效的減少了TTS音庫(kù)的空間復(fù)雜度,并能保證一定的合成音質(zhì)量。
系統(tǒng)開發(fā)完成以后,通過(guò)主觀的聽(tīng)辯測(cè)試,可懂度和自然度都比較好,音庫(kù)語(yǔ)音流搜索方面由于用上了索引技術(shù),有效的減少了語(yǔ)音流合成播放所用的時(shí)間,聽(tīng)感上比較連貫,基本上達(dá)到了使用的要求。
本方案不足處:合成過(guò)程中過(guò)多的依賴于算法,對(duì)CPU的要求比較高,我們的嵌入式系統(tǒng)中CPU的主頻達(dá)到了600MHZ,低端的ARM芯片可能無(wú)法勝任這樣繁重的運(yùn)算工作量。
參考文獻(xiàn):
[1] 陳芳,等.Natural Sounding Embedded Text-To-Speech Systems[A].第五界全國(guó)現(xiàn)代語(yǔ)音學(xué)學(xué)術(shù)會(huì)議論文集[C],北京,2001.10,302-306.
[2] 孫金城,易立夫.分層語(yǔ)音合成數(shù)據(jù)庫(kù)設(shè)計(jì)與分析[A]全國(guó)聲學(xué)學(xué)術(shù)會(huì)議[C],2002-337-338.
[3] 劉濤,葉振興,蔡蓮紅.嵌入式漢語(yǔ)TTS系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[A] 中文信息學(xué)報(bào),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] 鄭新春,柴佩琪.語(yǔ)音拼接合成中基于“調(diào)素”論的時(shí)長(zhǎng)標(biāo)尺修改[A].計(jì)算機(jī)科學(xué),2001,(3):60-61.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。