丁繼成,賈春
哈爾濱工程大學自動化學院,黑龍江哈爾濱 150001
大容量音頻實時錄放系統的設計研究
丁繼成,賈春
哈爾濱工程大學自動化學院,黑龍江哈爾濱 150001
為滿足大容量實時錄放音頻需求,同時保證音質和信息完整性,設計了基于DSP、音頻編解碼芯片、存儲介質SD卡的大容量音頻實時錄放系統軟硬件方案。通過通用IO口模擬SPI協議實現了無集成SPI接口環境下的SD卡實時讀寫,解決了系統的大容量問題。重點在詳細測試分析單緩沖錄放方案的基礎上,提出采用乒乓緩沖和定時中斷技術解決音頻錄放實時性問題。實際測試表明,由該方案形成的系統錄放音質良好,實時性高,能夠滿足大容量存儲應用需求。
音頻錄放;DSP;FatFs文件系統;乒乓緩沖技術
錄放技術在眾多領域如旅游業、制造業、服務業等扮演了重要角色。比如,電子導游系統、語音報警系統、公交報站系統等都體現了錄放系統技術的應用。語音報警系統、公交報站系統等只需將語音信息預先存儲,不需后續改動;但電子導游系統的設計需要考慮兩方面因素:一是景點信息量大,系統必須具有大容量的存儲能力;二是考慮到景點性質多樣,解說風格各異,預先很難保存健全的景區信息,需要系統能實時更新信息,進行信息的替換與新增,提高系統的自主性、便攜性、可擴展性。現行的錄放方案有很多,常采用集成語音芯片[1-2]和微處理器+編解碼芯片+存儲器[3-4]這2種數字化解決方案。前者優點在于集成度高,音質好,可以保證實時性,缺點是集成容量有限,不能實現超長時間的錄放功能;后者優點在于系統可擴展性強,系統組合靈活,保證容量需求,音質好,實時性高,但缺點是代碼量多,開發難度大。為解決上述容量和語音信息變更等因素,提出一種大容量實時音頻錄放系統的設計研究。
為了同時滿足大容量和實時性的要求,采用第2種實現方案,設計了基于微處理器+編解碼芯片+SD卡的組合,采用乒乓緩沖和定時中斷結合技術,很好地解決了上述問題。這一研究不僅在電子導游系統領域,在語音信箱、錄音筆、MP3等領域也有非常重要的應用價值。
1.1 硬件設計方案
系統硬件平臺基于TI公司生產的DSP系列中的TMS320VC5509A型號作為錄放系統的主控平臺,其內部集成McBSP(多緩沖串口)、I2C(雙總線接口)等控制器;完成音頻模數轉換功能的芯片選用與DSP接口相兼容的編解碼芯片TLV320AIC23,此芯片是TI公司推出的一款高性能立體聲音頻編解碼器;由于SD卡具有超大的記憶容量、快速的存儲速率、極大的靈活性等優點,被選作系統的存儲媒介。總體的硬件設計如圖1所示。

圖1 模塊總體框圖
利用DSP提供的McBSP和I2C控制器與AIC23編解碼芯片進行無縫連接,完成控制字與數據信息的傳輸,實現音頻錄音、耳機播放等功能;SD卡的控制操作遵循SPI協議,由DSP進行控制。TMS320VC5509A芯片沒有集成SPI控制器,需要利用通用IO口模擬SPI協議,控制SD卡進行音頻文件的存取工作[5]。
1.2 軟件設計方案
系統軟件設計主要包括系統底層程序設計和功能程序設計2部分。其系統的軟件設計流程如圖2所示。

圖2 系統存儲音頻軟件流程圖
1.2.1 底層程序初始化
DSP程序初始化:主要包括確定工作頻率,設置存儲區,配置McBSP、I2C控制器參數,初始化設置GPIO通用IO口、定時中斷等,使系統工作在正常狀態[6]。
音頻編解碼初始化:主要包括音頻采樣率、采樣位數、工作模式等的配置,完成音頻錄放的接口程序。
SD卡的初始化:主要包括GPIO模擬SPI控制器,SD卡的字節讀寫、塊讀寫的基本程序設計,為后續文件系統的移植提供讀寫接口。
1.2.2 功能程序設計
FatFs文件系統是一種完全免費開源的FAT文件系統模塊,專門為小型的嵌入式系統而設計[7]。本文使用了FatFs Module模塊的最新版本R0.09b。其移植程序在SD卡初始化的基礎上,針對DSP的硬件平臺完成文件系統的接口函數的設計,通過對文件系統的相關宏定義的增減,可以簡化系統程序,以此完成文件系統的移植。實現對SD卡中音頻文件的有效管理,有效地解決了系統容量大、文件復雜,難以索引的問題。存儲在SD卡中的音頻文件可被電腦、MP3等智能終端所識別,進行后續處理。
在實現音頻錄放功能時,為保證音質保真性和錄放實時性,要求系統必須具有恒定的采樣率,并保證音頻存取和編解碼模塊在運行時不發生沖突。有方案采用雙控制器來實現[8],這樣不但浪費資源,還增加了硬件的成本,所以考慮采用乒乓緩沖[9]和定時中斷相結合的技術來完成音頻信息的錄放過程,解決DSP串行處理時,導致緩沖區訪問沖突或音頻信息丟失的現象,這也是實現此方案的關鍵技術。
如果錄放時間不長,存儲量不高,此方案可采用單緩沖技術。編解碼芯片接口直接與內存通信,開辟存儲空間建立緩沖區,完成音頻信息的存取。系統只需單線程:音頻錄放。但文章研究內容為大容量、實時性錄放系統,此技術只能解決音頻錄放的問題,限于內存空間,容量需求無法達到。因而,外部存儲介質采用SD卡存取音頻信息實現大容量需求。但外部存儲器不同于內存,不能直接實現數據定位,所以實現功能需要雙線程參與:音頻錄放和信息存取。針對單緩沖技術的不足,系統的雙線程運行,在設計中提出乒乓緩沖與定時中斷結合的方式,有效解決上述問題的同時,降低了微處理器性能需求,提高了運行效率,保證了實時性。
2.1 單緩沖實時錄放測試分析
采用單緩沖區技術來設計,在數據空間中設置緩沖區A,其原理圖如圖3所示。

圖3 單緩沖區設計
基于單緩沖技術的系統軟硬件完成后進行測試分析,得出以下結論。如果在程序設計中同時進行雙線程,會出現緩沖區訪問沖突,嚴重時會導致系統崩潰;如果程序設定了先后的執行順序,在主程序執行存取任務時,暫時關閉定時器,利用極快的速度來完成存取,然后打開定時器,恢復音頻采樣,此方法顯然會出現音頻信息丟失現象,不能滿足實時性的要求。通過實驗測得基于此方法的錄放系統的音頻波形如圖4所示。

圖4 原音頻文件與單緩沖技術波形對比
從圖中分析可知,采用單緩沖技術,錄制文件存在嚴重丟失音頻信息現象,其波形失真很大,實際播放時,出現嚴重的噪聲,實驗測試表明此方法實時性差,不能達到長時間實時音頻錄制的目的,僅能用于短時間音頻錄放領域。
2.2 乒乓緩沖實時錄放技術
在數據空間中設置2個緩沖空間A和B,其工作原理圖如圖5所示。

圖5 乒乓緩沖區的設計
首先將SD卡的內容寫到緩沖空間A中,緩沖區滿后,啟動AIC23在中斷程序處理中對緩沖區A進行讀寫操作,同時主程序需要完成SD卡寫緩沖空間B的操作,由于SD卡的一般讀寫速度可達2 MB/s以上,所以一定比AIC23音頻編解碼的處理速度快。每當AIC23對其緩沖區的數據處理完成后,會產生相應的結束標志,由主程序進行檢測,判斷是對A還是B緩沖區進行操作。當AIC23對緩沖區A操作完后,將會轉換處理地址到緩沖區B(SD卡的數據已經完成傳輸),這樣不斷實現緩沖區A與B的切換,保證AIC23的數據連續,實現音頻信號的不間斷傳輸,解決音頻錄放失真的現象,達到完美錄放效果。
在程序的設計中,由于SD存取速度快,還需要考慮SD卡對緩沖區重復處理,影響音頻質量的問題,因而在存取流程中增加了切換緩沖標志的判斷,避免了這樣的問題。如圖6所示是系統音頻錄入的軟件程序流程圖,其播放的程序設計思想與其相似。

圖6 系統音頻錄入程序流程圖
采用乒乓緩沖與定時中斷技術,設計并實現了系統的軟硬件平臺,通過PC機播放一段音頻文件,將音頻信息由LINE IN接口送到錄放系統進行功能測試。
其實驗結果顯示,錄音音質良好,實時性高,不失真,達到了音頻錄放的目的。通過優質音頻編輯軟件Adobe Audition及MATLAB軟件,觀察音頻的時域波形可以得到相應的結果如圖7所示。

圖7 原音頻文件與乒乓緩沖技術波形對比
在圖中可以清晰地看到兩者波形相似,只在振幅、中心線存在偏差,其主要原因在于AIC23的電壓基準和量化誤差的影響,但不影響錄音音質;同時在波形對比中,也觀察到存在微小的音頻丟失現象,但這不會影響音頻質量和實時性要求,主要是由于定時中斷與原文件采樣率有偏差所造成,可以通過調整定時中斷時間來減少丟失問題。
考慮到音頻信號的復雜度,時域波形不能全面分析信號的特性。因而,利用MATLAB對音頻信號進行FFT,得到各音頻信號的頻譜分析[10]如圖8所示。

圖8 音頻信號的頻譜分析
通過圖8也可以看出,乒乓緩沖技術的頻譜所包含的頻率范圍、強度與原音頻文件基本一致,但單緩沖技術的頻譜明顯有較大失真,不能達到既定要求。
針對錄放系統為滿足大容量與實時性的問題,文章提出并設計實現了基于乒乓緩沖技術和定時中斷的硬件方案,通過理論分析與實際測試結果證明:
1)此方案設計合理,達到了預期目標。
2)系統支持大容量SD卡,建立文件系統,其音頻文件的通用性提高,有效提高系統文件的兼容性。
3)由于系統采用乒乓緩沖與定時中斷相結合的技術,保證了系統的需求,降低了對內存容量和處理速度的要求,提高了系統利用率。
該方案不僅可用于電子導游系統領域達到自主錄放的目的,而且能夠應用于其他語音服務領域如工控系統、自動應答系統、智能化儀表、辦公系統等,具有良好的實際應用價值。
[1]范寒柏,陳旭升,李雪梅.基于ISD4000系列芯片智能錄放系統設計[J].電子技術應用,2007(11):44-46,49.
[2]彭希南.基于SPI接口的ISD4104系列語音錄放芯片及其應用[J].微型機與應用,2000(9):24-26.
[3]史明泉.基于DSP的語音錄放系統的設計[J].無線電工程,2011(12):53-55.
[4]何蘇勤,徐家艷.基于定點DSP語音錄放系統的設計[J].微計算機信息,2006,26:148-150,200.
[5]李世奇,董浩斌,李榮生.基于FatFs文件系統的SD卡存儲器設計[J].測控技術,2011,12:79-81.
[6]陳泰紅,任勝杰,魏宇.手把手教你學DSP:基于TMS320C55x[M].北京:北京航空航天大學出版社,2011:4-25.
[7]ChaN.FatFs-Generic FAT file system module.[EB/OL].[2014-01-08].http://elm-chan.org/fsw/ff/00index_e.ht-ml.
[8]周克良,楊麗榮.基于TMS320C5402的數字壓縮語音錄放系統[J].電子設計應用,2004(9):129-130.
[9]李武森,遲澤英,陳文建.高速DSP圖像處理系統中的乒乓緩存結構研究[J].光電子技術與信息,2005(3):76-79.
[10]吳雄英.語音信號頻譜分析儀的設計[D].成都:電子科技大學,2008:24-35.
Design of large capacity real-time audio recording system
DING Jicheng,JIA Chun
College of Automation,Harbin Engineering University,Harbin 150001,China
In order to satisfy the demand of high capacity recording and playing of audio in real timewhile ensuring the tone quality and information integrity,a scheme is presented for hardware and software of a large capacity real-time audio recording system based on digital signal processing(DSP),audio codec chip,and storagemedium SD card.In order to solve the problem of large capacity system,the general IO port is used to simulate SPI protocol to achieve writing and reading through SD card in real-time under non-integrated SPI environment.The emphasis of this paper is to solve the real-time problem of audio recording and playing by the Ping-Pong buffer and timer inter-rupt technology,on the basis of testing and analyzing single buffer recording and playing scheme.The actual test shows that the sound quality recorded by this scheme is good with high real-time performance,therebymeeting the application requirement of large capacity storage.
audio recording and playing system;digital signal processing;FatFs file system;Ping-Pong buffer technique
TN912.3
:A
:1009-671X(2015)01-045-04
10.3969/j.issn.1009-671X.201403015
http://www.cnki.net/kcms/detail/23.1191.U.20150112.1530.009.htm l
2014-03-24.
日期:2015-01-12.
國家自然科學基金資助項目(61304234,61273081).
丁繼成(1980-),男,講師,博士;賈春(1991-),男,碩士研究生.
丁繼成,E-mail:aaron.heu@163.com.