當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]本系統(tǒng)由1220個(gè)不同讀音漢字讀音文件構(gòu)成語(yǔ)音庫(kù),存于一片F(xiàn)lash存儲(chǔ)器中,實(shí)現(xiàn)了基于SPCE061A的嵌入式通用漢字文本語(yǔ)音播放系統(tǒng)。系統(tǒng)硬件簡(jiǎn)單,使用方便,成本低廉,適用于公交車報(bào)站器等應(yīng)用系統(tǒng)中。

    0引言

  嵌入式語(yǔ)音播放系統(tǒng)應(yīng)用日益廣泛。漢字語(yǔ)音播放的方法有錄音芯片法、語(yǔ)音合成芯片法及漢字語(yǔ)音庫(kù)法等。Flash存儲(chǔ)器容量不斷增大,利用Windows的Speech SDK可以方便地提取漢字語(yǔ)音文件,因此漢字語(yǔ)音庫(kù)法得以廣泛應(yīng)用。

  漢字語(yǔ)音庫(kù)法可分為專用語(yǔ)音播放和通用語(yǔ)音播放兩類。專用語(yǔ)音播放系統(tǒng)只存儲(chǔ)少量固定的語(yǔ)音資源,只需較小的存儲(chǔ)容量,但應(yīng)用范圍有限。通用語(yǔ)音播放系統(tǒng)存儲(chǔ)所有不同讀音漢字的單字語(yǔ)音資源,可實(shí)現(xiàn)任意文本組合的語(yǔ)音播放,適用于播放內(nèi)容經(jīng)常更新的場(chǎng)合。本系統(tǒng)由1220個(gè)不同讀音漢字讀音文件構(gòu)成語(yǔ)音庫(kù),存于一片F(xiàn)lash存儲(chǔ)器中,實(shí)現(xiàn)了基于SPCE061A嵌入式通用漢字文本語(yǔ)音播放系統(tǒng)。系統(tǒng)硬件簡(jiǎn)單,使用方便,成本低廉,適用于公交車報(bào)站器等應(yīng)用系統(tǒng)中。

  1硬件原理

  直接由漢字的wave讀音文件構(gòu)成的語(yǔ)音庫(kù)占存儲(chǔ)空間很大,語(yǔ)音文件壓縮后,可使語(yǔ)音庫(kù)數(shù)據(jù)占Flash存儲(chǔ)器空間大大減小。凌陽(yáng)為語(yǔ)音播放提供了多種壓縮算法,本系統(tǒng)采用碼激勵(lì)線性預(yù)測(cè)(CELP)編碼的SACM_S480壓縮算法,其壓縮比例為80:3。壓縮后的語(yǔ)音資源數(shù)據(jù)可存放在一片512 kB的Flash存儲(chǔ)器中。

  普通單片機(jī)為核心的語(yǔ)音播放系統(tǒng)硬件上需要較多的外圍器件和電路,如存儲(chǔ)器、D/A轉(zhuǎn)換器等,軟件上語(yǔ)音解壓縮速度不快會(huì)影響其他操作。而若采用嵌入式微處理器實(shí)現(xiàn)語(yǔ)音播放系統(tǒng)則成本太高。凌陽(yáng)16位單片機(jī)SPCE061A是一個(gè)最佳的選擇,它帶有DSP指令,將嵌入式語(yǔ)音系統(tǒng)所需的A/D、D/A等功能模塊都集成在一個(gè)芯片中,具有很強(qiáng)的可編程音頻處理功能。凌陽(yáng)還提供SACM_LIB語(yǔ)音庫(kù)(本系統(tǒng)使用SACMV26e.lib)可實(shí)現(xiàn)錄音、播放和語(yǔ)音識(shí)別等功能。

  本系統(tǒng)硬件原理如圖1所示,主要由SPCE061A單片機(jī)和外部Flash存儲(chǔ)器SPR4096A兩個(gè)芯片組成。SPCE061A運(yùn)行所有語(yǔ)音解碼播放及其他操作的軟件功能,它的D/A輸出經(jīng)音頻功放SPY0030接揚(yáng)聲器。SPR4096A存儲(chǔ)包括漢字讀音序號(hào)索引表、語(yǔ)音資源地址索引表和語(yǔ)音資源數(shù)據(jù)的所有語(yǔ)音信息。

        
 
  通用文本語(yǔ)音播放有預(yù)先存儲(chǔ)固定文本播放、接收文本后播放和實(shí)時(shí)文本播放等3種工作方式。實(shí)時(shí)文本播放方式對(duì)系統(tǒng)的軟件處理能力的要求最高,最能檢驗(yàn)系統(tǒng)的語(yǔ)音播放操作與其他操作的配合情況,故本系統(tǒng)采用實(shí)時(shí)文本播放的方式進(jìn)行程序調(diào)試,即串行口輸入漢字的同時(shí)進(jìn)行文本播放,硬件上SPCE061A的UART與PC機(jī)的RS-232連接。

  SPCE061A有內(nèi)置ICE(在線仿真器)調(diào)試接口,可實(shí)現(xiàn)在線仿真、調(diào)試和下載,程序調(diào)試非常方便,這也是選擇SPCE061A的主要原因之一。硬件上ICE調(diào)試接口與PC機(jī)并行口連接。SPCE061A除可編程音頻處理功能外,還具有豐富的I/O口、時(shí)鐘源及中斷源,F(xiàn)lash存儲(chǔ)達(dá)32 k字,RAM有2 k字,在語(yǔ)音播放的同時(shí)還能進(jìn)行復(fù)雜的控制操作。

  SPR4096A容量為512 k×8位,分256個(gè)扇區(qū),每個(gè)扇區(qū)為2 kB,可配置為BMI(總線存儲(chǔ)器接口)或SIF(串行接口總線)。為節(jié)省I/O口,本系統(tǒng)使用串行接口。此串行接口是凌陽(yáng)自行定義的SIO接口,也用SCK和SDA兩根信號(hào)線,但數(shù)據(jù)格式與I2C或SPI略有不同,SPCE061A的IOB0為時(shí)鐘信號(hào)SCK,IOB1為數(shù)據(jù)信號(hào)SDA。

        
 
  2 Flash存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)

  GB 2312中的6 763個(gè)漢字有1 300多個(gè)不同讀音,用Speech SDK制作漢字語(yǔ)音庫(kù)可生成1 220個(gè)大小為20 kB的wave讀音文件,其音頻格式為PCM8 kHz 16 bit Mono,符合凌陽(yáng)單片機(jī)對(duì)語(yǔ)音文件格式的要求。在保證讀音完整性的前提下,每個(gè)wave讀音文件裁減為6.5 kB。漢字語(yǔ)音庫(kù)的制作,本文不做詳細(xì)介紹,將另文發(fā)表。用凌陽(yáng)的CompressTool工具將6.5 kB的wave讀音文件壓縮成S480格式(語(yǔ)音壓縮編碼類型為4.8 kbit/s)的語(yǔ)音文件,每個(gè)壓縮語(yǔ)音數(shù)據(jù)文件包括文件頭48字節(jié)和實(shí)際語(yǔ)音資源數(shù)據(jù)258字節(jié)共306字節(jié),所以語(yǔ)音庫(kù)數(shù)據(jù)總的大小為306×1 220=373 320字節(jié)。

  用ResWriter工具V2.0可將壓縮后的1 220個(gè)S480語(yǔ)音數(shù)據(jù)文件燒錄入SPR4096A中。ResWriter根據(jù)文件總數(shù)和每個(gè)文件大小,在最低地址生成一個(gè)語(yǔ)音資源地址索引表。索引表分兩大部分:第1部分14字節(jié),是整個(gè)語(yǔ)音資源的總信息,包括4字節(jié)的標(biāo)識(shí)碼SPRW(Sunplus Read Write)4字節(jié)的起始地址、4字節(jié)的結(jié)束地址和2字節(jié)的文件總數(shù);第2部分為每個(gè)文件的信息,共1 220項(xiàng),分別對(duì)應(yīng)一個(gè)文件,每項(xiàng)12字節(jié),包括4字節(jié)的長(zhǎng)度、4字節(jié)的起始地址和4字節(jié)的結(jié)束地址。所以此索引表的大小為14+12×1220=14 654字節(jié)。

  要根據(jù)文本中每個(gè)漢字內(nèi)碼找到語(yǔ)音數(shù)據(jù)地址,還必須有漢字讀音序號(hào)索引表。此表在語(yǔ)音庫(kù)制作的同時(shí)生成,共6 763項(xiàng),按GB 2312順序每項(xiàng)對(duì)應(yīng)一個(gè)漢字在1 220個(gè)讀音文件的序號(hào),用2字節(jié)表示,總大小為13 526字節(jié),占用7個(gè)扇區(qū)。另編一個(gè)小程序,將此表寫入Flash存儲(chǔ)器最底部的7個(gè)扇區(qū),即從地址0x7C800開始。Flash存儲(chǔ)器還剩59個(gè)空白扇區(qū),可供其他數(shù)據(jù)寫入。

  漢字讀音序號(hào)索引表、語(yǔ)音資源地址索引表和語(yǔ)音資源數(shù)據(jù)的總長(zhǎng)度為392 kB,存儲(chǔ)在SPR4096A中,結(jié)構(gòu)如圖2所示,所有地址和長(zhǎng)度數(shù)據(jù)均為高字節(jié)在前,低字節(jié)在后,用十六進(jìn)制表示。當(dāng)然,漢字讀音序號(hào)索引表也可存放在SPCE061A的內(nèi)部Flash存儲(chǔ)器中,這樣編程較簡(jiǎn)單,但會(huì)多占用程序存儲(chǔ)器空間。

  3軟件流程

  3.1漢字語(yǔ)音資源地址的計(jì)算

  由漢字機(jī)內(nèi)碼計(jì)算漢字語(yǔ)音資源的起始地址和結(jié)束地址分為以下2步:

  a)由公式:(機(jī)內(nèi)碼高字節(jié)WH-0xB0)×94+(機(jī)內(nèi)碼低字節(jié)WL-0xA1),計(jì)算出漢字在漢字讀音序號(hào)索引表中的偏移值(設(shè)為M),在0x7C800+2*(M-1)地址處查得漢字讀音序號(hào)(設(shè)為N)。

  b)由漢字讀音序號(hào)N,在語(yǔ)音資源地址索引表中從0x12+0xC*(N-1)地址開始查得該漢字的語(yǔ)音資源數(shù)據(jù)的起始地址和結(jié)束地址。

  3.2漢字語(yǔ)音資源播放
  
  以語(yǔ)音資源的起始地址和結(jié)束地址為參數(shù),調(diào)用SACM_S480中相應(yīng)的API函數(shù)就可實(shí)現(xiàn)語(yǔ)音播放,流程如圖3所示。

  凌陽(yáng)語(yǔ)音播放有自動(dòng)和手動(dòng)兩種API,由于語(yǔ)音資源存儲(chǔ)在外部SPR4096A中,需先讀出并存入內(nèi)部RAM中才能解碼,故只能采用手動(dòng)方式播放語(yǔ)音,初始化、讀取資源數(shù)據(jù)、填充語(yǔ)音隊(duì)列、解碼、停止播放等都用相應(yīng)的API實(shí)現(xiàn),函數(shù)原型在流程圖中有詳細(xì)的表示。

        
 
  采用Compress Tool工具壓縮的S480格式的語(yǔ)音資源帶有48字節(jié)的文件頭,所以語(yǔ)音資源首地址還要加48跳過(guò)此文件頭,然后調(diào)用兩個(gè)初始化函數(shù)進(jìn)行解碼列隊(duì)和解碼器的初始化,最后進(jìn)入循環(huán)。手動(dòng)或自動(dòng)播放方式選擇的初始化在主程序中進(jìn)行,解碼器初始化就是選擇D/A通道,可用兩個(gè)通道之一,也可兩個(gè)通道全用。

  在循環(huán)中首先讀取語(yǔ)音隊(duì)列狀態(tài),返回值0或1表示語(yǔ)音隊(duì)列空或滿。若語(yǔ)音隊(duì)列不滿,判斷地址是否超出語(yǔ)音資源的結(jié)束地址,若未超出結(jié)束地址,則從SPR4096A取語(yǔ)音資源,將語(yǔ)音資源填入語(yǔ)音隊(duì)列中等待解碼處理,地址指針指向下一個(gè)地址單元;若已經(jīng)超出結(jié)束地址,則退出填充隊(duì)列循環(huán)。在解碼播放前要讀取語(yǔ)音播放的狀態(tài),返回值1或0表示正在播放或已播放結(jié)束,若播放已結(jié)束,則調(diào)用停止播放函數(shù),結(jié)束循環(huán)。

  實(shí)際的語(yǔ)音播放是在TMA_FIQ中斷源的中斷服務(wù)子程序中調(diào)用函數(shù)F_FIQ_Service_SACM_S480實(shí)現(xiàn)的,它將解碼后的數(shù)據(jù)送人D/A通道播放。中斷子程序的編程、播放函數(shù)的詳細(xì)介紹和其他相關(guān)函數(shù)如音量控制、暫停播放、恢復(fù)播放等見文獻(xiàn)[1]。

  3.3主程序流程

  主程序流程如圖4所示,對(duì)硬件及播音函數(shù)初始化后,循環(huán)執(zhí)行語(yǔ)音數(shù)據(jù)解碼播放和其他操作。文本輸入并寫入循環(huán)緩沖區(qū)的操作在串行口中斷子程序中進(jìn)行。為了不互相影響,這3個(gè)操作都不能占用太長(zhǎng)時(shí)間。

        
 
  文本輸入與語(yǔ)音播放必須很好地配合,系統(tǒng)采用環(huán)形緩沖區(qū)來(lái)協(xié)調(diào)這兩個(gè)操作。串行口中斷子程序每接收一個(gè)漢字就填人環(huán)形緩沖區(qū),并移動(dòng)寫入指針。語(yǔ)音播放前先利用讀出指針和寫入指針判斷環(huán)形緩沖區(qū)內(nèi)是否有2字節(jié)或2字節(jié)以上的數(shù)據(jù),若無(wú)則可進(jìn)行其他操作;若有再判斷該數(shù)據(jù)是否為漢字機(jī)內(nèi)碼。若不是只移動(dòng)讀出指針;若是則移動(dòng)讀出指針,并調(diào)用播放函數(shù)進(jìn)行單個(gè)漢字的語(yǔ)音播放。因?yàn)橹鞒绦虻奶幚磉^(guò)程足夠快,所以若漢字輸入是連續(xù)的,則播放也是連續(xù)平滑的。

  系統(tǒng)的其他操作如鍵盤掃描及按鍵處理、顯示驅(qū)動(dòng)及數(shù)據(jù)更新等,也必須能與文本語(yǔ)音播放協(xié)調(diào)配合。系統(tǒng)調(diào)試時(shí),在主程序循環(huán)中插入一個(gè)鍵盤掃描程序,用按鍵控制音量增減、重復(fù)播放同一漢字等。因?yàn)橐粋€(gè)漢字的解碼播放和其他操作是交替進(jìn)行的,所以進(jìn)行其他操作時(shí)不能解碼播放,解碼播放時(shí)不能進(jìn)行其他操作,這就要求其他操作執(zhí)行時(shí)間不超過(guò)一個(gè)漢字的播放時(shí)間,否則會(huì)影響語(yǔ)音播放的實(shí)時(shí)性。另一方面,其他操作的間隔時(shí)間必須大于一個(gè)漢字播放時(shí)間,否則播放操作會(huì)影響其他操作。改進(jìn)程序流程可以解決以上問(wèn)題,若其他操作執(zhí)行時(shí)間過(guò)長(zhǎng),可分解成幾個(gè)操作與解碼播放交替進(jìn)行;若其他操作間隔時(shí)間要求較短,可將其他操作移到播放子程序的解碼循環(huán)中,因?yàn)镈/A輸出頻率為8 kHz,所以理論上每次循環(huán)時(shí)其他操作所用時(shí)間只要在0.125 ms以下就不會(huì)影響語(yǔ)音播放。

  4結(jié)束語(yǔ)

  本文實(shí)現(xiàn)了基于凌陽(yáng)SPCE061A的通用漢字文本語(yǔ)音播放系統(tǒng)。實(shí)際應(yīng)用中還有一些細(xì)節(jié)問(wèn)題要考慮,多音字可用讀音相同的漢字代替播放;若文本中夾有英語(yǔ)字母,只需在語(yǔ)音資源中加入字母發(fā)音數(shù)據(jù),原理與漢字播音完全相同。本系統(tǒng)的最大優(yōu)點(diǎn)是硬件簡(jiǎn)單,成本低廉,軟件效率高。在播音的同時(shí)還能進(jìn)行其他復(fù)雜的控制操作。

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

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

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

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

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

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(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ì)開幕式在貴陽(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ā)表演講稱,數(shù)字世界的話語(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)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

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