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