丁繼成,賈春
哈爾濱工程大學(xué)自動化學(xué)院,黑龍江哈爾濱 150001
大容量音頻實(shí)時錄放系統(tǒng)的設(shè)計(jì)研究
丁繼成,賈春
哈爾濱工程大學(xué)自動化學(xué)院,黑龍江哈爾濱 150001
為滿足大容量實(shí)時錄放音頻需求,同時保證音質(zhì)和信息完整性,設(shè)計(jì)了基于DSP、音頻編解碼芯片、存儲介質(zhì)SD卡的大容量音頻實(shí)時錄放系統(tǒng)軟硬件方案。通過通用IO口模擬SPI協(xié)議實(shí)現(xiàn)了無集成SPI接口環(huán)境下的SD卡實(shí)時讀寫,解決了系統(tǒng)的大容量問題。重點(diǎn)在詳細(xì)測試分析單緩沖錄放方案的基礎(chǔ)上,提出采用乒乓緩沖和定時中斷技術(shù)解決音頻錄放實(shí)時性問題。實(shí)際測試表明,由該方案形成的系統(tǒng)錄放音質(zhì)良好,實(shí)時性高,能夠滿足大容量存儲應(yīng)用需求。
音頻錄放;DSP;FatFs文件系統(tǒng);乒乓緩沖技術(shù)
錄放技術(shù)在眾多領(lǐng)域如旅游業(yè)、制造業(yè)、服務(wù)業(yè)等扮演了重要角色。比如,電子導(dǎo)游系統(tǒng)、語音報警系統(tǒng)、公交報站系統(tǒng)等都體現(xiàn)了錄放系統(tǒng)技術(shù)的應(yīng)用。語音報警系統(tǒng)、公交報站系統(tǒng)等只需將語音信息預(yù)先存儲,不需后續(xù)改動;但電子導(dǎo)游系統(tǒng)的設(shè)計(jì)需要考慮兩方面因素:一是景點(diǎn)信息量大,系統(tǒng)必須具有大容量的存儲能力;二是考慮到景點(diǎn)性質(zhì)多樣,解說風(fēng)格各異,預(yù)先很難保存健全的景區(qū)信息,需要系統(tǒng)能實(shí)時更新信息,進(jìn)行信息的替換與新增,提高系統(tǒng)的自主性、便攜性、可擴(kuò)展性?,F(xiàn)行的錄放方案有很多,常采用集成語音芯片[1-2]和微處理器+編解碼芯片+存儲器[3-4]這2種數(shù)字化解決方案。前者優(yōu)點(diǎn)在于集成度高,音質(zhì)好,可以保證實(shí)時性,缺點(diǎn)是集成容量有限,不能實(shí)現(xiàn)超長時間的錄放功能;后者優(yōu)點(diǎn)在于系統(tǒng)可擴(kuò)展性強(qiáng),系統(tǒng)組合靈活,保證容量需求,音質(zhì)好,實(shí)時性高,但缺點(diǎn)是代碼量多,開發(fā)難度大。為解決上述容量和語音信息變更等因素,提出一種大容量實(shí)時音頻錄放系統(tǒng)的設(shè)計(jì)研究。
為了同時滿足大容量和實(shí)時性的要求,采用第2種實(shí)現(xiàn)方案,設(shè)計(jì)了基于微處理器+編解碼芯片+SD卡的組合,采用乒乓緩沖和定時中斷結(jié)合技術(shù),很好地解決了上述問題。這一研究不僅在電子導(dǎo)游系統(tǒng)領(lǐng)域,在語音信箱、錄音筆、MP3等領(lǐng)域也有非常重要的應(yīng)用價值。
1.1 硬件設(shè)計(jì)方案
系統(tǒng)硬件平臺基于TI公司生產(chǎn)的DSP系列中的TMS320VC5509A型號作為錄放系統(tǒng)的主控平臺,其內(nèi)部集成McBSP(多緩沖串口)、I2C(雙總線接口)等控制器;完成音頻模數(shù)轉(zhuǎn)換功能的芯片選用與DSP接口相兼容的編解碼芯片TLV320AIC23,此芯片是TI公司推出的一款高性能立體聲音頻編解碼器;由于SD卡具有超大的記憶容量、快速的存儲速率、極大的靈活性等優(yōu)點(diǎn),被選作系統(tǒng)的存儲媒介。總體的硬件設(shè)計(jì)如圖1所示。
圖1 模塊總體框圖
利用DSP提供的McBSP和I2C控制器與AIC23編解碼芯片進(jìn)行無縫連接,完成控制字與數(shù)據(jù)信息的傳輸,實(shí)現(xiàn)音頻錄音、耳機(jī)播放等功能;SD卡的控制操作遵循SPI協(xié)議,由DSP進(jìn)行控制。TMS320VC5509A芯片沒有集成SPI控制器,需要利用通用IO口模擬SPI協(xié)議,控制SD卡進(jìn)行音頻文件的存取工作[5]。
1.2 軟件設(shè)計(jì)方案
系統(tǒng)軟件設(shè)計(jì)主要包括系統(tǒng)底層程序設(shè)計(jì)和功能程序設(shè)計(jì)2部分。其系統(tǒng)的軟件設(shè)計(jì)流程如圖2所示。
圖2 系統(tǒng)存儲音頻軟件流程圖
1.2.1 底層程序初始化
DSP程序初始化:主要包括確定工作頻率,設(shè)置存儲區(qū),配置McBSP、I2C控制器參數(shù),初始化設(shè)置GPIO通用IO口、定時中斷等,使系統(tǒng)工作在正常狀態(tài)[6]。
音頻編解碼初始化:主要包括音頻采樣率、采樣位數(shù)、工作模式等的配置,完成音頻錄放的接口程序。
SD卡的初始化:主要包括GPIO模擬SPI控制器,SD卡的字節(jié)讀寫、塊讀寫的基本程序設(shè)計(jì),為后續(xù)文件系統(tǒng)的移植提供讀寫接口。
1.2.2 功能程序設(shè)計(jì)
FatFs文件系統(tǒng)是一種完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計(jì)[7]。本文使用了FatFs Module模塊的最新版本R0.09b。其移植程序在SD卡初始化的基礎(chǔ)上,針對DSP的硬件平臺完成文件系統(tǒng)的接口函數(shù)的設(shè)計(jì),通過對文件系統(tǒng)的相關(guān)宏定義的增減,可以簡化系統(tǒng)程序,以此完成文件系統(tǒng)的移植。實(shí)現(xiàn)對SD卡中音頻文件的有效管理,有效地解決了系統(tǒng)容量大、文件復(fù)雜,難以索引的問題。存儲在SD卡中的音頻文件可被電腦、MP3等智能終端所識別,進(jìn)行后續(xù)處理。
在實(shí)現(xiàn)音頻錄放功能時,為保證音質(zhì)保真性和錄放實(shí)時性,要求系統(tǒng)必須具有恒定的采樣率,并保證音頻存取和編解碼模塊在運(yùn)行時不發(fā)生沖突。有方案采用雙控制器來實(shí)現(xiàn)[8],這樣不但浪費(fèi)資源,還增加了硬件的成本,所以考慮采用乒乓緩沖[9]和定時中斷相結(jié)合的技術(shù)來完成音頻信息的錄放過程,解決DSP串行處理時,導(dǎo)致緩沖區(qū)訪問沖突或音頻信息丟失的現(xiàn)象,這也是實(shí)現(xiàn)此方案的關(guān)鍵技術(shù)。
如果錄放時間不長,存儲量不高,此方案可采用單緩沖技術(shù)。編解碼芯片接口直接與內(nèi)存通信,開辟存儲空間建立緩沖區(qū),完成音頻信息的存取。系統(tǒng)只需單線程:音頻錄放。但文章研究內(nèi)容為大容量、實(shí)時性錄放系統(tǒng),此技術(shù)只能解決音頻錄放的問題,限于內(nèi)存空間,容量需求無法達(dá)到。因而,外部存儲介質(zhì)采用SD卡存取音頻信息實(shí)現(xiàn)大容量需求。但外部存儲器不同于內(nèi)存,不能直接實(shí)現(xiàn)數(shù)據(jù)定位,所以實(shí)現(xiàn)功能需要雙線程參與:音頻錄放和信息存取。針對單緩沖技術(shù)的不足,系統(tǒng)的雙線程運(yùn)行,在設(shè)計(jì)中提出乒乓緩沖與定時中斷結(jié)合的方式,有效解決上述問題的同時,降低了微處理器性能需求,提高了運(yùn)行效率,保證了實(shí)時性。
2.1 單緩沖實(shí)時錄放測試分析
采用單緩沖區(qū)技術(shù)來設(shè)計(jì),在數(shù)據(jù)空間中設(shè)置緩沖區(qū)A,其原理圖如圖3所示。
圖3 單緩沖區(qū)設(shè)計(jì)
基于單緩沖技術(shù)的系統(tǒng)軟硬件完成后進(jìn)行測試分析,得出以下結(jié)論。如果在程序設(shè)計(jì)中同時進(jìn)行雙線程,會出現(xiàn)緩沖區(qū)訪問沖突,嚴(yán)重時會導(dǎo)致系統(tǒng)崩潰;如果程序設(shè)定了先后的執(zhí)行順序,在主程序執(zhí)行存取任務(wù)時,暫時關(guān)閉定時器,利用極快的速度來完成存取,然后打開定時器,恢復(fù)音頻采樣,此方法顯然會出現(xiàn)音頻信息丟失現(xiàn)象,不能滿足實(shí)時性的要求。通過實(shí)驗(yàn)測得基于此方法的錄放系統(tǒng)的音頻波形如圖4所示。
圖4 原音頻文件與單緩沖技術(shù)波形對比
從圖中分析可知,采用單緩沖技術(shù),錄制文件存在嚴(yán)重丟失音頻信息現(xiàn)象,其波形失真很大,實(shí)際播放時,出現(xiàn)嚴(yán)重的噪聲,實(shí)驗(yàn)測試表明此方法實(shí)時性差,不能達(dá)到長時間實(shí)時音頻錄制的目的,僅能用于短時間音頻錄放領(lǐng)域。
2.2 乒乓緩沖實(shí)時錄放技術(shù)
在數(shù)據(jù)空間中設(shè)置2個緩沖空間A和B,其工作原理圖如圖5所示。
圖5 乒乓緩沖區(qū)的設(shè)計(jì)
首先將SD卡的內(nèi)容寫到緩沖空間A中,緩沖區(qū)滿后,啟動AIC23在中斷程序處理中對緩沖區(qū)A進(jìn)行讀寫操作,同時主程序需要完成SD卡寫緩沖空間B的操作,由于SD卡的一般讀寫速度可達(dá)2 MB/s以上,所以一定比AIC23音頻編解碼的處理速度快。每當(dāng)AIC23對其緩沖區(qū)的數(shù)據(jù)處理完成后,會產(chǎn)生相應(yīng)的結(jié)束標(biāo)志,由主程序進(jìn)行檢測,判斷是對A還是B緩沖區(qū)進(jìn)行操作。當(dāng)AIC23對緩沖區(qū)A操作完后,將會轉(zhuǎn)換處理地址到緩沖區(qū)B(SD卡的數(shù)據(jù)已經(jīng)完成傳輸),這樣不斷實(shí)現(xiàn)緩沖區(qū)A與B的切換,保證AIC23的數(shù)據(jù)連續(xù),實(shí)現(xiàn)音頻信號的不間斷傳輸,解決音頻錄放失真的現(xiàn)象,達(dá)到完美錄放效果。
在程序的設(shè)計(jì)中,由于SD存取速度快,還需要考慮SD卡對緩沖區(qū)重復(fù)處理,影響音頻質(zhì)量的問題,因而在存取流程中增加了切換緩沖標(biāo)志的判斷,避免了這樣的問題。如圖6所示是系統(tǒng)音頻錄入的軟件程序流程圖,其播放的程序設(shè)計(jì)思想與其相似。
圖6 系統(tǒng)音頻錄入程序流程圖
采用乒乓緩沖與定時中斷技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了系統(tǒng)的軟硬件平臺,通過PC機(jī)播放一段音頻文件,將音頻信息由LINE IN接口送到錄放系統(tǒng)進(jìn)行功能測試。
其實(shí)驗(yàn)結(jié)果顯示,錄音音質(zhì)良好,實(shí)時性高,不失真,達(dá)到了音頻錄放的目的。通過優(yōu)質(zhì)音頻編輯軟件Adobe Audition及MATLAB軟件,觀察音頻的時域波形可以得到相應(yīng)的結(jié)果如圖7所示。
圖7 原音頻文件與乒乓緩沖技術(shù)波形對比
在圖中可以清晰地看到兩者波形相似,只在振幅、中心線存在偏差,其主要原因在于AIC23的電壓基準(zhǔn)和量化誤差的影響,但不影響錄音音質(zhì);同時在波形對比中,也觀察到存在微小的音頻丟失現(xiàn)象,但這不會影響音頻質(zhì)量和實(shí)時性要求,主要是由于定時中斷與原文件采樣率有偏差所造成,可以通過調(diào)整定時中斷時間來減少丟失問題。
考慮到音頻信號的復(fù)雜度,時域波形不能全面分析信號的特性。因而,利用MATLAB對音頻信號進(jìn)行FFT,得到各音頻信號的頻譜分析[10]如圖8所示。
圖8 音頻信號的頻譜分析
通過圖8也可以看出,乒乓緩沖技術(shù)的頻譜所包含的頻率范圍、強(qiáng)度與原音頻文件基本一致,但單緩沖技術(shù)的頻譜明顯有較大失真,不能達(dá)到既定要求。
針對錄放系統(tǒng)為滿足大容量與實(shí)時性的問題,文章提出并設(shè)計(jì)實(shí)現(xiàn)了基于乒乓緩沖技術(shù)和定時中斷的硬件方案,通過理論分析與實(shí)際測試結(jié)果證明:
1)此方案設(shè)計(jì)合理,達(dá)到了預(yù)期目標(biāo)。
2)系統(tǒng)支持大容量SD卡,建立文件系統(tǒng),其音頻文件的通用性提高,有效提高系統(tǒng)文件的兼容性。
3)由于系統(tǒng)采用乒乓緩沖與定時中斷相結(jié)合的技術(shù),保證了系統(tǒng)的需求,降低了對內(nèi)存容量和處理速度的要求,提高了系統(tǒng)利用率。
該方案不僅可用于電子導(dǎo)游系統(tǒng)領(lǐng)域達(dá)到自主錄放的目的,而且能夠應(yīng)用于其他語音服務(wù)領(lǐng)域如工控系統(tǒng)、自動應(yīng)答系統(tǒng)、智能化儀表、辦公系統(tǒng)等,具有良好的實(shí)際應(yīng)用價值。
[1]范寒柏,陳旭升,李雪梅.基于ISD4000系列芯片智能錄放系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2007(11):44-46,49.
[2]彭希南.基于SPI接口的ISD4104系列語音錄放芯片及其應(yīng)用[J].微型機(jī)與應(yīng)用,2000(9):24-26.
[3]史明泉.基于DSP的語音錄放系統(tǒng)的設(shè)計(jì)[J].無線電工程,2011(12):53-55.
[4]何蘇勤,徐家艷.基于定點(diǎn)DSP語音錄放系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,26:148-150,200.
[5]李世奇,董浩斌,李榮生.基于FatFs文件系統(tǒng)的SD卡存儲器設(shè)計(jì)[J].測控技術(shù),2011,12:79-81.
[6]陳泰紅,任勝杰,魏宇.手把手教你學(xué)DSP:基于TMS320C55x[M].北京:北京航空航天大學(xué)出版社,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的數(shù)字壓縮語音錄放系統(tǒng)[J].電子設(shè)計(jì)應(yīng)用,2004(9):129-130.
[9]李武森,遲澤英,陳文建.高速DSP圖像處理系統(tǒng)中的乒乓緩存結(jié)構(gòu)研究[J].光電子技術(shù)與信息,2005(3):76-79.
[10]吳雄英.語音信號頻譜分析儀的設(shè)計(jì)[D].成都:電子科技大學(xué),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.
國家自然科學(xué)基金資助項(xiàng)目(61304234,61273081).
丁繼成(1980-),男,講師,博士;賈春(1991-),男,碩士研究生.
丁繼成,E-mail:aaron.heu@163.com.