文獻標識碼: A
文章編號: 0258-7998(2012)01-0115-03
語音播報系統(tǒng)在兒童玩具,、計算器,、學(xué)習(xí)機、迎賓器,、公交報站以及智能儀器儀表等設(shè)備中得到廣泛應(yīng)用,。以往的語音播報系統(tǒng)中通常采用ISD系列的語音模塊,其缺點是價格較高,,電路設(shè)計較復(fù)雜,,控制方式不夠靈活,且常常因為在線錄音會引入很強的噪聲,,嚴重影響放音效果,。而本文使用的WT588D模塊性價比較高,存儲容量大,,使用專用下載軟件能夠在線燒寫音頻文件,,操作極其方便,,并支持6 kS/s~20 kS/s采樣率的音頻加載,,可以無損展現(xiàn)音頻信息,。
1 WT588D模塊簡介
WT588D模塊是廣州創(chuàng)科有限公司與臺灣華邦公司共同研發(fā)的集單片機,、語音電路,、SPI-Flash存儲器于一體的可編程語音系統(tǒng),。該語音系統(tǒng)支持6 kS/s~22 kS/s采樣頻率的音頻,,具有220個可控制的語音地址,,且每個地址還可以分成128段管理,。配合WT-APP上位機操作系統(tǒng)軟件和專用的USB下載器,可以隨意設(shè)置系統(tǒng)的控制方式,、語音地址和分段信息,支持語音信息在線燒錄。
WT588D模塊支持MP3控制模式,、按鍵控制模式,、并口模式,、一線串口模式及三線SPI模式。模塊內(nèi)部集成了DSP高速音頻處理器,,內(nèi)置13 bit數(shù)模轉(zhuǎn)換器以及12 bit PWM輸出方式,,可以無損地展現(xiàn)音頻信息。PWM輸出方式可以直接驅(qū)動0.5 W/8 Ω揚聲器,,無需額外的驅(qū)動電路[1],。
2 語音播報系統(tǒng)設(shè)計
2.1 語音文件的提取
語音文件的提取有2種常用方法:(1)從錄制的文件中提取;(2)利用文字轉(zhuǎn)語音軟件提取。
從錄制的文件中提取語音的步驟為:首先通過錄音軟件或通過手機錄制wav格式的音頻文件(例如包括0~9,、時,、分、秒等信息),,然后打開GoldWave音頻編輯軟件,在原始wav格式文件中找到要截取的語音段,,通過鼠標選擇復(fù)制粘貼到新文件中即可。在該軟件中還可以對音頻進行合并,、降噪,、濾波等特效處理。
利用SoundToWav文字轉(zhuǎn)語音軟件,,使得音頻文件提取更方便,。該軟件利用TTS(Text To Speech)即語音合成技術(shù),可以將任意文字轉(zhuǎn)換成語音文件,。為了得到較好的音質(zhì),,采用了ChineseMandarinVoice語音引擎,該引擎的中文女聲音色較好,基本接近真人發(fā)聲水平,。在SoundToWav軟件中選擇該語音引擎并選中按行分割文件方式,輸入要轉(zhuǎn)換的文字信息,,點擊轉(zhuǎn)換即可生成音頻文件,。
以上兩種方法中,第一種方法的真人錄制語音更自然生動更具有感染力,,但容易引入噪聲干擾,,音效相對較差些。而文字轉(zhuǎn)語音噪聲低,、語音清晰,、音質(zhì)好、操作方便,,但是由于采用的是TTS語音合成方式,,聲音缺少飽滿,缺乏真人的朗讀效果,。
2.2 系統(tǒng)硬件設(shè)計
本文選擇了WT588D模塊的SPI三線連接方式,。為說明對語音模塊的控制過程,,以完成播報當前按鍵次數(shù)的功能為例。圖1為系統(tǒng)框圖,,包括單片機最小系統(tǒng),、一個獨立按鍵、WT588D語音模塊和與其配套使用的下載接口,。在設(shè)計中,,需要先通過WT588D VoiceChip上位機軟件,將已經(jīng)提取的音頻文件下載到SPI-Flash存儲器的相應(yīng)地址段,,并記錄好地址與語音的對照表,,方便放音時進行地址調(diào)用。圖2為系統(tǒng)電路圖,,由于語音模塊供電的特殊要求,,通過AMS1117模塊完成5 V~3 V的電壓轉(zhuǎn)換;通過PWM直接驅(qū)動方式連接0.5 W/8 Ω揚聲器,;通過發(fā)光二極管觀察語音芯片的忙信號狀態(tài),;單片機采用獨立按鍵方式。
2.3 系統(tǒng)軟件設(shè)計
三線串口控制模式由片選CS,、時鐘SCK和數(shù)據(jù)DATA組成,,時序仿照標準SPI通信方式[2],具體時序如圖3所示,。
采用上位機軟件對SPI-Flash存儲器25PXX燒寫語音程序時,,選擇三線串口控制模式。語音模塊的P01口被定義為DATA數(shù)據(jù)口,,P02為CS片選口,,P03為CLK時鐘口,單片機通過3個控制口對WT588D語音模塊進行控制,。三線串口控制模式下其他的I/O口均無效,。P17端為BUSY忙信號輸出端,可設(shè)置為播放狀態(tài)LED點亮和播放狀態(tài)LED熄滅,。SPI-Flash存儲器25PXX的電壓范圍要保證在2.8 V~3. 5 V之間,,VDD-SIM為WT588D語音芯片的串口電源管理輸入端,將25PXX的VCC連接到此端,,可自動平衡WT588D與25PXX之間的串口電壓,。PWM輸出端禁止接電容到地或直接接地,系統(tǒng)工作為VDD=5 V,VCC=3.3 V,。
基于SPI通信時序[3-4]編寫如下通信子函數(shù),,根據(jù)參數(shù)address的值可以播放對應(yīng)的語音段(注意傳數(shù)時低位在前)。
void send_adr(unsigned char address)
{
unsigned char i;
RESET=0;
delay1ms(3);
RESET=1;
delay1ms(17); /* 17ms*/
CS=0;
delay1ms(2);
for(i=0;i<8;i++)
{
SCLK=0;
If(address&1) /* low post before high*/
DATA=1;
else
DATA=0;
address >>=1;
delay1us(50);
SCLK=1;
delay1us(50);
}
CS=1;
}
主函數(shù)完成對獨立按鍵的掃描過程,,其中delay1ms(10)的作用為延時去抖動,,key_mark為鍵標志,,可以實現(xiàn)按鍵的一次響應(yīng)[5]。
void main(void)
{
while(1)
{
if(!set&&!key_mark)
{
delay1ms(10);
if(!set)
{
key();
key_mark=1;
}
}
else if(set)
key_mark=0;
}
按鍵響應(yīng)函數(shù)key()可實現(xiàn),,每次有鍵按下后,,計數(shù)變量n++一次,通過對n值判斷進行語音播報,。當n為10以內(nèi)數(shù)字時,,直接播放n號段的語音;當n介于10~20之間時,,先播放‘10’的語音再播放個位的語音,;當n介于20~100之間時,先播放十位數(shù)字的語音,,再播放‘10’的語音,,最后播放個位的語音。
void key()
{ n++; //Number keys
if(n<11)
send_adr(n);
else if(n>10&n<20)
{
send_adr(10); //the voice of ten
while(!BUSY); //waiting for BUSY=1
if(n%10)
send_adr(n%10); // units′digit
}
else
{
send_adr(n/10); // tens′digit
while(!BUSY);
send_adr(10);
while(!BUSY);
if(n%10)
send_adr(n%10);
}
while(!BUSY);
}
本文以單片機為控制核心,,詳細描述了使用WT588D模塊播報語音信息的具體實現(xiàn)過程,,包括語音文件提取、硬件電路設(shè)計,、通信協(xié)議分析,、按鍵掃描、語音播報地址拆分等部分,。與采用ISD系列語音芯片相比,,WT588D模塊的性價比較高,音質(zhì)較好,,易于分段管理,,能夠提供豐富的工作方式,給系統(tǒng)設(shè)計帶來了較大的靈活性,。本系統(tǒng)整體結(jié)構(gòu)簡單,、音質(zhì)優(yōu)美、成本低廉,、功能擴展方便,可以作為基于WT588D模塊設(shè)計的模板應(yīng)用到多個相關(guān)領(lǐng)域,,并依據(jù)本文稍加修改即可進行功能擴展,。
參考文獻
[1] 廣州市唯創(chuàng)科技有限公司.WT588D08/16使用資料[EB/OL]. [2011-07-22] http://www.w1999c.com/UploadFiles/2011311155241593.pdf.
[2] 徐博,郭秋敏.基于SPI協(xié)議的音頻流解碼系統(tǒng)的研究與設(shè)計[J].工礦自動化,2011,34(1):45-49.
[3] 劉玉瓊.基于WT588D語音提示系統(tǒng)設(shè)計[J].企業(yè)科技與發(fā)展,2010,26(22):99-102.
[4] 裘有斌,張國忠,陳豐偉,等.基于ISD4004的家庭語音報警服務(wù)系統(tǒng)的設(shè)計[J].電子制作,2008,16(2):40-42.
[5] 王春武,李巖,孟祥英,等.C51中對按鍵的處理方法[J].吉林師范大學(xué),2007(4):86-87.