當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀] 嵌入式TTS漢語(yǔ)語(yǔ)音系統(tǒng)的解決方案

      使計(jì)算機(jī)、帶有人機(jī)交互的電器、儀表等能像人一樣開(kāi)口“說(shuō)話(huà)”是科技工作者多年的研究目標(biāo)。語(yǔ)言是人與人交流信息的一種手段,文語(yǔ)轉(zhuǎn)換TTS(Text To Speech)是自動(dòng)將輸入文字轉(zhuǎn)換成語(yǔ)音輸出,并盡量使輸出的語(yǔ)音效率流暢、自然的一類(lèi)技術(shù)。

TTS系統(tǒng)主要需解決兩個(gè)問(wèn)題:

①文本分析,即語(yǔ)言學(xué)分析。該任務(wù)是將以文本廣度輸入的字符串轉(zhuǎn)換成語(yǔ)言學(xué)的表述;

②語(yǔ)音合成。即根據(jù)語(yǔ)言學(xué)的內(nèi)在表述信息合成語(yǔ)音。

TTS系統(tǒng)中的語(yǔ)音合成方法分為時(shí)域和頻域兩大類(lèi):頻域方法主要有LPC參數(shù)合成及其振峰合成兩種,其實(shí)質(zhì)是在工程上實(shí)現(xiàn)語(yǔ)音生成模型,進(jìn)而在終端特性上模擬發(fā)音器官。在目前階段,頻域方法形成的發(fā)音尚不自然,且需要的計(jì)算量很大,不適宜在低端的嵌入式芯片上使用。波形編輯法是將較短的數(shù)字音頻段(即合成基元)拼接并進(jìn)行段音平滑后生成連續(xù)語(yǔ)流的方法。這種方法占用的存儲(chǔ)空間大,但計(jì)算量小、計(jì)算速度快,而且合成語(yǔ)音自然度較高,顯然比較適合于芯片性能較弱的嵌入式系統(tǒng)方面的應(yīng)用。

  

  采用波形編輯法的嵌入式TTS系統(tǒng)由于成本低、性能完善、自然度高,隨著波形修改算法的不斷提出以及微處理器和非易失性存儲(chǔ)介質(zhì)功能的不斷增強(qiáng),正日益受到人們的關(guān)注。本系統(tǒng)即采用時(shí)域波形編輯技術(shù),采集GB2312漢字編碼字符集中所有字符發(fā)音作為原始材料,通過(guò)使用改進(jìn)的游程編碼算法壓縮生成可適用于當(dāng)前Flash存儲(chǔ)器的語(yǔ)音庫(kù),并采用多重查找表設(shè)計(jì)及預(yù)存儲(chǔ)命令字技術(shù)有效地加快語(yǔ)音庫(kù)的尋址速度,在基于Atmel公司的AT89S52單片機(jī)上成功實(shí)現(xiàn)了一個(gè)TTS語(yǔ)音系統(tǒng),經(jīng)測(cè)試取得了令人滿(mǎn)意的效果。該系統(tǒng)應(yīng)用簡(jiǎn)便,具有很小的尺寸和很低的功耗及通用的串行接口,可以廣泛用于有關(guān)的漢語(yǔ)語(yǔ)音應(yīng)用系統(tǒng)中。

  1 系統(tǒng)原理

  圖1為系統(tǒng)原理圖框圖以及主要操作流程。系統(tǒng)采用串行口與外界交互,任何具有標(biāo)準(zhǔn)串口的設(shè)備均可與本系統(tǒng)相連。欲發(fā)音漢字的國(guó)標(biāo)碼(GB碼)由串口送入MCU,MCU將其映射為Flash存儲(chǔ)器地址表中對(duì)應(yīng)項(xiàng)的地址,然后根據(jù)此地址取得對(duì)應(yīng)項(xiàng)中的命令字,由MCU根據(jù)該命令字讀取該漢字發(fā)音對(duì)應(yīng)的語(yǔ)音數(shù)據(jù),連續(xù)讀出語(yǔ)音數(shù)據(jù)并以游程碼解碼算法解碼后,按照語(yǔ)音采樣時(shí)的固定速率通過(guò)D/A轉(zhuǎn)換和功率放大播放。本文中語(yǔ)音采樣速率為11025B/s。為滿(mǎn)足應(yīng)用需求,本文首先構(gòu)建易于快速解碼的語(yǔ)音庫(kù),根據(jù)特定Flash存儲(chǔ)器的存儲(chǔ)格式,以快速多查找表尋址及命令字預(yù)先存儲(chǔ)的方式組織并存儲(chǔ)在Flash存儲(chǔ)器中,以滿(mǎn)足語(yǔ)音播放的實(shí)時(shí)要求。同樣,MCU的代碼也要優(yōu)先考慮速度而犧牲諸如模塊化、可讀性方面的要求。最后,出于實(shí)用性考慮,系統(tǒng)中需加入足夠的輸入緩沖區(qū)支持,以滿(mǎn)足一次輸入多個(gè)流字或整句的要求。

  原始語(yǔ)音數(shù)據(jù)的采集和處理

  本系統(tǒng)共采集了1335種發(fā)音,內(nèi)含1306個(gè)流字發(fā)音,26個(gè)英文字母發(fā)音及3個(gè)停頓音,語(yǔ)音采集卡AD轉(zhuǎn)換整編11025B/s,分辨率8位,樣本值域0~255,靜默值為80H。原始語(yǔ)音以WAV文件的格式保存在PC機(jī)中。

  

  圖2是“哎”音樣本的時(shí)域波形。所有的采集樣本除具有不同的波形包絡(luò)外,均具有大體相同的結(jié)構(gòu),即一個(gè)完整的漢字發(fā)音均由前后兩個(gè)靜音部分和中間的發(fā)音部分組成。靜音的采集值絕大多數(shù)為80H(一些輕微擾動(dòng)可視為錄音過(guò)程中的噪聲,但尾音部分要另外處理),因而可將其統(tǒng)一為80H,以提高壓縮比。另由圖2可見(jiàn),00H、01H、FFH、FEH這些邊緣值的出現(xiàn)概率是很小的,這個(gè)特性亦可用于語(yǔ)音的壓縮算法中。

  本文根據(jù)上述靜默值及邊緣值的分布特點(diǎn),提出了一種改進(jìn)的游程編碼用于語(yǔ)音數(shù)據(jù)的壓縮,具體做法是:用00H代表游程壓縮起始碼,其后是被編碼字符,再下一個(gè)字節(jié)是被編碼字符的重復(fù)碼,如:80 80 80 80 80可以表示為00 80 05。顯然,游程長(zhǎng)度小于等于3時(shí)沒(méi)有編碼的必要,因而不會(huì)出現(xiàn)值為00H、01H和02H的重復(fù)碼。如上所述,在原始語(yǔ)音文件中,00H、01H這些邊緣值是基本上不出現(xiàn)的。因?yàn)榇罅砍霈F(xiàn)這些邊緣值即意味著語(yǔ)音采集系統(tǒng)的動(dòng)態(tài)范圍設(shè)置錯(cuò)誤。盡管如此,為確保原始語(yǔ)音文件中沒(méi)有“多余”邊緣值,需要將語(yǔ)音文件略做處理,將可能存在的00H和01H都改為02H,顯然這樣的處理并不會(huì)影響語(yǔ)音的實(shí)際播放效果。處理后的00H、01H即可作為特殊控制字符使用。圖3是本文提出的改進(jìn)流程壓縮編碼的流程圖。編碼前,1335種原始語(yǔ)音樣本的大小為14978622字節(jié),壓縮后為7767112字節(jié),壓縮比超過(guò)50%。該語(yǔ)音庫(kù)已經(jīng)可以裝入容量為8M字節(jié)的Flash存儲(chǔ)器中。

  3 語(yǔ)音庫(kù)的存儲(chǔ)結(jié)構(gòu)

  本文以8Mbit×8位NAND型Flash存儲(chǔ)器K9F6408U0B為例,描述本系統(tǒng)語(yǔ)音庫(kù)的存儲(chǔ)結(jié)構(gòu)。

  語(yǔ)音庫(kù)的基本內(nèi)容分為兩部分:前端是地址查找表,其后是壓縮后的語(yǔ)音數(shù)據(jù)。地址表中,每4個(gè)字節(jié)代表一個(gè)地址項(xiàng)。GB2312漢字編碼字符集中每個(gè)漢字在地址表中都有一個(gè)對(duì)應(yīng)項(xiàng),其內(nèi)容指向該漢字對(duì)應(yīng)讀音的語(yǔ)音數(shù)據(jù)起始地址。GB碼字符集中共有94個(gè)區(qū),每區(qū)94個(gè)字符,總計(jì)8836個(gè)漢字、英文字母和其它符號(hào),其中實(shí)際使用了7445個(gè),余下的作為預(yù)留區(qū)。本系統(tǒng)亦保留了這些預(yù)留區(qū),以利于將來(lái)的擴(kuò)充。這樣,地址表的大小為94×94×4=35344字節(jié)。語(yǔ)音數(shù)據(jù)區(qū)共存儲(chǔ)1335年發(fā)音,采用流程編碼壓縮存放,并在每段語(yǔ)音數(shù)據(jù)結(jié)尾添加01H作為結(jié)束控制符。

  對(duì)不同的Flash存儲(chǔ)器,語(yǔ)音庫(kù)需做一些針對(duì)性的處理。對(duì)于K9F6408U0B而言,要對(duì)其C區(qū)進(jìn)行專(zhuān)門(mén)的處理。該芯片中,每個(gè)頁(yè)面(Page)都有A、B、C三個(gè)區(qū),其中A、B區(qū)各256字節(jié),而C區(qū)僅有16字節(jié)。本設(shè)計(jì)中沒(méi)有用到C區(qū),因而在制作寫(xiě)入Flash的二進(jìn)制政府間庫(kù)文件時(shí)必須注意對(duì)C區(qū)進(jìn)行空白碼(FFH)填充??紤]C區(qū)填充后,地址表對(duì)應(yīng)的二進(jìn)制語(yǔ)音庫(kù)文件大小的計(jì)算方法改為:512×69+16=35344,表示當(dāng)35344字節(jié)只占據(jù)A區(qū)和B區(qū)時(shí)共需69個(gè)頁(yè)面,多出16字節(jié)。這意味著有69個(gè)C區(qū)需要填充,即寫(xiě)入Flash的地址表的實(shí)際大小應(yīng)該是35344+69×16=36448。相應(yīng)地,語(yǔ)音數(shù)據(jù)區(qū)需要進(jìn)行同樣的處理。

  [!--empirenews.page--]

  在PC上制作寫(xiě)入的Flash的數(shù)據(jù)文件時(shí),首先將地址表放在最前面,其后將壓縮后的語(yǔ)音文件逐一寫(xiě)入,并將每個(gè)文件的起始地址轉(zhuǎn)換成對(duì)Flash存儲(chǔ)器操作的命令字寫(xiě)入地址表相應(yīng)項(xiàng)中,每寫(xiě)完一個(gè)文件要加上01H結(jié)束碼,并在寫(xiě)入過(guò)程中完成對(duì)C區(qū)的填充。在綜合完1335個(gè)語(yǔ)音文件、地址查找表、C區(qū)填充碼及文件結(jié)束碼之后,得到Flash存儲(chǔ)器的二進(jìn)制映像文件,其大小為8047776字節(jié)。寫(xiě)入后,Flash中尚余后333KB可用空間,聯(lián)合地址表中的預(yù)留項(xiàng),可用于對(duì)系統(tǒng)語(yǔ)音庫(kù)做進(jìn)一步的擴(kuò)充。上述語(yǔ)音庫(kù)的存儲(chǔ)結(jié)構(gòu)見(jiàn)圖4。

  4 碼字轉(zhuǎn)換及高效MCU代碼的實(shí)現(xiàn)

  本文中的碼字轉(zhuǎn)換有兩類(lèi)。一類(lèi)GB碼到語(yǔ)音庫(kù)起始字節(jié)數(shù)的轉(zhuǎn)換,用于MCU收到串口輸入的GB碼后,確定相應(yīng)讀音在地線(xiàn)表中對(duì)應(yīng)項(xiàng)的起始地址。該類(lèi)碼字轉(zhuǎn)換主要依據(jù)GB2312標(biāo)準(zhǔn)及語(yǔ)音庫(kù)地址表的結(jié)構(gòu)進(jìn)行。本文中,該碼制轉(zhuǎn)換的算法為:((GB碼高字節(jié)-161)×94+(GB)碼低字節(jié)-161))×4。另一類(lèi)是將上述地址轉(zhuǎn)換為Flash讀取數(shù)據(jù)的命令字。這類(lèi)轉(zhuǎn)換與語(yǔ)音庫(kù)存儲(chǔ)結(jié)構(gòu)及所用Flash存儲(chǔ)器的讀寫(xiě)操作及時(shí)序相關(guān)。由于在語(yǔ)音庫(kù)生成時(shí)已由PC機(jī)將語(yǔ)音數(shù)據(jù)的起始地址轉(zhuǎn)換為操作命令字并存儲(chǔ)到了地址表對(duì)應(yīng)項(xiàng)中,即大部分的計(jì)算及時(shí)序控制操作在使用PC制作Flash的二進(jìn)制映像文件時(shí)已經(jīng)完成,因而避免了系統(tǒng)運(yùn)行中的大量計(jì)算,從而保證了語(yǔ)音播放的實(shí)時(shí)性。計(jì)算命令字的方法與具體的Flash存儲(chǔ)器型號(hào)相關(guān)且較為繁瑣。限于篇幅,本文不再給出具體的算法。有興趣的讀者可以參閱K9F6408U0B的數(shù)據(jù)表。

  本文中的MCU型號(hào)為AT89S52,使用22.1484MHz的晶振。根據(jù)AT89S52數(shù)據(jù)表,每播放一個(gè)漢字,所需指令周期數(shù)為(1/11025)/(12/22.1184)=167.2。因此設(shè)置一個(gè)計(jì)時(shí)器中斷,中斷值為256-167=89,在每?jī)蓚€(gè)中斷之間完成如下工作:

 ?。?) 從緩沖區(qū)中取得GB碼并將之轉(zhuǎn)換為地址表對(duì)應(yīng)項(xiàng)地址;

 ?。?) 從地址表對(duì)應(yīng)項(xiàng)中取得對(duì)應(yīng)語(yǔ)音數(shù)據(jù)區(qū)存儲(chǔ)地址;

 ?。?) 取得對(duì)應(yīng)語(yǔ)音數(shù)據(jù)區(qū)數(shù)據(jù);

 ?。?) 完成游程解碼并播放。

 

  此外,由于完成有可能在語(yǔ)音播放過(guò)程收以輸入字符,因而串口亦應(yīng)工作于中斷方式,串口波特率為9600bps,其優(yōu)先級(jí)高于定時(shí)器中斷。本系統(tǒng)中,此緩沖區(qū)能滿(mǎn)足使用都 量多一次輸入60個(gè)漢字。以上操作均在約168個(gè)指令周期中完成,大約相當(dāng)84條雙周期指令。因而在代碼編寫(xiě)中,必須把代 碼效率放在第一位,靈活地運(yùn)用編程技巧來(lái)完成。

 本文給出了一種嵌入式TTS漢語(yǔ)語(yǔ)音系統(tǒng)的實(shí)現(xiàn)方案。由于采用了易于解碼的改進(jìn)游程算法、多重查找表及Flash存儲(chǔ)器操作命令這了的預(yù)先存儲(chǔ)技術(shù),使得該方案可以在羅低要求的硬件平臺(tái)上實(shí)現(xiàn),以AT89S52 MCU為核心的嵌入式TTS系統(tǒng)不同于基于PC的TTS語(yǔ)音系統(tǒng),該系統(tǒng)體積小、功耗低、成本低廉、適用范圍很廣。經(jīng)測(cè)試其語(yǔ)音清晰、連貫,可發(fā)音字節(jié)涵蓋GB碼所有漢字、26個(gè)英文字節(jié),一次可輸入多達(dá)60個(gè)漢字的整句,足以滿(mǎn)足大部分應(yīng)用場(chǎng)合的需要。如以高檔MCU或ARM處理器為平臺(tái),還可以增加更多的算法,以進(jìn)一步改進(jìn)系統(tǒng)性能。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉