新器件新技術 NEW PRODUCT & TECH
用EP7211實現傳呼信息實時語音合成和播放
■ 鄭州解放軍信息工程大學 胡澤明 王鵬
摘 要
關鍵詞
闡述在壹款集成傳呼功能的二合壹PDA系統中,使用嵌入式處理器EP7211實現個人傳呼信
息的實時語音合成和播放的功能,主要包括字符語音庫的建立,字符語音合成算法和Codec
語音中斷服務例程等3部分.
PDA G.729 語音庫 語音合成
引 言
PDA(Personal Digital Assitant,個人數字助理)
是近年來繼尋呼機和移動電話之後,在國內市場迅
速崛起的便攜式電子產品.就其擴展意義來講,它
能夠集成移動計算,電話和網絡等多種功能.根據
不同的應用需求,它可以管理個人信息,提供名片
存儲和日程安排,也可以接收各種尋呼信息(如股
市,天氣預報等).如果是集成通信模塊,還可以
作為移動電話使用,進行無線網絡互聯.廣義的
PDA包括簡單的電子記事本,電子辭典和功能強大
的掌上電腦,它們的主要區別表現在操作系統,存
儲能力,運算速度和數據交換能力等方面.
目前國內傳統PDA產品經過幾年的高速發展
後,市場基本飽和,銷售額出現負增長.不過由於
PDA產品的靈活性,有針對性的行業應用作為壹個
新亮點,開始為人們所關註.經過行業應用改造後
的PDA產品,已經在國內市場大顯身手.文曲星
展現超強的語言翻譯能力,比較適合於大學生和語
言翻譯者使用;藍火系列能實時接收股市信息和
專家點評,適合工薪階層的炒股者.國家信息產業
部已經鼓勵PDA產品在交通,警務,保險等領域
的行業應用和推廣.
分析市場需求,我們研發了集成傳呼功能的,
專門面向鐵路交通行業應用的鐵路交通信息系統
PDA.本PDA系統除了具備傳統PDA的個人名片
管理和辭典檢索等功能外,同時提供交通行業應用
的民航航班查詢,鐵路列車時刻表查詢等功能.
本PDA的尋呼系統實現如下功能:能夠通過尋
呼對列車時刻表,列車晚點信息,列車剩余票額,
股道信息等行業數據進行動態更新.作為另壹個特
色,當接收到個人尋呼時,能夠將尋呼內容實時地
轉換成語音並播放.
下面重點介紹本PDA系統中使用嵌入式處理
器EP7211實現個人尋呼內容的實時語音轉換和播
放.該功能的實現包含前後相關的3個部分:字符
語音庫的建立,字符的語音合成算法和Codec語音
中斷服務例程.
1實現條件和要求
PDA屬於嵌入式應用系統,其同壹般PC機有
很大差別.硬件方面,嵌入式處理器基於RISC體
系結構,壹般工作頻率在幾十MHz,甚至更低;系
統內存容量壹般在幾百KB~幾MB之間;壹般使用
容量小的ROM或者Flash作為硬盤來存儲可執行程
序和數據.軟件方面,PDA系統壹般有專用的嵌入
式操作系統和軟件開發調試移植環境.
個人傳呼信息的特點是單條傳呼信息長度變化
較大,20~50個字符不等.最為常見的是"請回電
話***";傳呼信息涉及到的字符數量較大,字符
語音合成時運算量大,單字符合成後語音數據占用
的存儲空間多;需要事先建立字符語音庫等.
由於具體硬件環境的限制,傳呼信息的特點和
語音合成的要求,該功能能夠實現的前提有:語音
庫占用的空間小;字符合成時速度要快;采用前臺
進行字符語音合成時,以後臺中斷方式進行合成語
音的播放來保證其實時性和連續性.
2具體實現
下面分別介紹字符語音庫的建立,字符語音合成
算法,本PDA系統的框架結構和語音中斷服務例程.
2.1建立字符語音庫
我們選用G.729語音壓縮編碼標準來建立語音
庫.該標準采用的算法是***軛結構的代數碼激勵線
462002.12
新器件新技術 NEW PRODUCT & TECH
性預測(CS-ACELP),是基於CELP(碼激勵線性預
測)編碼模型的算法.這種編碼規範的嚴格性使性
能達到或超過了32 Kbps的G.726 ADPCM編碼,具
有很高的語音質量;同時,它是在語音信號8 KHz
取樣的基礎上得到16 bit線性PCM後進行編碼的,
壓縮後的數據速率僅為8 Kbps,具有相當於8:1的
高壓縮率.其算法延遲少於16 ms.由於G.729編解
碼器能夠實現很高的語音質量和很低的算法延時,
因此被廣泛地應用.
字符語音庫是壹個單字發音語音數據的集合,
各段數據之間相互獨立,不具有相關性.語音庫包
含了國標壹,二級字庫中的所有6763個漢字,10個
阿拉伯數字和26個英文字符的標準普通話語音數
據.每個漢字或字符發音時長為0.65 s,采用8 KHz
抽樣頻率,使用了G.729A語音編碼算法對上述的語
音數據進行壓縮,壓縮後的數據速率為8 Kbps,相
當於具有8:1的高壓縮率.在漢字中,同音字占了
相當大的比例,而在語音合成中對於同音字的處理
是沒有區別的,故近7000個漢字,我們只存儲1123
個不同的發音.經過同音字處理和采用G.729A標準
壓縮字符語音數據,則最終建立的語音庫文件大小
為729 950字節,完全符合本PDA系統的數據存儲
要求;否則,語音庫數據量太大,本PDA系統不
能接受!
建立壹個語音壓縮數據庫的具體步驟如下:
◇ 將數字和常用漢字的標準發音獨立地錄入到
數據文件中,作為基礎數據.使用cooledit2000軟
件完成語音的錄入.
◇ 對於輸入數據,按照每幀10 ms(80個樣點)
的長度,將A_law語音通過簡單換算變成16 bit PCM
數據,作為編碼算法的輸入.
◇ 按照G.729A算法標準,對數據進行編碼.
◇ 將編碼後的數據轉換為二進制比特流,寫
入語音庫文件中.壓縮後數據速率為8 Kbps,具有
相當於8:1的高壓縮率.
用C語言實現這壹過程的程序流程如圖1所示.
字符語音庫的建立是在Windows平臺及Visual
C++編程環境下實現的,最終壓縮處理後數據量的
大小為729 950字節,每個字符語音數據的大小是
650字節.
2.2語音合成
當收到個人傳呼信息時,語音合成程序首先從
指定位置獲取傳呼信息數據,然後在語音庫中查找
每個漢字,阿拉伯數字或者英文字符的發音,重組
壹個數據文件.解碼程序對該文件進行解碼並且輸
出原始語音.語音合成流程如圖2所示.
語音合成過程首先是當前字符在語音庫的定
位.對於10個阿拉伯數字和26個英文字符,將其
放在語音庫開頭.這些字符的查找比較方便.漢字
是2字節存儲,我們依據其區位碼來作為語音庫中
的定位索引.字符語音庫檢索結束後的語音壓縮數
頭文件,全局變量,函數原型的說明
輸入語音文件及壓縮後的碼文件名
初始化編碼器,包括濾波器狀態的初始
化及語音,激勵等緩沖區的初始化
語音文件是否結束
讀1幀語音(80點)(A_Law)
轉換成16bit線性PCM
將參數碼字轉成串行碼
流,再轉成碼字codeword
寫文件
結束
編碼主函數Coder_ld8a()
Y
N
圖1 字符語音庫的建立流程圖
查找語音庫,將尋呼文字信
息替換為壓縮語音文件
解碼器初始化
碼文件是否結束
讀取1幀數據,並
轉換成二進制碼流
解碼主函數
輸出數據變為A_LAW信號
語音播放
結束
Y
N
圖2 語音合成流程圖
47Microcontrollers & Embedded Systems2002.12
新器件新技術 NEW PRODUCT & TECH
據作為該字符解碼過程的輸入.
數據解碼過程可以分為參數解碼和重構信號後
處理2部分.首先要從輸入的數據中提取參數符
號,對這些符號解碼之後,可以獲得相應於10 ms
話音幀的編碼器參數.這些參數包括線性預測系
數,自適應碼本矢量,固定碼本矢量以及它們的增
益.解碼之後的參數用來計算重建語音信號.得到
重構語音信號只有通過後處理過程來對該信號進行
放大,包括後向濾波,高通濾波以及按比例因子擴
大,最後得到原始的語音數據.
字符解碼器原理如圖3所示.
2.3PDA系統的體系結構
PDA系統的硬件體系結構如圖4所示.
PDA系統中嵌入式處理器EP7211進行數據處
理,傳呼解碼芯片接收傳呼信息並進行解碼, LCD
提供數據輸出顯示,觸摸屏提供用戶輸入接口,
Flash用來存儲應用程序和數據,SRAM為程序運行
提供內存空間,電源電路為嵌入式處理器和外圍設
備提供所需要的工作電壓.
嵌入式處理器EP7211是Cirrus Logic公司專門為
低成本,超低功耗的嵌入式應用設計的,包含
ARM7TDMI處理器內核和豐富的外圍接口.外圍接
口有CODEC音頻接口,SPI串行A/D接口,單色LCD
接口,DRAM接口,紅外接口,2個PWM接口,實
時時鐘RTC以及電源檢測接口.EP7211的內核電路
工作在2.5 V,而外圍電路工作在3.3 V;可根據具
體情況對內核的
時鐘進行動態編
程控制,可工作
在18,36,49和74
MHz.另外EP7211
還有3種基本供
電模式:正常操
作(operating),
空閑(idle)和等
待(standby).在
等待模式,主時
鐘被關斷,整個
CPU及相關外圍
(除中斷和RTC)
也關斷,但可通
過中斷或按鈕來
喚醒.
系統軟件開發平臺采用了我們自主開發研制
的,專門面向嵌入式應用系統開發的XGW平臺.
XGW開發平臺采用消息驅動機制,是C語言開發.
它功能強大,模塊化設計,擴展性強,產品升級容
易,總體框架如圖5所示.
圖5全面反應了XGW開發平臺的體系結構,包
括事件消息驅動機制,內存管理,字符和圖形顯示
輸出,圖形組件庫等.圖形組件庫中的編輯框,列
表框,按鈕等為用戶應用程序開發提供了系統應用
編程接口API.不過,XGW平臺對於系統硬件的中
斷響應沒有提供統壹的入口和出口,需要開發人員
單獨處理.XGW開發平臺的消息分為鼠標消息,鍵
盤消息和定時器消息等3類.
2.4語音中斷服務例程
嵌入式處理器EP7211本身提供的外設語音錄放
Codec(coder/decoder)芯片可以實現語音的錄入和
適應碼
向量解碼
增益解碼
固定碼
向量解碼
結構激勵
MA碼增
益預測
11
,GBGA
22
,GBGA
)(nv
間隔延時
p
g^
^
c
g^
11
,CS
22
,CS
)(zP
)(nc
編碼序號
LP綜合
濾波器
)(nu
後濾波器
)(^ns
高通上標定
)(nfs
LSP解碼內插值)(^zALSF
LSP序號
3210
,,,LLLL
每幀
每子幀
210
,,PPP
圖3 字符解碼原理框圖
天線
LCD
觸摸屏
時鐘,復
位,喚醒射頻輸入
FlashSRAM電源管理
串行口
紅外口
傳呼解
碼芯片嵌入式
處理器
EP7211
收音設備
語音錄放電路
圖4 硬件結構
482002.12
新器件新技術 NEW PRODUCT & TECH
播放功能.該模塊提供2個獨立的16字節長的數據
發送和接收緩沖區(FIFO),其為全雙工模式,數
據收發速率是64 kbps.芯片自身提供工作時鐘,定
時脈沖以及數據的串/並和並/串轉換功能.編程
人員通過設置EP7211相應的控制寄存器使能這些項
功能,則每當數據收發緩沖區半慢或者半空時(8
字節),芯片自身就會產生壹次中斷信號供外部處
理.理論計算芯片中斷速率是1 ms/次.
語音播放中斷服務例程主要完成的工作是,當
產生語音中斷時,仍然有數據需要播放,則向語音
數據發送緩沖區FIFO中寫入指定數據,剩下的工
作由Codec芯片本身來完成.中斷服務例程ISR的
偽代碼如下(因為具體實現代碼沒有通用性,故此
處用偽碼描述):
void IRQ_Codec_Handler(void)
{
while(檢測系統狀態寄存器,發現語音芯片數據發送緩
沖區FIFO非滿)
{
if(已經播放過的語音數據長度 = 給定的需要播
放的語音數據長度) //結束
{
禁止數據發送緩沖區中斷;
復位各相關的全局變量;
程序返回;
}
}
else
{
向語音芯片發送數據緩沖區FIFO寫入默認數據
系統調用
通用開
發控件字符輸出圖形輸出
內存管理用戶自
定義控件
事件消息驅動
硬件中斷
執行
ISR
中斷返回
硬件中斷
執行
ISR
中斷返回
用戶級應用程序
圖5 XGW平臺的軟件體系結構
0XFF;
}
}
}3試驗結果和分析
由於在設計階段充分考慮過語音合成算法的
大運算量和系統的實時性要求,故我們在具體實
現的時候也采取了壹些措施,比較突出的有:用
ARM匯編語言來實現關鍵性的函數代碼;語音合
成時提高處理器EP7211的工作頻率(處理器正常
工作頻率是18 MHz);對於壹些常用的三角函數計
算,采用查表的方式等來加快程序執行速度.在
PDA樣機測試中,單字符合成時間在650 ms左右,
基本上能夠滿足實際應用需求.數據語音庫經過
處理之後,占用了729 560字節也能夠滿足本PDA
系統的存儲要求.
當PDA系統收到1條個人傳呼信息時,在語音
庫的支持下,立刻啟動語音合成算法,逐個進行字
符語音合成.當第1個字符語音合成結束後,立刻
啟動語音中斷服務例程進行語音播放.這樣收到的
個人傳呼信息,在前臺逐個字符解碼時,其後臺語
音播放也在進行.根據實際測試參數,基本上滿足
了系統的實時性要求.
從壹定角度看,單字符650 ms的語音合成時間
基本能夠滿足實際應用需要,但還是希望能夠進壹
步減小這個值.這由於我們對ARM處理器的使用
還處在研究階段.ARM本身提供了16位的Thumb
指令集和32位的ARM指令集,而且兩者在某些方
面表現出較大差別.壹般來講,Thumb代碼長度是
ARM代碼長度的65%,而執行效率要比後者高出
60%.但在某些方面,32位的ARM指令集也會表
現出其優於16位Thumb指令集的強大功能;同時
該處理器系統支持ARM指令集和Thumb指令集混
合編程模式.隨著對二者差別和各自優勢的深入理
解,結合本系統的硬件體系結構,采用有效的指令
集混合編程模式將會使程序執行效率進壹步提高,
從而使實時性得到進壹步加強.
參考文獻
1Cirrus Logic公司. EP7211數據手冊
2馬忠梅. ARM嵌入式處理器結構與應用基
礎. 北京:北京航空航天大學出版社,2002
3Gibson Jerry D,等. 多媒體數字壓縮原理與
標準. 李煜暉等譯. 北京:電子工業出版社,2000