《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > ISD4004系列器件語音拷貝系統(tǒng)的設計

ISD4004系列器件語音拷貝系統(tǒng)的設計

2008-07-17
作者:魯奇璞,, 魏 豐

  摘 要: 介紹了ISD4004系列語音芯片" title="語音芯片">語音芯片,,分析了芯片語音信息分段的內部形成機制及特征,提出了獲取內部地址的方法;在此基礎上采用地址拷貝法,,開發(fā)設計出了語音拷貝系統(tǒng),,并給出了軟件設計,、硬件設計和部分應用程序;最后通過測試驗證了系統(tǒng)的可行性,。
  關鍵詞: ISD4004 語音拷貝 語音信息段 地址拷貝


1 ISD4004語音芯片介紹
  ISD系列語音芯片是Winbond公司推出的產品。該芯片采用多電平直接模擬存儲專利技術,,聲音不需要A/D轉換和壓縮,,模擬信號直接存儲在片內的閃爍存儲器中,沒有A/D 轉換誤差,, 因此能夠真實,、自然地再現(xiàn)語音、音樂及效果聲,。避免了傳統(tǒng)錄音電路量化和壓縮造成的量化噪聲和金屬聲,。
  ISD4004系列語音芯片的所有操作由微控制器控制,操作命令通過串行通信接口(SPI或Microwire)送入,。錄音采樣頻率可為4.0Hz,、5.3Hz、6.4Hz,、8.0Hz,,錄放時間可為8min、10min,、12min,、16min。采樣頻率越低,,錄放時間越長,,但音質則有所下降。片內信息存于閃爍存儲器中,,可在斷電情況下保存100年,,反復錄音10萬次(典型值)。器件工作電壓為3V,,工作電流為15~25mA,,維持電流為1μA。適用于移動電話機及其它便攜式電子產品中,。
  本文以ISD4004-8MP(錄放時間為8min,,PDIP封裝)語音芯片為例,介紹了語音拷貝系統(tǒng)的設計,。
  (聲明:本系統(tǒng)僅供測試使用,未經許可復制他人音頻內容,,造成的侵權行為,,由使用者自己承擔;在使用本系統(tǒng)過程中造成的語音信息的失真,、缺損及其它內容變更等責任,,由使用者自己承擔,。)
2 ISD4004語音拷貝系統(tǒng)的設計
  系統(tǒng)設計的整體思路是用錄制好語音的器件(母片)放音,待拷貝的器件(子片)錄音,。其關鍵在于確??截惓龅淖悠Z音信息和母片完全一致,為此采用地址拷貝法,。首先母片放音一遍,,確認母片的語音信息地址,建立地址索引表,;在母片放音的同時,,子片同步進行錄制拷貝,即在子片相同的地址處進行相應語音信息的錄制,。地址拷貝法確保了母片和子片的語音信息地址完全一致,。下面分軟件和硬件電路兩部分進行介紹。
2.1 軟件的設計
2.1.1 母片語音地址的確定

  母片語音地址的確定是整個設計的重點,。ISD器件的地址不是通常意義上的字節(jié)地址單元,,而是內部存儲器的行地址。行是語音信息段的基本組成單位,。以ISD4004-8MP為例,,它內部的3840K閃爍存儲器單元共分為1600行,每個地址單元指向其中的一行,,即有1600個行地址單元,。ISD4004-8MP的錄放時間為八分鐘,采樣頻率為8kHz,,因此它的每行語音長度為200ms,,即地址分辨率為200ms。
  ISD器件可以進行多段錄放操作,,每一段稱為一個語音信息段,。一個語音信息段由其起始地址、記錄的數(shù)據和信息結束標志EOM(表示一個語音信息段的結束)三部分組成,。ISD器件出廠時,,其內部存儲器的一行已經設計有多個可能的EOM標志位置。ISD4004系列一行有八個,,第一個位于行起始后的25ms處,,第八個位于行結束處,剩下EOM標志間隔25ms均勻分布,。錄音停止后,,向器件發(fā)送STOP命令,錄音的進程不會馬上停止,,到了下一個最近的可能EOM標志位置時,,用一個EOM標志寫入器件來記錄語音結束的位置,。這樣做可以使錄音的進程在盡可能短的時間內停止。在實際應用中,,一行最多只能有一個EOM標志說明語音信息段的結束,,無論這個標志在哪里,下一條語音信息將從新的一行開始,。所以一個語音信息段可以占用一行或多行存儲空間,,可以包括多個地址單元;一個地址單元最多只能作為一個獨立的段,。ISD4004最多可以分為1600個語音信息段,。
  ISD器件存儲陣列中的每一行都可以獨立尋址。錄放操作都是從一行的行首開始,,可以一直持續(xù)到行尾,,自動無縫跳轉到下一行開始,繼續(xù)錄放,。不同之處在于放音時,,遇到EOM標志時,放音自動停止,,產生中斷,;錄音時,需要向器件發(fā)送STOP命令,,寫入一個EOM標志,,結束錄音。
  放音時,,每播放一行語音,,產生一個RAC周期信號。每個RAC周期表示ISD存儲器操作進行了一行,。該信號保持175ms的高電平,,低電平為25ms。該端可以用于存儲器管理,。ISD在播放和快進操作中檢測到EOM或者OVF標志(表明ISD錄放操作已經達到存儲器的末尾)時,,都會產生中斷,變低并保持,。中斷狀態(tài)在下一個SPI周期時清除,,也就是說每播放完一個語音信息段,便會產生中斷,。因此,,RAC和配合,可以確定每個語音段的起始和結束地址。在硬件設計中,,母片ISD4004的引腳接單片機的外部中斷" title="外部中斷">外部中斷INT0引腳,母片ISD404的RAC引腳接單片機的外部中斷INT1引腳,,通過外部中斷INT0的中斷程序,,判斷語音信息段的結束,通過外部中斷INT1的中斷程序,,記錄播放的行數(shù)目(即行地址),,那么下一個地址就是新的語音信息段的開始地址。這樣可通過中斷服務程序,,獲取每個語音信息段的地址,,然后建立地址索引表,記錄其起始地址,。
2.1.2 各種子程序" title="子程序">子程序的設計
  為了便于編程,,對ISD器件的操作都需要設計相應的子程序。其中有:POWERUP(上電" title="上電">上電),、SETPLAY(從指定地址開始放音),、PLAY(從當前地址開始放音)、SETREC(從指定地址開始錄音),、REC(從當前地址開始錄音),、SETRMC(從指定地址開始快進)、MC(從當前地址開始快進),、STOP(停止當前操作),、STOPWRDN(停止當前操作并掉電)、RINT(讀狀態(tài)OVF和EOM),。在實際應用中,,針對母片和子片都有相應的子程序。根據器件的手冊,,某些操作必需進行適當?shù)难訒r,。播放和錄音時,還應遵守適當?shù)牟僮鞔涡颉?BR>  (1) POWERUP
  上電操作時,,要等待Tpud(上電延遲)后器件才能工作,。因此,單片機發(fā)送完上電指令后,,必須等待Tpud,,才能發(fā)送其它的指令。對于ISD4004-8MP,,Tpud=25ms,。
  (2) STOP
  在放音或者錄音過程中停止當前操作時,單片機發(fā)送完停止指令后,要等待Tstop后器件才能停止工作,。對于ISD4004-8MP,,Tstop=50ms。
  (3) 為了達到較好的放音和錄音質量,,錄音和放音時,,建議采用下面的操作順序:
  放音時:①發(fā)送POWERUP命令;②等待Tpud,;③從指定地址播放時發(fā)送SETPLAY命令,,從當前地址播放時發(fā)送PLAY命令;④結束放音時發(fā)送STOP命令或者等待播放操作檢測到EOM或者OVF時自動停止,。⑤等待Tstop,。
  錄音時:①發(fā)送POWERUP命令;②等待Tpud,;③再次發(fā)送POWERUP命令,;④等待2倍Tpud;⑤從指定地址錄音時發(fā)送SETREC命令,;從當前地址錄音時發(fā)送REC命令,;⑥發(fā)送STOP命令,結束錄音,;⑦等待Tstop,。
2.1.3 拷貝程序的設計
  拷貝前,先把母片語音完全播放一遍,,建立地址索引表,。母片語音地址確定后,可以開始語音拷貝,。通過相關子程序,,從母片地址索引表中調入不同語音段的地址,開始播放,,子片在相同的地址開始錄音,。播放到一個語音段結束時,母片檢測到EOM標志,,放音結束,,并產生中斷,單片機調用中斷程序,,向子片發(fā)送STOP命令,,寫入EOM標志,表示語音結束,。延時Tstop,,跳出中斷后,,記錄已經錄制的語音數(shù)目,并調入下一條語音的地址,,重復進行操作,,直到地址表查詢完畢或者母片檢測到OVF標志,表示全片放音結束,,錄音結束,。


2.2 硬件電路的設計
  系統(tǒng)硬件電路圖如圖1所示。主要由單片機AT89C51,、電源轉換芯片MAX603、有關按鍵和跳線,、兩片同型號ISD4004-8MP(一片為母片,,一片為子片)和運放μA741等組成。硬件設計時,,要注意以下幾個方面:
  (1)單片機引腳模擬SPI接口,,編程時應注意其時序。
  (2)母片INT和RAC引腳分別接單片機外部中斷INT0和INT1,,應有上拉電阻,。
  (3)芯片采用+3V電源供電,放音時最大消耗電流為30mA,,錄音時最大消耗電流為40mA,,因此ISD芯片要有獨立的電源提供穩(wěn)定的供電。設計中采用MAX603電壓轉換芯片,。
  (4)錄音時輸入信號既可采用單端輸入(信號接在同相模擬輸入端ANA IN+),,也可采用差分輸入(信號同時接在同相模擬輸入端ANA IN+和反相模擬輸入端ANA IN-)。采用單端輸入時,,輸入信號的峰峰值最大為32mV,,此時器件輸出AUD OUT的峰峰值大約為450mV。為了擁有較好的音質,,需要對母片的聲音輸出進行衰減,,再通過去耦電容" title="去耦電容">去耦電容,接到子片的同相模擬輸入端ANAIN+,。而反相模擬輸入端ANAIN-則通過去耦電容接地,。兩個去耦電容大小值應相同。
  (5)同型號芯片互相拷貝,,應使用ISD器件的內部時鐘,,即XCLK接地;采用音質優(yōu)先模式,,保障拷貝出的器件不會出現(xiàn)語速失真的情況,。
  (6)為了使噪聲最小,器件的模擬電路和數(shù)字電路應使用不同的電源總線,并且分別引到外封裝的不同引腳上,,模擬電源和數(shù)字電源最好分別走線,,盡可能在靠近電源處相連,去耦電容應盡量靠近器件,。器件內部的模擬電路和數(shù)字電路也應使用不同的地線,。幾個Vssa盡量在引腳焊盤上相連,并且用低阻通路連到地線上,,Vssd也用低阻通路連接到地線上,。
3 系統(tǒng)測試
  拷貝完畢后,對錄制的子片進行測試,。系統(tǒng)采用夾具設計,,把母片和子片取出,把子片放在母片的位置,,通過更改相應的跳線,,使系統(tǒng)工作在放音模式下。采用順序播放(即語音按照順序連續(xù)播放)方法,,確認錄入子片的全部語音信息,。按地址播放(按照母片的地址索引表從子片的相應地址逐條播放)方式,確認子片語音信息地址和母片完全一致,。通過測試,,子片語音信息地址與母片完全一致,語音質量接近于母片質量,,達到了較好的效果,。
  經測試,本系統(tǒng)適用于ISD4004系列的全部型號,,只需要在程序中更改為各自型號的Tpud和Tstop即可,。原則上,同型號和時間長度的ISD語音芯片都可以用本系統(tǒng)拷貝,,但由于不同型號器件每行語音長度(即地址分辨率)不同,,它們之間的拷貝可能會出現(xiàn)未知的問題。
4 部分程序
  下面是語音拷貝和播放的部分程序,。
  …………
  ;偽定義
  SPI_SS1 EQU P1.0
  SPI_MOSI1 EQU P1.1
  SPI_MISO1 EQU P1.2
  SPI_SCLK1 EQU P1.3
  SPI_SS2 EQU P1.4
  SPI_MOSI2 EQU P1.5
  SPI_MISO2 EQU P1.6
  SPI_SCLK2 EQU P1.7
  ISD_STOP_KEY EQU P0.0
  ISD_EN_KEY EQU P0.1
  ISD_PR_KEY EQU P0.2

  …………
  ;初始化單片機
  LCALL INIT_MCU

  ;初始化母片ISD4004,,延時Tpud
  ;ISD1_×× 為母片子程序
  LCALL ISD1_POWERUP
  LCALL DELAY_25MS

  ;初始化子片ISD4004,兩次上電
  ;ISD2_×× 為子片子程序
  LCALL ISD2_POWERUP
  LCALL DELAY_25MS
  LCALL ISD2_POWERUP
  LCALL DELAY_25MS
  LCALL DELAY_25MS

  ;主程序,,判斷是否開始操作
  MAINLOOP:
  JB ISD_EN_KEY, MAINLOOP
  ;判斷播放還是拷貝
  JB ISD_PR_KEY, ISD_PLAY1
  JNB ISD_PR_KEY, ISD_COPY1

  ;置中斷標志
  SETB FLG_ISD_INT

  ;拷貝程序
  ;從語音信息地址調用子程序ISD_ADDRESS_COPY,,
  ;從索引表中調入地址
  ISD_COPY1:
  LCALL ISD_ADDRESS_COPY
  ;  從指定地址開始播放和錄音
  LCALL ISD1_SETPLAY
  LCALL ISD2_SETREC
  ;從當前地址開始播放和錄音
  LCALL ISD1_PLAY
  LCALL ISD2_REC

  ;判斷是否手動結束拷貝操作
  ISD_COPY2:
  JNB ISD_STOP_KEY, ISD_COPY3
  ;判斷一段語音是否播放完畢,是否中斷處理完畢
  ;播放完畢重置中斷標志
  JB FLG_ISD_INT, ISD_COPY2
  SETB FLG_ISD_INT
  ;延遲Tstop
  LCALL DELAY_25MS
  LCALL DELAY_25MS
  ;記錄拷貝個數(shù),,×× 為需要拷貝的語音數(shù)目
  ;判斷是否拷貝完畢,,未完則繼續(xù)拷貝
  INC COPY_CNTR
  MOV A, COPY_CNTR
  CJNE A, ××, ISD_COPY1

  ;拷貝結束,,返回主程序
  ISD_COPY3:
  LCALL ISD1_STOP
  LCALL ISD2_STOP
  LJMP MAINLOOP

  ;播放程序,順序播放方式
  ;設置從地址00開始進行播放
  ISD_PLAY1:
  MOV ISD_ADRESS_H, #00H
  MOV ISD_ADRESS_L, #00H
  LCALL ISD1_SETPLAY
  ;開始播放
  ISD_PLAY2:
  LCALL ISD1_PLAY

  ;判斷是否手動結束播放
  ISD_PLAY3:
  JNB ISD_STOP_KEY, ISD_PLAY4
  ;判斷一段語音是否播放完畢,,是否中斷處理完畢
  ;播放完畢重置中斷標志
  JB FLG_ISD_INT, ISD_PLAY3
  SETB FLG_ISD_INT
  ;繼續(xù)播放
  JMP ISD_PLAY2

  ;播放結束
  ISD_PLAY4:
  LCALL ISD1_STOP
  LJMP MAINLOOP
  …………
  拷貝出的子片已經應用在排隊管理系統(tǒng)的語音部分,。在實際使用中,子片完全可以替代母片,,效果良好,。本系統(tǒng)不但解決了ISD4004系列器件的語音錄制問題,而且復制出的器件地址完全一致,,與傳統(tǒng)的錄制方法相比,,有很大的優(yōu)勢。
參考文獻
1 ISD4004 Series Single-Chip Multiple-Messages Voice Record/Playback Devices 8-, 10-, 12-, and 16-Minute Duration. Winbond Electronics Corp., 2004
2 The ISD Chipcorder Product Line: Sizes, Row Lengths and Other Useful Drtails for Address Able ISD Products.Winbond Electronics Corp., 2000
3 劉 欣,,安欣賞,,劉大生,許鳴宇.ISD語音器件分段地址的獲取.電子技術應用,,1999;25(10):64~65

本站內容除特別聲明的原創(chuàng)文章之外,,轉載內容只為傳遞更多信息,,并不代表本網站贊同其觀點。轉載的所有的文章,、圖片,、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者,。如涉及作品內容,、版權和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。