用ISD器件實(shí)現(xiàn)現(xiàn)場語音分段錄音與隨機(jī)組合放音
摘要:在分析了ISD語音處理器件在工作機(jī)制的基礎(chǔ)上,介紹了用單片機(jī)跟蹤各語音段的地址變化和記錄各段起止地址以及根據(jù)各段的地址進(jìn)行隨機(jī)組合放音的方法。提出了通用的硬件設(shè)計(jì)方案,給出了實(shí)際應(yīng)用的電路圖和軟件流程??偨Y(jié)了使用ISD器件的注意事項(xiàng)。
本文引用地址:http://cafeforensic.com/article/242262.htm關(guān)鍵詞:ISD語音處理器件 信息段 單片機(jī) 定時(shí)器 中斷
對一些語音內(nèi)容不固定并要求現(xiàn)場錄音和放音的系統(tǒng),采用一般語音芯片實(shí)現(xiàn),錄放音的質(zhì)量難以控制。美國ISD(Information Storage Devices)公司的ISD系列芯片采用直接模擬存儲專利技術(shù),把語音信號以原始的模擬形式直接存儲在片內(nèi)EEPROM存儲器中,無需進(jìn)行A/D轉(zhuǎn)換和壓縮處理等,從而減少了失真、大大提高了錄放音質(zhì)量,并具有抗斷電、音質(zhì)好、使用方便、可反復(fù)錄放、無需專用的語音開發(fā)工具、能隨意列改內(nèi)容和耗電省等優(yōu)點(diǎn),很適合于現(xiàn)場錄放音系統(tǒng)。
但是ISD器件只有地址輸入線,在分段錄放音時(shí),其內(nèi)部各語音段的地址無法直接讀出。雖然通過專用的ISD開發(fā)設(shè)備可以讀出地址,但無法實(shí)現(xiàn)現(xiàn)場多次重復(fù)的錄放音操作,不具有實(shí)時(shí)性。我們在實(shí)踐中,通過分析ISD的工作原理和內(nèi)部特性,用單片機(jī)的定時(shí)中斷來計(jì)算各段的時(shí)長和起始地址,從而實(shí)現(xiàn)了分段錄音與組合放音。該方法已應(yīng)用在電纜故障自動(dòng)定位儀中。
1 ISD 2500系列芯片簡介
ISD公司的2500系列芯片,按錄放時(shí)間60秒、75秒、90秒和120秒分成ISD2560、2575、2590和25120四個(gè)型號。ISD器件設(shè)有OVF(溢出)端,便于多個(gè)器件級聯(lián)。
ISD2500系列片內(nèi)EEPROM容量都為480K,最多能分600段。四個(gè)型號的不同錄放時(shí)間是靠不同的輸入采樣率來實(shí)現(xiàn)的,它們分別為:8.0、6.4、5.3、4.0kHz。
DIP器件封裝為28腳,各引腳功能如下:
1~7 A0/M0~A6/M6地址/模式選擇
8~10 A7~A9輸入地址線
11 AUX IN輔助輸入
12、13 VSSD、VSSA數(shù)字地和模擬地
14、15 SP+、SP-揚(yáng)聲器輸出
16 VCCA模擬信號電源正極
17、18 MIC、MIC REF 麥克風(fēng)輸入端和輸入?yún)⒖级?/p>
19 AGC自動(dòng)增益控制
20、21 ANA IN、ANA OUT 模擬信號輸入和輸出
22 OUF 溢出
23 CE 片選(低電平允許芯片工作)
24 PD 芯片低功耗狀態(tài)控制
25 EOM 錄放音結(jié)束信號輸出
26 XCLK 外部時(shí)鐘
27 P/R 錄/放控制選擇
28 VCCD 數(shù)字信號電源正極
2 工作原理
2500系列有10個(gè)地址輸入端A0~A9,錄址能力可達(dá)1024位,地址空間為0~1023。其分配情況是:地址0~299作為分段用,地址600~767未使用,地址768~1023為工作模式選擇(即A8、A9均為高)。2500系列的地址線有兩種用途,一是作為工作模式控制,二是作為分段錄放音的起始段地址。當(dāng)最高位地址(MSB)A8、A9都為高電平時(shí)(即地址768~1023),地址端A0~A6就作為工作模式選擇端M0~M6,對應(yīng)7種工作模式。當(dāng)A8、A9任一位為低或都為低時(shí)(即地址0~599),只要在分段錄/放音操作前(不少于300ns)給地址A0~A9賦值,操作就從該地址開始。
2500系列語音芯片將480K的EEPROM分為600個(gè)信息段,每段800個(gè)字節(jié)。作為一個(gè)整體單位進(jìn)行尋址和控制,應(yīng)給每個(gè)信息段分配一個(gè)供外部控制的地址,而不是對每個(gè)字節(jié)進(jìn)行尋址,否則至少需要19個(gè)地址端口。這樣,大大減少了信息檢索所需要的地址線。對較長的語音信號可以跨越多個(gè)信息段進(jìn)行錄音,不受內(nèi)部存儲信息段的限制,且內(nèi)部的信息段址會自動(dòng)增加。在每個(gè)語音段的尾部自動(dòng)增加一個(gè)結(jié)束標(biāo)志EOM,組合放音時(shí),通過檢測EOM來控制各語音段的結(jié)束和下一段的開始。
每個(gè)信息段的錄放音時(shí)間等于總時(shí)間除以600。如ISD2560的總時(shí)間為60s,則每個(gè)信息段的錄放音時(shí)間為100ms;ISD25120的總時(shí)間為120s,則每個(gè)信息段的時(shí)間為200ms。因此可以利用該時(shí)間長度作為一個(gè)段地址,通過單片機(jī)定時(shí)器的計(jì)時(shí)平行地映射信息段的地址,從而得到每段錄音的起始地址。這樣,就需要設(shè)置一個(gè)地址計(jì)數(shù)器。一般錄音從0地址開始,首先通過CPU將它賦給A0~A9,然后通過單片機(jī)控制ISD啟動(dòng)錄音,同時(shí)啟動(dòng)單片機(jī)的定時(shí)器開始計(jì)時(shí),每到一個(gè)信息段的時(shí)間,就給地址計(jì)數(shù)加1。當(dāng)單片機(jī)停止控制ISD錄音時(shí),同時(shí)停止定時(shí)器計(jì)時(shí)。此時(shí)地址計(jì)數(shù)器的值即為該段語音的未地址,加1即為下一段語音的首地址,并將它存在EEPROM中,為下一將放音提供的地址信息。通過CPU將該地址賦給A0~A9,即可錄制下一段語音。依次下去,即可在錄制完所有語音段的同時(shí)得到各段的起始地址。如果不是從0地址開始的語音段,只需將初始地址賦給A0~A9,加上地址計(jì)數(shù)器的值,即可得到語音段的末地址。這里不用同時(shí)保存各語音段的起始地址和結(jié)束地址,因?yàn)楦鱾€(gè)段是相鄰的,前一段的末地址加1即是本段的起始地址,且每個(gè)語音段的結(jié)尾均有EOM標(biāo)志,并可發(fā)出中斷。放音時(shí)利用它和保存在EEPROM中各語音段的起始地址即可按任意順序組合各個(gè)語音段。
3 硬件電路設(shè)計(jì)
系統(tǒng)硬件電路框圖如圖1所示。ISD器件選用錄音時(shí)間為120s的ISD25120器件,以單片機(jī)為處理機(jī),外接控制每個(gè)語音段錄音開始與停止按鍵,外部存儲器EEPROM用于保存每個(gè)語音首地址。ISD的外圍電路及其與單片機(jī)連接的硬件電路如圖2所示。
ISD與89C51的接口部分包含輸入地址線A0~A9、片選CE(CE=0選中ISD芯片)、芯片低功耗狀態(tài)控制PD、錄放音控制選擇P/R(P/R=0為錄音;P/R=1為放音)、錄放音結(jié)束信號輸出EOM,將它作為89C51外部中斷0的輸入信號,放音時(shí)通過它告知本語音段結(jié)束,便于單片機(jī)立即播放另一個(gè)語音段;我們需要的語音總時(shí)間小于120s,溢出端VOF未用;若需要總時(shí)間大于120s,可經(jīng)級聯(lián)多個(gè)ISD25120,此時(shí)需要使用溢出端VOF。ISD25120一共需要11根控制線和一個(gè)外部是中斷口,這里11根控制線使用89C51的P1和P3的部分端口,若系統(tǒng)中其它電路占用了部分P1,則可使用其它I/O口擴(kuò)展器件(如82C55、373等)的擴(kuò)展I/O口來控制ISD25120。ISD25120的其它管腳所連電路為典型外圍器件配置,用于模擬語音的輸入輸出。
4 軟件設(shè)計(jì)
按照前面的分析和硬件原理圖,軟件部分主要涉及啟動(dòng)錄音和停止錄音、啟動(dòng)放音和停止放音、檢測EOM信號的外部中斷0、定時(shí)中斷等六個(gè)子程序模塊。播放語音時(shí),語音段尾的EOM信號觸發(fā)外部中斷0,進(jìn)入服務(wù)子程序。首先停止語音播放,然后設(shè)置下一段語音播放標(biāo)志。各個(gè)語音段的組合播放順序由主程序根據(jù)外部情況或設(shè)置情況自動(dòng)變動(dòng),如在電纜故障自動(dòng)定位儀中,測試出故障點(diǎn)后,根據(jù)故障點(diǎn)的距離組合存放數(shù)字的各個(gè)語音段進(jìn)行播放。定時(shí)中斷采用工作方式2,定時(shí)周期為5ms。為產(chǎn)生ISD25120每個(gè)信號段的200ms時(shí)間,設(shè)置一個(gè)定時(shí)計(jì)數(shù)器,計(jì)滿40次定時(shí)周期即得到200ms的時(shí)間,產(chǎn)生一次中斷。六個(gè)子程序模塊的軟件流程如圖3~圖8所示。
5 本方法的特點(diǎn)
(1)能進(jìn)行在系統(tǒng)現(xiàn)場錄音,隨錄隨放,修改語音方便。
(2)修改錄音內(nèi)容時(shí),可以從其中任意一段開始,修改其后的所有錄音內(nèi)容,不必從第一段開始全部修改。這對一些需要廠家固定一些語音段的系統(tǒng)很有好處,將固定的語音段放置在前面的段落中,允許用戶錄制的放在后面,用戶修改錄音內(nèi)容時(shí)只需修改后面的語音段即可,不影響廠家錄制的語音。
(3)分段靈活。單片ISD可分1~600個(gè)段,若多片級聯(lián)還可更多;各個(gè)錄音段的長度任意,只要總錄音時(shí)間在所用器件的總時(shí)間之內(nèi)即可。工
(4)價(jià)格便宜。錄制語音時(shí),只需用軟件立即可得到各段的地址進(jìn)行錄音,不需專用的設(shè)備。
6 使用ISD器件應(yīng)注意的幾個(gè)問題
(1)ISD語音段尾的EOM標(biāo)志并不是器件檢測到語音結(jié)束時(shí)自動(dòng)產(chǎn)生,實(shí)際是通過控制器件的工作方式來停止錄音而產(chǎn)生的。在錄音狀態(tài)下將CE和PD置高時(shí),則停止錄音,在語音段尾產(chǎn)生EOM標(biāo)志;同時(shí)ISD器件在播放時(shí)遇到段尾的EOM時(shí)也并不自動(dòng)停止播放,必須用中斷捕捉它后,再用軟件停止播放。
(2)ISD器件的音頻信號輸出功率很小,并不能直接驅(qū)動(dòng)揚(yáng)聲器,需要加音頻功放,如LM386。同時(shí)ISD送出的信號直流分量,直接加在LM386上,會使它處于飽和狀態(tài),無聲音輸出,需要通過電容耦合送入LM386,隔斷直流。
(3)ISD的CE、P/R、PD在接控制信號時(shí),一定要保證復(fù)位時(shí)為高電平。否則上電或復(fù)位時(shí)全為低,恰好處于錄音狀態(tài),會沖掉芯片中原來的錄音。
評論