朱志偉,劉湘云
(長(zhǎng)沙民政學(xué)院 電子信息工程學(xué)院,長(zhǎng)沙 410004)
隨著社會(huì)經(jīng)濟(jì)建設(shè)的飛速發(fā)展,教育、交通、金融、旅游等領(lǐng)域?qū)φZ(yǔ)音播報(bào)的需求不斷增長(zhǎng)。TTS(Text To Speech)文本轉(zhuǎn)換語(yǔ)音技術(shù)是人機(jī)智能對(duì)話(huà)發(fā)展的趨勢(shì),利用此技術(shù),通過(guò)MCU或者PC機(jī)控制語(yǔ)音芯片發(fā)音,能夠?qū)崿F(xiàn)多種場(chǎng)合下的文字即時(shí)閱讀功能,如公交車(chē)報(bào)站、電子文本教材誦讀、旅游導(dǎo)覽語(yǔ)音服務(wù)、排隊(duì)讀序號(hào)等,這無(wú)疑在提高人機(jī)通信效率、提升系統(tǒng)服務(wù)質(zhì)量、減輕人們工作強(qiáng)度等方面都有極大的好處?;赥TS技術(shù)的語(yǔ)音系統(tǒng)無(wú)需事先錄音就能夠隨時(shí)根據(jù)查詢(xún)條件查出并合成語(yǔ)音進(jìn)行播報(bào),從而大大減少了系統(tǒng)維護(hù)的工作量。
TTS語(yǔ)音合成的一般步驟如圖1所示。存儲(chǔ)在Flash ROM中的是編碼后的語(yǔ)音參數(shù),由MCU或PC機(jī)控制將Flash ROM中的數(shù)據(jù)取出并譯碼,根據(jù)相應(yīng)的語(yǔ)音合成方法,由語(yǔ)音參數(shù)轉(zhuǎn)換為數(shù)字語(yǔ)音信號(hào),通過(guò)D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬語(yǔ)音信號(hào),經(jīng)功率放大后,送入揚(yáng)聲器。
圖1 TTS語(yǔ)音合成的一般步驟
TTS轉(zhuǎn)換過(guò)程是先將文字序列轉(zhuǎn)換成音韻序列,再由系統(tǒng)根據(jù)音韻序列生成語(yǔ)音波形。這個(gè)過(guò)程涉及語(yǔ)言學(xué)處理和韻律處理,目前實(shí)現(xiàn)這個(gè)過(guò)程較好的途徑是,把基于規(guī)則的波形拼接技術(shù)和參數(shù)語(yǔ)音合成方法結(jié)合起來(lái)。
常用的語(yǔ)音合成方法主要有:共振峰合成、LPC(線(xiàn)性預(yù)測(cè)編碼)參數(shù)合成、PSOLA(基音同步疊加)拼接合成和LMA濾波。在現(xiàn)階段,共振峰合成和LPC參數(shù)合成需要的計(jì)算量較大,不適合在低端的嵌入式芯片上使用。PSOLA的主要特點(diǎn)是:在拼接語(yǔ)音波形片斷之前,首先根據(jù)上下文的要求,用PSOLA算法對(duì)拼接單元的韻律特征進(jìn)行調(diào)整,使合成波形既保持原始發(fā)音的主要音律特征,又能使拼接單元的韻律特征符合上下文的要求,從而獲得很高的清晰度和自然度。LMA濾波器能有效解決PSOLA等波形拼接算法難以解決的協(xié)同發(fā)音問(wèn)題??傊?,PSOLA拼接合成和LMA濾波器,雖然占用的存儲(chǔ)空間較大,但計(jì)算量小、計(jì)算速度快,而且合成語(yǔ)音自然度高,比較適合于CPU性能較低的嵌入式語(yǔ)音系統(tǒng)使用。
SYN6288是北京宇音天下科技有限公司于2010年初推出的采用PSOLA拼接合成技術(shù)的一款語(yǔ)音合成芯片。SYN6288通過(guò)異步串口(UART)通信方式,接收待合成的文本數(shù)據(jù),實(shí)現(xiàn)文本到語(yǔ)音(或TTS語(yǔ)音)的轉(zhuǎn)換,可直接通過(guò)PWM輸出方式驅(qū)動(dòng)揚(yáng)聲器或外接功率放大電路驅(qū)動(dòng)揚(yáng)聲器,進(jìn)行語(yǔ)音輸出。該芯片支持GB2312等格式的文本,支持標(biāo)點(diǎn)符號(hào)、漢字、數(shù)字、英文字母及特殊字符處理,可正確識(shí)別數(shù)值、號(hào)碼、時(shí)間日期及常用的度量衡符號(hào),具備很強(qiáng)的多音字處理和中文姓氏處理能力?;赟YN6288的語(yǔ)音系統(tǒng)框圖如圖2所示。
圖2 基于SYN6288語(yǔ)音系統(tǒng)框圖
SYN6288共有28個(gè)引腳,其引腳定義如表1所列。
異步串口通信電路如圖3所示。由SYN6288構(gòu)成的語(yǔ)音系統(tǒng)主電路如圖4所示。在雙刀雙擲開(kāi)關(guān)S1的作用下,系統(tǒng)可靈活地在PC機(jī)和MCU之間選擇上位機(jī)。S1上接,SYN6288受 MCU控制;S1下接,SYN6288受PC機(jī)控制,通過(guò)MAX232進(jìn)行電平轉(zhuǎn)換。任何時(shí)刻MCU均可與PC機(jī)通信,系統(tǒng)默認(rèn)的上位機(jī)為MCU,此時(shí)單片機(jī)可利用PC機(jī)進(jìn)行程序調(diào)試、燒寫(xiě)。如果SYN6288需要受PC機(jī)控制,只需切換S1的方向即可。SYN6288通過(guò)異步串口接收待合成的文本,直接通過(guò)PWM輸出的方式驅(qū)動(dòng)揚(yáng)聲器,或外接功率放大電路驅(qū)動(dòng)揚(yáng)聲器,即可實(shí)現(xiàn)文本到聲音的轉(zhuǎn)換。
表1 SYN6288引腳定義
圖3 異步串口通信電路
圖4 由SYN6288構(gòu)成的語(yǔ)音系統(tǒng)主電路
SYN6288規(guī)定的上位機(jī)向芯片傳送的待合成數(shù)據(jù)幀的有效格式為“幀頭0xFD+ 數(shù)據(jù)區(qū)長(zhǎng)度 +數(shù)據(jù)區(qū)”。上位機(jī)發(fā)送給SYN6288芯片的所有命令和數(shù)據(jù)都需要用“幀”的方式進(jìn)行封裝后傳輸,每幀最多為206個(gè)字節(jié),幀格式如表2所列。SYN6288支持的控制命令如表3所列。
系統(tǒng)軟件根據(jù)上位機(jī)的不同有兩種程序,一種是上位機(jī)PC中的文本輸入發(fā)送程序,另一種是MCU中數(shù)據(jù)收發(fā)及存儲(chǔ)回放的程序。
當(dāng)采用PC機(jī)作為上位機(jī)時(shí),程序用VC開(kāi)發(fā),串口通信使用MSComm來(lái)實(shí)現(xiàn),只需要對(duì)輸入/輸出緩沖區(qū)進(jìn)行讀寫(xiě)操作就可以實(shí)現(xiàn)發(fā)送和接收數(shù)據(jù)。為保證SYN6288正常工作,上位機(jī)首先需要發(fā)送狀態(tài)查詢(xún)命令幀,如果芯片回傳的狀態(tài)數(shù)據(jù)是“0x4F”,則表明芯片處于空閑狀態(tài),可以接收數(shù)據(jù)。然后開(kāi)始發(fā)送實(shí)際的數(shù)據(jù),讀取用戶(hù)設(shè)置的控制信息,如音量、波特率等,根據(jù)這些信息制作幀頭。最后讀取輸入的文本,由于SYN6288每幀長(zhǎng)度最多為206個(gè)字節(jié),要根據(jù)輸入文本長(zhǎng)度判斷是否需要進(jìn)行分幀發(fā)送,并對(duì)分幀后的數(shù)據(jù)計(jì)算出校驗(yàn)和,形成完整的數(shù)據(jù)幀,通過(guò)串口發(fā)送出去。同時(shí),開(kāi)啟偵聽(tīng),偵聽(tīng)到SYN6288回傳“0x4F”,說(shuō)明前面的文本已合成完畢,上位機(jī)再發(fā)送下一個(gè)文本合成幀。
當(dāng)采用C51單片機(jī)作為上位機(jī)時(shí),數(shù)據(jù)構(gòu)造命令如下:
表2 SYN6288支持的UART幀格式
表3 SYN6288支持的控制命令
這樣命令幀的各個(gè)部分已經(jīng)完成,而需要發(fā)送的文本信息可以通過(guò)以下類(lèi)似的代碼實(shí)現(xiàn):
static char code text[]={" 基于SYN6288的 TTS語(yǔ)音系統(tǒng)的實(shí)現(xiàn)"};
將待發(fā)放文本數(shù)據(jù)區(qū)中的數(shù)據(jù)與命令幀整合,并將全部數(shù)據(jù)與0x00進(jìn)行“異或”運(yùn)算得到最終的“異或”校驗(yàn)碼。當(dāng)查詢(xún)到SYN6288的/BUSY引腳為低電平,芯片處于空閑狀態(tài)時(shí),把這些命令和數(shù)據(jù)通過(guò)串口直接發(fā)送到SYN6288芯片,轉(zhuǎn)換后驅(qū)動(dòng)揚(yáng)聲器,就能聽(tīng)到語(yǔ)音:“基于SYN6288的TTS語(yǔ)音系統(tǒng)的實(shí)現(xiàn)”??梢栽诖l(fā)送文本數(shù)據(jù)區(qū)中輸入任意文字,得到相應(yīng)的語(yǔ)音信息,免除了過(guò)去錄音操作的不便之處。
與其他形式的TTS語(yǔ)音芯片相比,SYN6288有很多人性化的設(shè)計(jì),如提供了聲音提示音和和弦音樂(lè),可以依據(jù)使用場(chǎng)合選用在公共信息播報(bào)中;設(shè)置了文本控制標(biāo)記以調(diào)節(jié)輸出語(yǔ)音音量大小、調(diào)節(jié)語(yǔ)速和語(yǔ)調(diào)、強(qiáng)制分詞等,特別是標(biāo)點(diǎn)符號(hào)的靜音時(shí)間及字與字間的靜音時(shí)間可調(diào)節(jié),使人感覺(jué)有一種語(yǔ)氣上加重或停頓的味道,聽(tīng)起來(lái)更具感情色彩。本文基于SYN6288設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)便攜式文本轉(zhuǎn)語(yǔ)音系統(tǒng)。該系統(tǒng)小巧便攜,使用簡(jiǎn)單,可以應(yīng)用于智能醫(yī)療設(shè)備、自動(dòng)售貨機(jī)、導(dǎo)航終端等需要語(yǔ)音輸出的場(chǎng)合,并且能夠有效地幫助在語(yǔ)言交流方面有障礙的殘疾人員與他人進(jìn)行順利的溝通。
[1] 北京宇音天下科技有限公司.SYN628數(shù)據(jù)手冊(cè) V1.5.(2011-09-06)[2012-05-01].http://www.tts168.com.cn/bao/SYN6288-Manual.pdf.
[2] 張輝,黃永強(qiáng),夏愛(ài)華.中文語(yǔ)音合成模塊XF-S4240在導(dǎo)航終端中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(1):43-45.
[3] 洪家平.LD3320的嵌入式語(yǔ)音識(shí)別系統(tǒng)的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(2):47-49.