??? 摘 要: 簡要介紹了ISD4000系列語音芯片" title="語音芯片">語音芯片的特點(diǎn)及工作原理。根據(jù)其工作特點(diǎn)設(shè)計(jì)了基于AVR單片機(jī)控制、串口" title="串口">串口通信和MP3播放的智能語音錄制系統(tǒng)。詳細(xì)介紹了硬件電路設(shè)計(jì)、軟件實(shí)現(xiàn)和MP3的設(shè)計(jì)以及部分源程序。
??? 關(guān)鍵詞: ISD4002? ATMEGA16L? 串口通信" title="串口通信">串口通信? MP3播放
?
??? 語音電路已經(jīng)被廣泛應(yīng)用于報(bào)告運(yùn)行狀態(tài)、運(yùn)行提示、提示系統(tǒng)操作過程以及故障報(bào)警等功能的實(shí)現(xiàn)中。除了具有輸出接口的功能外,它還具有輸入接口的功能,用于語音識(shí)別、語音記錄等。但是,做為輸出接口應(yīng)用時(shí),語音芯片中必須有已經(jīng)錄好的語音,這就要求有一套快捷、可靠的錄音系統(tǒng)?;谶@方面的考慮筆者設(shè)計(jì)了具有語音錄放功能的智能系統(tǒng)。本系統(tǒng)應(yīng)用串口通信很好地將錄音電路與PC機(jī)連接,克服了手動(dòng)按鍵錄放的缺點(diǎn),并且錄音的地址和長度也有很高的精度,錄音長度可精確到0.1秒。
??? 本系統(tǒng)主要是針對當(dāng)前應(yīng)用較為廣泛的由美國信息存儲(chǔ)器件公司推出的ISD系列語音芯片中的ISD4000系列設(shè)計(jì)的,本文中以ISD4003系列為例,對于其他系列的產(chǎn)品稍加改動(dòng)即可,其設(shè)計(jì)思路基本相同且管腳兼容。
1 ISD 4003語音芯片簡介
??? ISD4003系列芯片的工作電壓3V,單片錄放時(shí)間4~8分鐘,音質(zhì)好,適用于移動(dòng)電話及其他便攜式電子產(chǎn)品中。芯片采用CMOS技術(shù),內(nèi)含振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動(dòng)靜噪及高密度多電平閃爍存儲(chǔ)陣列。芯片設(shè)計(jì)基于所有操作必須由微控制器控制,操作命令可通過串行通信接口(SPI)送入。芯片采用多電平直接模擬量存儲(chǔ)技術(shù),每個(gè)采樣值直接存儲(chǔ)在片內(nèi)閃爍存儲(chǔ)器中,因此能夠真實(shí)自然地再現(xiàn)語音、音樂、音調(diào)和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和“金屬聲”。采樣頻率可為4.0kHz,5.3kHz,6.4kHz,8.0kHz。頻率越低,錄放時(shí)間越長,音質(zhì)則有所下降。片內(nèi)信息存于閃爍存儲(chǔ)器中,可在斷電情況下保存100年(典型值),反復(fù)錄音10萬次。
2 智能錄放系統(tǒng)的設(shè)計(jì)
??? 系統(tǒng)的整體思路是將錄制好的語音內(nèi)容打包成可在MP3中播放的文件,存儲(chǔ)在PC中,通過串口和耳機(jī)插孔將錄放電路和PC機(jī)相連。筆者自行用VB設(shè)計(jì)了MP3軟件用于播放語音文件,在此MP3中用戶可以自行設(shè)置錄放的起始地址和時(shí)間長度。所以本系統(tǒng)的關(guān)鍵是PC機(jī)和錄放電路的通信以及錄放電路的設(shè)計(jì)和各功能的軟件實(shí)現(xiàn)。下面將從錄放系統(tǒng)的硬件設(shè)計(jì)、軟件設(shè)計(jì)" title="軟件設(shè)計(jì)">軟件設(shè)計(jì)兩方面對本系統(tǒng)進(jìn)行詳細(xì)的闡述。
2.1 硬件設(shè)計(jì)
??? 錄放電路是以ATMEL公司的ATMEGA16L為控制核心的,通過串口接收由PC 機(jī)發(fā)送的控制命令,同時(shí)通過SPI接口來控制語音芯片的錄放。其總體電路設(shè)計(jì)框圖如圖1所示。
?
?
??? 由圖1可以看出,核心控制單元通過串行接口從PC機(jī)接收用戶的錄放指令,然后再由單片機(jī)和語音芯片的SPI接口的輸入來控制語音芯片的錄放音。
??? 串行通信接口電路部分選用的是MAXIM公司的MAX3232芯片,這款芯片可以用3V供電且功耗較低。前面提及ISD4003芯片供電電壓是3V,而傳統(tǒng)的MAX232芯片供電大部分為5V,給電路設(shè)計(jì)增加了不必要的麻煩(尤其在布線過程中)。且MAX232比較耐用,不宜燒毀,這使得電路的穩(wěn)定性大大提高(注:在許多資料上MAX3232周邊的四個(gè)電容可以是0.1?滋F的,但經(jīng)筆者多次嘗試,圖2為最佳匹配,不會(huì)出現(xiàn)異常,若加0.1?滋F的電容會(huì)出現(xiàn)莫名的錯(cuò)誤)。圖2中的TXD,RXD分別與ATMEGA16的TXD,RXD連接(見圖3)。
?
?
?
??? 核心控制芯片ATMEGA16L電路如圖3,用的是片內(nèi)的晶振,所以7、8管腳懸空。其JTAG下載口線采用雙排插針。由于此款單片機(jī)性能相當(dāng)穩(wěn)定,所以不需任何仿真模式,直接燒寫程序即可,其內(nèi)部帶有16kB的Flash可反復(fù)擦寫,筆者多次應(yīng)用沒出現(xiàn)過由于燒寫程序而損壞片子的情況,這也是選擇此款單片機(jī)的原因之一。由于其SPI被JTAG占用,所以用單片機(jī)PC口(圖3)來控制語音芯片的SPI接口。其中的LED為錄放指示和上電指示。
??? 語音芯片接口電路部分基本為典型的電路連接如圖4,但在PCB圖中必須注意在語音芯片的電源和地之間加一個(gè)去偶電容,以保護(hù)芯片,并且電容要盡量靠近芯片(注:SPEAK為揚(yáng)聲器接口)。
?
2.2 軟件設(shè)計(jì)
??? 軟件設(shè)計(jì)主要分為兩大部分,一部分是錄放控制和串口通信的單片機(jī)內(nèi)部的程序設(shè)計(jì)" title="程序設(shè)計(jì)">程序設(shè)計(jì),另一部分是VB語言的MP3設(shè)計(jì)。下面分別就這兩部分作簡要的介紹并給出部分程序代碼。
??? 單片機(jī)內(nèi)部的軟件編程是在串口中斷服務(wù)程序中加入判斷,以此來控制語音芯片的錄放和錄放地址、時(shí)間長度等參數(shù)的設(shè)置。在單片機(jī)中筆者使用的是C語言編程,這樣可以提高設(shè)計(jì)的效率但對系統(tǒng)的運(yùn)行不會(huì)帶來任何影響。其主程序流程圖如圖5所示。
?
??? 在圖5的錄放服務(wù)程序中,加入了定時(shí)器中斷,串口中斷的數(shù)據(jù)包中包括錄放音時(shí)間的參數(shù),一旦開始,錄放音定時(shí)器計(jì)數(shù)(以100ms為溢出時(shí)間,這樣系統(tǒng)的錄放時(shí)間精度可以達(dá)到0.1s)。錄放時(shí)間到,則置標(biāo)志停止錄音。以放音為例(注:錄放服務(wù)程序基本相同,只是控制端口的命令不同),其流程圖如圖6所示。
?
??? 系統(tǒng)中錄音流程和放音流程基本相同,在此不作贅述。
??? PC機(jī)MP3的設(shè)計(jì)主要是關(guān)于串口和錄音控件的VB程序設(shè)計(jì),下面給出部分VB程序代碼。其中包括了串口和錄音控件的編程。
′初始化串行口
intPort=1
strSet=″9600,n,8,1″
′frmMain.ctrMSComm.InBufferSize=1024
′frmMain.ctrMSComm.OutBufferSize=512
If Not frmMain.ctrMSComm.PortOpen Then′嘗試打開串行口
???? frmMain.ctrMSComm.CommPort=intPort
???? frmMain.ctrMSComm.Settings=strSet
?????frmMain.ctrMSComm.PortOpen=True′打開串行口
End If
frmMain.ctrMSComm.PortOpen=False ′關(guān)閉串行口
??????
End Sub
錄音控件部分
MediaPlayer1.URL=File1.Path+″″+File1.FileName
Caption=″正在播放:″& File1.Path′要播放的mp3路徑′
??? 筆者所設(shè)計(jì)的智能錄放系統(tǒng)可應(yīng)用于各種語音的錄放,但最終應(yīng)用者的目的還是以錄音為主,如公交車的報(bào)站系統(tǒng)中的語音錄制。筆者所設(shè)計(jì)的這套錄放系統(tǒng)經(jīng)多次實(shí)驗(yàn),證明性能穩(wěn)定、錄放精確,并已經(jīng)應(yīng)用于某警衛(wèi)系統(tǒng)的語音錄制工作中。
參考文獻(xiàn)
[1] ISD4000系列單片語音錄放電路.www.atvoc.com.
[2] 魯奇璞,魏豐.ISD4004-16M語音芯片的循環(huán)錄放電路設(shè)計(jì).電子技術(shù)應(yīng)用,2006,(2).
[3] 梁子伊.ISD4000系列語音芯片的單片機(jī)控制技術(shù).單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002,(2).