版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第7章凌陽音頻壓縮算法261第7章凌陽音頻壓縮算法7.1背景介紹7.1.1音頻的概述(特點,分類)我們所說的音頻是指頻率在20Hz20kHz的聲音信號,分為:波形聲音,語音和音樂三種,其中波形聲音就是自然界中所有的聲音,是聲音數(shù)字化的基礎(chǔ).語音 也可以表示為波形聲音,但波形聲音表示不出語言,語音學(xué)的內(nèi)涵.語音是對講話聲的一次抽象.是語言的載體,是人類社會特有的一種信息系統(tǒng),是社會交際工具的 符號.音樂與語音相比更規(guī)范一些,是符號化了的聲音.但音樂不能對所有的聲音進 行符號化.樂譜是符號化聲音的符號組,表示比單個符號更復(fù)雜的聲音信息內(nèi)容. 7.1.2數(shù)字音頻的采樣和量化將模擬的(連續(xù)的)聲音波形
2、數(shù)字元化(離散化),以便利數(shù)字計算機進行處理 的過程,主要包括采樣和量化兩個方面.數(shù)字音頻的質(zhì)量取決于:采樣頻率和量化位數(shù)這兩個重要參數(shù).此外,聲道的數(shù)目,相應(yīng)的音頻設(shè)備也是影響音頻質(zhì)量的原因.7.1.3音頻格式的介紹音頻文件通常分為兩類:聲音文件和MIDI文件(1) 聲音文件:指的是通過聲音錄入設(shè)備錄制的原始聲音,直接記錄了真實聲音 的二進制采樣數(shù)據(jù),通常文件較大;(2) MIDI文件:它是一種音樂演奏指令序列,相當(dāng)于樂譜,可以利用聲音輸出設(shè) 備或與計算機相連的電子樂器進行演奏,由于不包含聲音數(shù)據(jù),其文件尺寸較小.1) 聲音文件的格式WAV文件*.WAVWAV文件使用三個參數(shù)來表示聲音,它們
3、是:采樣位數(shù),采樣頻率和聲道數(shù). 在計算機中采樣位數(shù)一般有8位和16位兩種,而采樣頻率一般有11025Hz(11KHz),22050Hz(22KHz),44100Hz(44KHz)三種.我們以單聲道為例,則一般 WAV文 件的比特率可達到88K704Kbps具體介紹如下:(1) WAVE格式是Microsoft公司開發(fā)的一種聲音文件格式,它符合RIFF(Resource InterchangeFileFormat) 文件規(guī)范;第7章凌陽音頻壓縮算法262用于保存Windows平臺的音頻信息資源,被Windows平臺及其應(yīng)用程序所廣 泛支持.WAVE格式支持MSADPCM,CCITTALaw,C
4、CITTI和其它壓縮算法,支持多種音頻位數(shù),采樣頻率和聲道,是PC機上最為流行的聲音文件格式.(4)但其文件尺寸較大,多用于存儲簡短的聲音片段.AIFF 文件AIF/AIFF(1) AIFF是音頻交換文件格式(AudioInterchangeFileFormat)的英文縮寫,是蘋果計算機公司開發(fā)的一種聲音文件格式;被Macintosh平臺及其應(yīng)用程序所支持,NetscapeNavigator 瀏覽器中的 LiveAudio也支持AIFF格式,SGI及其它專業(yè)音頻軟件包同樣支持這種格式.(3) AIFF 支持 ACE2,ACE8,MAC和 MAC6壓縮,支持 16 位 44.1Kz 立體聲.Au
5、dio 文件*.Audio(1) Audio文件是Sun Microsystems公司推出的一種經(jīng)過壓縮的數(shù)字聲音格式,是In ternet中常用的聲音文件格式;(2) NetscapeNavigator 瀏覽器中的LiveAudio也支持Audio格式的聲音文件. MPE文件*MP1/*MP2/*MP3(1) MPEG是運動圖像專家組(MovingPictureExpertsGroup) 的英文縮寫,代表 MPEGS準(zhǔn)中的音頻部分,即MPE箇頻層(MPEGAudioLayer);(2) MPEG音頻文件的壓縮是一種有損壓縮,根據(jù)壓縮質(zhì)量和編碼復(fù)雜程度的不同 可分為三層(MPEGAudioLa
6、yer1/2/3),分別對應(yīng) MP1,MP%口 MP3這三種聲 音文件;MPEG音頻編碼具有很高的壓縮率,MP1和MP2勺壓縮率分別為4:1和6:18:1,而MP3的壓縮率則高達10:112:1,也就是說一分鐘CD音質(zhì)的音樂,未經(jīng)壓縮需要10MB存儲空間,而經(jīng)過MP3壓縮編碼后只有1MB左右, 同時其音質(zhì)基本保持不失真,因此,目前使用最多的是MP3文件格式.RealAudio 文件*RA/*RM/*RAM(1) RealAudio文件是RealNerworks公司開發(fā)的一種新型流式音頻(Streaming Audio)文件格式;(2) 它包含在RealMedia中,主要用于在低速的廣域網(wǎng)上實時
7、傳輸音頻信息;(3) 網(wǎng)絡(luò)連接速率不同,客戶端所獲得的聲音質(zhì)量也不盡相同:對于28.8Kbps的 連接,可以達到廣播級的聲音質(zhì)量;如果擁有ISDN或更快的線路連接,則可獲 得CD音質(zhì)的聲音.2) MIDI 文件*.MID/*.RMI(1) MIDI 是樂器數(shù)字接口(MusicallnstrumentDigitallnteface)的英文縮寫,是數(shù)字音樂/電子合成樂器的統(tǒng)一國際標(biāo)準(zhǔn);(2) 它定義了計算機音樂程序,合成器及其它電子設(shè)備交換音樂信號的方式,還規(guī) 第7章凌陽音頻壓縮算法263定了不同廠家的電子樂器與計算機連接的電纜和硬件及設(shè)備間數(shù)據(jù)傳輸?shù)膮f(xié)議,可用于為不同樂器創(chuàng)建數(shù)字聲音,可以模擬大
8、提琴,小提琴,鋼琴等常見 樂器;(3) 在MIDI文件中,只包含產(chǎn)生某種聲音的指令,這些指令包括使用什么MIDI 設(shè)備的音色,聲音的強弱,聲音持續(xù)多長時間等,計算機將這些指令發(fā)送給聲卡,聲卡按照指令將聲音合成出來,MIDI在重放時可以有不同的效果,這取 決于音樂合成器的質(zhì)量;(4) 相對于保存真實采樣資料的聲音文件,MIDI文件顯得更加緊湊,其文件尺寸 通常比聲音文件小得多7.1.4語音壓縮編碼基礎(chǔ)語音壓縮編碼中的數(shù)據(jù)量是指:數(shù)據(jù)量=(采樣頻率x量化位數(shù))/8(字節(jié)數(shù))x聲 道數(shù)目.壓縮編碼的目的:通過對資料的壓縮,達到高效率存儲和轉(zhuǎn)換資料的結(jié)果,即在 保證一定聲音質(zhì)量的條件下,以最小的資料率
9、來表達和傳送聲音信息 壓縮編碼的必要性:實際應(yīng)用中,未經(jīng)壓縮編碼的音頻資料量很大,進行傳輸或 存儲是不現(xiàn)實的所以要通過對信號趨勢的預(yù)測和冗余信息處理,進行資料的壓縮, 這樣就可以使我們用較少的資源建立更多的信息舉個例子,沒有壓縮過的CD品質(zhì)的資料,一分鐘的內(nèi)容需要11MB勺內(nèi)存容量 來存儲.如果將原始資料進行壓縮處理,在確保聲音品質(zhì)不失真的前提下,將數(shù)據(jù) 壓縮一半,5.5MB就可以完全還原效果.而在實際操作中,可以依需要來選擇合適的 算法.常見的幾種音頻壓縮編碼:1) 波形編碼:將時間域信號直接變換為數(shù)字代碼,力圖使重建語音波形保持原語 音信號的波形形狀.波形編碼的基本原理是在時間軸上對模擬語
10、音按一定的速 率抽樣,然后將幅度樣本分層量化,并用代碼表示.譯碼是其反過程,將收到的數(shù)字序列經(jīng)過譯碼和濾波恢復(fù)成模擬信號.如:脈沖編碼調(diào)制(PulseCodeModulation,PCM),差分脈沖編碼調(diào)制(DPCM), 增量調(diào)制(DM)以及它們的各種改進型,如自適應(yīng)差分脈沖編碼調(diào)制(ADPCM)自 適應(yīng)增量調(diào)制(ADM),自適應(yīng)傳輸編碼(AdaptiveTransferCoding,ATC) 和子帶 編碼(SBC)等都屬于波形編碼技術(shù).波形編碼特點:高話音質(zhì)量,高碼率,適于高保真音樂及語音.2) 參數(shù)編碼:參數(shù)編碼又稱為聲源編碼,是將信源信號在頻率域或其它正交變換 域提取特征參數(shù),并將其變換
11、成數(shù)字代碼進行傳輸.譯碼為其反過程,將收到 的數(shù)字序列經(jīng)變換恢復(fù)特征參量,再根據(jù)特征參量重建語音信號.具體說,參 數(shù)編碼是通過對語音信號特征參數(shù)的提取和編碼,力圖使重建語音信號具有盡 可能高的準(zhǔn)確性,但重建信號的波形同原語音信號的波形可能會有相當(dāng)大的差 別.第7章凌陽音頻壓縮算法264如:線性預(yù)測編碼(LPC)及其它各種改進型都屬于參數(shù)編碼.該編碼比特率可 壓縮到2Kbit/s-4.8Kbit/s,甚至更低,但語音質(zhì)量只能達到中等,特別是自然度較低.參數(shù)編碼特點:壓縮比大,計算量大,音質(zhì)不高,廉價!3) 混合編碼:混合編碼使用參數(shù)編碼技術(shù)和波形編碼技術(shù),計算機的發(fā)展為語音 編碼技術(shù)的研究提供了
12、強有力的工具,大規(guī)模,超大規(guī)模集成電路的出現(xiàn),則 為語音編碼的實現(xiàn)提供了基礎(chǔ).80年代以來,語音編碼技術(shù)有了實質(zhì)性的進展,產(chǎn)生了新一代的編碼算法,這就是混合編碼.它將波形編碼和參數(shù)編碼組 合起來,克服了原有波形編碼和參數(shù)編碼的弱點,結(jié)合各自的長處,力圖保持 波形編碼的咼質(zhì)量和參數(shù)編碼的低速率如:多脈沖激勵線性預(yù)測編碼(MPLPC),規(guī)劃脈沖激勵線性預(yù)測編碼(KPELPC), 碼本激勵線性預(yù)測編碼(CELP)等都是屬于混合編碼技術(shù).其數(shù)據(jù)率和音質(zhì)介于參 數(shù)和波形編碼之間.總之,音頻壓縮技術(shù)之趨勢有兩個:1)降低資料率,提高壓縮比,用于廉價,低保真場合(如:電話).2)追求高保真度,復(fù)雜的壓縮技術(shù)
13、(如:CD).語音合成,辨識技術(shù)的介紹: 按照實現(xiàn)的功能來分,語音合成可分兩個檔次:(1)有限詞匯的計算機語音輸出基于語音合成技術(shù)的文字語音轉(zhuǎn)換(TTS:Text-to-Speech)按照人類語言功能的不同層次,語音合成可分為三個層次:從文字到語音的合成(Text-to-Speech)從概念到語音的合成(Concept-to-Speech)從意向到語音的合成(Intention-to-Speech)圖7.1是文本到語音的轉(zhuǎn)換過程:文本處理語音合成韻律處理語音數(shù)據(jù)庫詞典及語言規(guī)范合成語音輸出文本輸入圖7.1從文本到語音轉(zhuǎn)換過程示意語音辨識:語音辨識技術(shù)有三大研究范圍:口音獨立,連續(xù)語音及可辨認字
14、詞數(shù)量.口音獨立:1)早期只能辨認特定的使用者即特定語者(SpeakerDependent,SD)模式,使用者 可針對特定語者辨認詞匯(可由使用者自行定義,如人名聲控撥號),作簡單快速 的訓(xùn)第7章凌陽音頻壓縮算法265練紀錄使用者的聲音特性來加以辨認.隨著技術(shù)的成熟,進入語音適應(yīng)階段SA(speakeradaptation),使用者只要對于語音辨識核心,經(jīng)過一段時間的口音訓(xùn)練后,即可 擁有不錯的辨識率.2)非特定語者模式(SpeakerIndependent,SI),使用者無需訓(xùn)練即可使用,并進行 辨認.任何人皆可隨時使用此技術(shù),不限定語者即男性,女性,小孩,老人皆可.連續(xù)語音:1)單字音辨認
15、:為了確保每個字音可以正確地切割出來,必須一個字一個字分開 來念,非常不自然,與我們平常說話的連續(xù)方式,還是有點不同.2)整個句子辨識:只要按照你正常說話的速度,直接將要表達的說出來,中間并 不需要停頓,這種方式是最直接最自然的,難度也最高,現(xiàn)階段連續(xù)語音的辨識率 及正確率,雖然效果還不錯但仍需再提高.然而,中文字有太多的同音字,因此目前 所有的中文語音辨識系統(tǒng),幾乎都是以詞為依據(jù),來判斷正確的同音字.可辨認詞匯數(shù)量:內(nèi)建的詞匯數(shù)據(jù)庫的多寡,也直接影響其辨識能力.因此就語音辨識的詞匯數(shù)量 來說亦可分為三種:1)小詞匯量(10-100)2)中詞匯量(100-1000)3)無限詞匯量(即聽寫機)圖
16、7.2是簡化的語音識別原理圖,其中實線部分成為訓(xùn)練模塊,虛線部分為識別模塊.復(fù)雜聲 語條件 下的語 音輸入 語音模型聲學(xué)模式訓(xùn)練 語音匹配語音模式訓(xùn)練 語音處理識別結(jié)果,理 解結(jié)果 語言模型圖7.2語音識別原理簡圖第7章凌陽音頻壓縮算法266 7.2凌陽音頻簡介(頻響):7.2.1凌陽音頻壓縮算法的編碼標(biāo)準(zhǔn)表7.1是不同音頻質(zhì)量等級的編碼技術(shù)標(biāo)準(zhǔn)表7.1 信號類型頻率范圍(Hz)采樣率(kHz)量化精度(位)電話話音200340088寬帶音頻(AM質(zhì)量)5070001616調(diào)頻廣播(FM質(zhì)量)2015k37.816高質(zhì)量音頻(CD質(zhì)量)2020k44.116凌陽音頻壓縮算法處理的語音信號的范圍
17、是 200Hz-3.4KHz的電話話音.7.2.2壓縮分類壓縮分無損壓縮和有損壓縮.無損壓縮一般指:磁盤文件,壓縮比低:2:14:1. 而有損壓縮則是指:音/視頻文件,壓縮比可高達100:1.凌陽音頻壓縮算法根據(jù)不同的壓縮比分為以下幾種(具體可參見語音壓縮工具一 節(jié)內(nèi)容):SACM-A200C壓縮比為 8:1,8:1.25,8:1.5SACM-S48C壓縮比為 80:3,80:4.5SACM-S24C壓縮比為 80:1.5按音質(zhì)排序:A2000>S480>S2407.2.3凌陽常用的音頻形式和壓縮算法1)波形編碼:sub-band 即 SACM-A2000 特點:高質(zhì)量,高碼率,適
18、于高保真語音/音樂.2) 參數(shù)編碼:聲碼器(vocoder)模型表達,抽取參數(shù)與激勵信號進行編碼.如:SACM-S240.特點:壓縮比大,計算量大,音質(zhì)不高,廉價!3) 混合編碼:CELP即 SACM-S480特點:綜合參數(shù)和波形編碼之優(yōu)點.除此之外,還具有FM音樂合成方式即SACM-MS01.第7章凌陽音頻壓縮算法2677.2.4分別介紹凌陽語音的播放,錄制,合成和辨識凌陽的SPCE061是16位單片機,具有DSP功能,有很強的信息處理能力,最 高時鐘頻率可達到 49MHz具備運算速度高的優(yōu)勢等等,這些都無疑為語音的播 放,錄放,合成及辨識提供了條件.凌陽壓縮算法中SACM_A2000,SA
19、CM_S480,SACM_S主要是用來放音,可用于語音提示,而DVR則用來錄放音.對于音樂合成MS01該算法較繁瑣,而且需 要具備音樂理論,配器法及和聲學(xué)知識,所以對于特別愛好者可以到我們的網(wǎng)站 去了解相關(guān)內(nèi)容,這里只給出它的API函數(shù)介紹及程序代碼的范例,僅供參考. 對于語音辨識主要有以下兩種:1) 特定發(fā)音人識別SD(SpeakerDependent):是指語音樣板由單個人訓(xùn)練, 也只能識別訓(xùn)練人的語音命令,而他人的命令識別率較低或幾乎不能識別.2) 非特定發(fā)音人識別SI(Speakerlndependent):是指語音樣板由不同年齡,不同性別,不同口音的人進行訓(xùn)練,可以識別一群人的命令.
20、 語音識別電路基本結(jié)構(gòu)如圖7.3所示:濾除噪音預(yù)加重濾波器組PARCO系 數(shù)線性預(yù)測系數(shù)過零次數(shù)能量相關(guān)函數(shù)等模式匹配詞典語音分析語音識別結(jié)果 輸出圖7.3語音識別電路結(jié)構(gòu)具體應(yīng)用及程序代碼可參考 7.3.47.3常用的應(yīng)用程序接口 API的功能介紹及應(yīng)用7.3.1概述表7.2所列出的是凌陽音頻的幾種算法:表7.2SACM-lib庫中模塊及其算法類型模塊名稱(Model-1 ndex)語音壓縮編碼率類型資料采樣率SACM_A200016Kbit/s,20Kbit/s,24Kbit/s16KHz SACM_S480/S7204.8Kbit/s,7.2Kbit/s16KHz 第7章凌陽音頻壓縮算法
21、268SACM_S2402.4Kbit/s24KHzSACM_MS0音樂合成(16Kbits/s,20Kbits/s,24Kbits/s)16KHz SACM_DVR(A2000)16Kbit/s的資料率,8K的采樣率,用于ADC1道錄音功能16KHz 語音和音樂與我們的生活有著非常密切的關(guān)系,而單片機對語音的控制如錄放音, 合成及辨識也廣泛應(yīng)用在現(xiàn)實生活中我們知道對于語音處理大致可以分為A/D,編碼處理,存儲,解碼處理以及D/A等見圖7.4所示.然而,通過前面介紹我們知道麥 克風(fēng)輸入所生成的 WAV文件,其占用的存儲空間很大,對于單片機來說想要存儲 大 量的信息顯然是不可能的,而凌陽的SPC
22、E061醍出了解決的方法,即SACM-LIB, 該庫將A/D,編碼,解碼,存儲及D/A作成相應(yīng)的模塊,對于每個模塊都有其應(yīng)用程 序接口 API,所以您只需了解每個模塊所要實現(xiàn)的功能及其參數(shù)的內(nèi)容,然后調(diào)用該API函數(shù)即可實現(xiàn)該功能,例如在程序中插入語音提示,或連續(xù)播放一段語音或 音樂,也可以根據(jù)自己需要的空間或使用范圍選擇適合自己的算法如表7.2所示.麥克風(fēng)A/D轉(zhuǎn)換 存儲喇叭編解碼處理D/A轉(zhuǎn)換圖7.4單片機對語音處理過程以下就不同的算法具體介紹各自的 API函數(shù)的格式,功能,參數(shù),返回值,備注 及應(yīng)用范例.7.3.2SACM_A2000該壓縮算法壓縮比較小(8:1)所以具有高質(zhì)量,高碼率的
23、特點適用于高保真音樂 和 語音.其相關(guān)API函數(shù)如下所示:voidSACM_A2000_l ni tial(i ntl nit_ln dex)/初始化voidSACM_A2000_ServiceLoop(void)/獲取語音資料,填入譯碼隊列 voidSACM_A2000_Play(i ntSpeechn dex,i ntCha nn el,i ntRamp_Set)播放voidSACM_A2000_Stop(void)/ 停止播放 voidSACM_A2000_Pause(void)/ 暫停播放 voidSACM_A2000_Resume(void) 暫停后恢復(fù) voidSACM_A2000
24、_Volume(Volume_l ndex)/ 音量控制 un sig nedi ntSACM_A2000_Status(void) 獲取模塊狀態(tài)第7章凌陽音頻壓縮算法269voidSACM_A2000_l ni tDecode(i ntCha nn el)/ 譯碼初始化 voidSACM_A2000_Decode(void) 譯碼 voidSACM_A2000_FillQueue(u nsig nedi nte ncoded-data)/填充隊列 unsignedintSACM_A2000_TestQueue(void) 測試隊列 CallF_FIQ_Service_SACM_A2000 中
25、斷服務(wù)函數(shù) 下面對各個函數(shù)進行具體介紹:1)【API 格式】C:voidSACM_A2000_lnitial(intInit_lndex)ASM:R1=I nit_In dexCallF_SACM_A2000_l nitial【功能說明】SACM_A200語音播放之前的初始化.【參數(shù)】lnit_lndex=0 表示手動方式;Init_lndex=1則表示自動方式.【返回值】無-【備注】該函數(shù)用于對定時器,中斷和DAC等的初始化.2)【API 格式】C:voidSACM_A2000_ServiceLoop(void) ASM:CallF_SACM_A2000_ServiceLoop【功能說町 從
26、資源中獲取 SACM_A200語音資料,并將其填入譯碼隊列中.【參數(shù)】無.【返回值】無.3)【API格式】C:voidSACM_A2000_Play(i ntSpeechn dex,i ntCha nn el,i ntRamp_Set);ASM:R 仁SpeechndexR2=Cha nnelR3=Ramp_SetCallSACM_A2000_Play【功能說明】播放資源中SACM_A200語音或樂曲.【參數(shù)】Speech_lndex:表示語音索引號.Channel:1.通過 DAC1通道播放;2. 通過DAC2通道播放;3. 通過DAC1和DAC2雙通道播放.Ramp_Set:0.禁止音量增
27、/減調(diào)節(jié);1. 僅允許音量增調(diào)節(jié);2. 僅允許音量減調(diào)節(jié);3. 允許音量增/減調(diào)節(jié).【返回值】無.【備注】 SACM_A200的數(shù)據(jù)率有16Kbps20Kbps24Kbps三種,可在同一模塊的幾種算 法中自動選擇一種.第7章凌陽音頻壓縮算法270 Speech_lndex是定義在resource.inc 文件中資源表(T_ SACM_A2000_SpeechTabl的偏移地址. 中斷服務(wù)子程序F_FIQ_Service_SACM_A200必須安置在TMA_FIC中斷向量 上(參見第五章中斷系統(tǒng)內(nèi)容).函數(shù)允許TimerA以所選的的數(shù)據(jù)采樣率(計數(shù)溢出)中斷.程序7-1以自動方式播放一段SACM
28、_A200語音,并自動結(jié)束.(見光盤)SACM_A200自動方式主程序流程圖:SACM_A20C放音的初始化SACM_A20(壓 縮播放獲取語音數(shù)據(jù)并解碼等待中斷播放圖7.5A2000自動方式主程序流程前臺程序:#defi neSpeech_10#defi neDAC11#defi neDAC22#defi neRamp_UpDn_Off0#defi neRamp_Up_O n1#defi neRamp_D n_On2#defi neRamp_UpDn_ On3Mai n()SACM_A2000_I ni tial(1);SACM_A2000_Play(Speech_1,DAC1+DAC2,R
29、amp_UpDn_O 放音 while(SACM_A2000_Status ()&0x01)SACM_A2000_ServiceLoop();背景程序:.TEXT第7章凌陽音頻壓縮算法271N CLUDEhardware.i ncN CLUDEA2000.i ncN CLUDEResource.i nc/=/ 函數(shù):FIQ()/ 語法:voidFIQ(void)/描述:FIQ中服務(wù)斷函數(shù)/參數(shù):無/返回:無/= .PUBLIC_FIQ;_FIQ:PUSHR1,R4TOsp; 入棧保護R1=0x2000;TESTR1,P_INT_Ctrl; 是否為定時器 A中斷JNZL_FIQ_Time
30、rA;R1=0x0800;TESTR1,P_INT_Ctrl; 是否為定時器B中斷JNZL_FIQ_TimerB;L_FIQ_PWM:R仁C_FIQ_PWM;PN T_Clear=R1; 清中斷POPR1,R4fromsp; 恢復(fù)現(xiàn)場RETI;L_FIQ_TimerA:定時器A中斷處理PN T_Clear=R1; 清中斷CALLF_FIQ_Service_SACM_A2000;/調(diào)用 A2000中斷服務(wù)函數(shù)POPR1,R4FROMsp; 恢復(fù)現(xiàn)場RETI;L_FIQ_TimerB:定時器B中斷處理PN T_Clear=R1;/ 清中斷POPR1,R4FROMsp;/ 恢復(fù)現(xiàn)場RETI;/中斷返
31、回/*/注:播放語音文件中數(shù)據(jù),當(dāng)出現(xiàn)FFFFFFF數(shù)據(jù)時便停止播放.4) 【API 格式】C:voidSACM_A2000_Stop(void);ASM:CallF_SACM_A2000_Stop【功能說明】停止播放SACM_A200語音或樂曲.【參數(shù)】無.【返回值】無.5) 【API 格式】C:voidSACM_A2000_Pause(void);ASM:CallF_SACM_A2000_Pause【功能說明】暫停播放SACM_A200語音或樂曲.第7章凌陽音頻壓縮算法272【參數(shù)】無.【返回值】無.6) 【API 格式】C:voidSACM_A2000_Resume(void);ASM:
32、CallF_SACM_A2000_Resume【功能說明】恢復(fù)暫停播放的 SACM_A200語音或樂曲.【參數(shù)】無.【返回值】無.7) 【API 格式】C:voidSACM_A2000_Volume(Volume_Index);ASM:R 仁VolumendexCallF_SACM_A2000_Volume【功能說明】在播放SACM_A200語音或樂曲時改變主音量.【參數(shù)】Volumendex為音量數(shù),音量從最小到最大可在015之間選擇. 【返回值】無.8) 【API 格式】C:unsignedintSACM_A2000_Status(void);ASM:CallF_SACM_A2000_St
33、atus返回值=R1【功能說明】獲取SACM_A200語音播放的狀態(tài).【參數(shù)】無.【返回值】當(dāng)R1的bitO=O,表示語音播放結(jié)束;bitO=1,表示語音在播放中.9)【API 格式】ASM:CallF_FIQ_Service_SACM_A2000【功能說明】用作SACM_A200語音背景程序的中斷服務(wù)子程序.通過前臺子程 序(自動方式的 SACM_A2000_ServiceLoo及手動方式的 SACM_A2000_Decode) 對語音資料進行解碼,然后將其送入DACS道播放.【參數(shù)】無.【返回值】無.【備注】SACM_A20(語音背景子程序只有匯編指令形式,且應(yīng)將此子程序 安置在TMA_F
34、IC中斷源上.10)【API 格式】C:voidSACM_A2000_InitDecode(intChannel); ASM:CallF_SACM_A2000_Decode【功能說明】開始對SACM_A200語音資料以非自動方式(編程控制)進行譯碼.【參數(shù)】Channel=1,2,3;分別表示使用DAC1QAC通道以及DAC1和DAC2雙通道.【返回值】無.【備注】用戶只能通過非自動方式對語音資料解壓縮.11)【API 格式】C:voidSACM_A2000_Decode(void);ASM:CallF_SACM_A2000_Decode第7章凌卩陽音頻壓縮算法273【功能說明】從語音隊列里獲
35、取的 SACM_A200語音資料,并進行譯碼,然后通 過中斷服務(wù)子程序?qū)⑵渌腿?DAC1道播放.【參數(shù)】無.【返回值】無.【備注】用戶僅能通過非自動方式對語音資料進行譯碼.12)【API 格式】C:voidSACM_A2000_FillQueue(unsignedintencoded-data);ASM:R仁語音編碼資料CallF_SACM_A2000_FillQueue【功能說明】將從用戶存儲區(qū)里獲取SACM_A200語音編碼資料,然后將其填入語音隊列中等候譯碼處理.【參數(shù)】encoded-data為語音編碼資料.【返回值】無.【備注】用戶僅能通過非自動方式對語音資料進行譯碼.13)【API
36、 格式】C:unsignedintSACM_A2000_TestQueue(void);ASM:CallF_SACM_A2000_TestQueue返回值=R1-【功能說明】獲取語音隊列的狀態(tài).【參數(shù)】無.【返回值】R仁0,1,2;分別表示語音隊列不空不滿,語音隊列滿及語音隊列空.【備注】用戶僅能通過非自動方式測試語音隊列狀態(tài).程序7-2SACM_A2000E自動方式(編程控制)播放語音.(見光盤)SACM_A200非 自動方式主程序流程見圖 7.6:第7章凌陽音頻壓縮算法274A2000播放初始化獲取語音資源并填充語音隊列解碼獲取數(shù)據(jù)并播放判斷語音隊列是否滿判斷是否到語音的結(jié)束地址放音結(jié)束結(jié)
37、束開始是否否是圖7.6SACM_A200非自動方式主程序流程中斷服務(wù)子程序流程見圖7.7:FIQ是TimerA中斷嗎填充語音隊列清中斷狀態(tài)否是中斷返回寄存器組出棧開始圖7.7SACM_A200(中斷服務(wù)子程序流程前臺程序:第7章凌陽音頻壓縮算法275#defi neMa nual0#defi neAuto1#defi neFull1#defi neEmpty2#defi neDAC11#defi neDAC22Mai n()Addr=RES_A32_SA;/長整型資源地址SACM_A2000_I nitial(Ma nu al);/選擇非自動方式SACM_A2000_I ni tDecode(
38、DAC1+DAC2);/使用雙通道While(SACM_A2000_TestQueue()!=Full) 若隊列不滿,填入資料 Ret=GetResource(Addr);/ 從 ROM中取語音資料SACM_A2000_FillQueue(Ret);將語音資料填入隊列Add葉+;/指向下一個資料地址While(1)lf(SACM_A2000_TestQueue()!=Full) 繼續(xù)填資料到隊列中Ret=GetResource(Addr);SACM_A2000_FillQueue(Ret);Add 葉+;if(Addr<RES_A32_EA)SACM_A2000_Decode();對語音
39、資料進行譯碼 elseSACM_A2000_Stop();地址結(jié)束,停止播放注:1) 文件的結(jié)束是由用戶位址變量控制的2) 在非自動方式播放語音,其音量的增/減是通過外部子程序 (SP_Ramp_Up,SP_Ramp_控制的.7.3.3SACM_S480該壓縮算法壓縮比較大80:3,存儲容量大,音質(zhì)介于A2000和S240之間,適用于 語音播放,如"文曲星"詞庫其相關(guān)API函數(shù)如下所示:in tSACM_S480_l ni tial(i ntl nit_ln dex)初始化voidSACM_S480_ServiceLoop(void)獲取語音資料,填入譯碼隊列 voidSA
40、CM_S480_Play(i ntSpeechn dex,i ntCha nn el,i ntRamp_Set) 第7章凌陽音頻壓縮算法276/播放voidSACM_S480_Stop(void) 停止播放 voidSACM_S480_Pause(void) 暫停播放 voidSACM_S480_Resume(void) 暫停后恢復(fù) voidSACM_S480_Volume(Volume_l ndex)/ 音量的控制 un sig nedi ntSACM_S480_Status(void) 獲取模塊的狀態(tài) CallF_FIQ_Service_SACM_S480 中斷服務(wù)函數(shù)各函數(shù)具體內(nèi)容如下:
41、1) 【API 格式】C:intSACM_S480_lnitial(intlnit_lndex)ASM:R1=I nit_ln dexCallF_SACM_S480_l nitial【功能說明】SACM_S48語音播放之前的初始化.【參數(shù)】lnit_lndex=0 表示手動方式;lnit_lndex=1則表示自動方式.【返回值】0?代表語音模塊初始化失敗一1:代表初始化成功.【備注】該函數(shù)用于對定時器,中斷和DAC等的初始化.2) 【API 格式】C:voidSACM_S480_ServiceLoop(void) ASM:CallF_SACM_S480_ServiceLoop【功能說明】從資源
42、中獲取 SACM_S48語音資料,并將其填入解碼隊列中【參數(shù)】無.【返回值】無.【備注】播放語音文件中數(shù)據(jù),當(dāng)出現(xiàn)FFFFFFH數(shù)據(jù)時便停止播放.3)【API格式】C:i ntSACM_S480_Play(i ntSpeechn dex,i ntCha nn el,i ntRamp_Set);ASM:R 仁SpeechndexR2=Cha nnelR3=Ramp_SetCallSACM_S480_Play【功能說明】播放資源中SACM_S48語音.【參數(shù)】Speechndex表示語音索引號.Channel:1.通過 DAC1通道播放;2. 通過DAC2通道播放;3. 通過DAC1和DAC2雙通
43、道播放.Ramp_Set:0.禁止音量增/減調(diào)節(jié);1. 僅允許音量增調(diào)節(jié);2. 僅允許音量減調(diào)節(jié);3. 允許音量增/減調(diào)節(jié).【返回值】無.第7章凌陽音頻壓縮算法277【備注】 SACM_S48的數(shù)據(jù)率有4.8Kbps7.2Kbps三種,可在同一模塊的幾種算法中自 動選擇一種. Speechndex是 定義在resource.i nc文件中 資源表(T_SACM_S480_SpeechTable)的偏移地址. 中斷服務(wù)子程序中F_FIQ_Service_SACM_S48必須放在TMA_FIC中斷向量上(參見SPCE勺中斷系統(tǒng)). 函數(shù)允許TimerA以所選的的數(shù)據(jù)采樣率(計數(shù)溢出)中斷.程序7-
44、3以自動方式播放一段SACM_S48語音,并自動結(jié)束.(見光盤)SACM_S48自動方式主程序流程見圖7.8:SACM_S48放音的初始化SACM_S48壓縮播放獲取語音數(shù)據(jù)并解碼等待中斷播放圖7.8SACM_S48(g動方式主程序流程中斷流程同匸.前臺程序:*/描述:S480只有自動播放方式,在中斷FIQ的FIQ_TMA中斷源中通過/主程序的SACM_S480_ServiceLoop(對語音數(shù)據(jù)進行解碼,然后將其/送入DAC通道播放*/#i nclude"s480.h"#defi neSpeech_10#defi neDAC11#defi neDAC22#defi neR
45、amp_UpDn_Off0#defi neRamp_UpDn_ On3#defi neAuto1/=/ 函數(shù):main()第7章凌陽音頻壓縮算法278/=mai n()SACM_S480_I nitial(1);/自動方式播放初始化SACM_S480_Play(Speech_1,DAC1+DAC2,Ramp_UpD n_On);/定義語音索引號,播放通道,允許音量增/減調(diào)節(jié) -while(SACM_S480_Status()&0x01)/ 是否播放結(jié)束SACM_S480_ServiceLoop();/獲取語音數(shù)據(jù)并將其填入解碼隊列背景程序:.TEXTN CLUDEhardware.i
46、ncN CLUDES480.i nc.PUBLIC_FIQ;_FIQ:PUSHR1,R4TOsp; 入棧保護R1=0x2000;TESTR1,P_INT_Ctrl; 是否為定時器 A中斷JNZL_FIQ_TimerA;R1=0x0800;TESTR1,P_INT_Ctrl; 是否為定時器B中斷JNZL_FIQ_TimerB;L_FIQ_PWM:R1=C_FIQ_PWM;PN T_Clear=R1;/ 清中斷POPR1,R4fromSP;/ 恢復(fù)現(xiàn)場RETI;L_FIQ_TimerA:定時器A中斷處理PN T_Clear=R1;/ 清中斷CALLF_FIQ_Service_SACM_S480;/
47、調(diào)用 S480中斷服務(wù)函數(shù)P0PR1,R4FR0MSP;/恢復(fù)現(xiàn)場RETI;L_FIQ_TimerB:定時器B中斷處理PN T_Clear=R1;/ 清中斷POPR1,R4FROMSP;/恢 復(fù)現(xiàn)場RETI;/中斷返回注:自動放音時,當(dāng)語音資源文件中的資料為FFFFFFH寸便停止播放.4) 【API 格式】C:voidSACM_S480_Stop(void);ASM:CallF_SACM_S480_Stop【功能說明】停止播放SACM_S48語音.【參數(shù)】無.【返回值】無.第7章凌陽音頻壓縮算法2795) 【API 格式】C:voidSACM_S480_Pause(void);ASM:Call
48、F_SACM_S480_Pause【功能說明】暫停播放SACM_S48語音.【參數(shù)】無.【返回值】無.6) 【API 格式】C:voidSACM_S480_Resume(void);ASM:CallF_SACM_S480_Resume【功能說明】恢復(fù)暫停播放的 SACM_S48語音.【參數(shù)】無.【返回值】無.7) 【API 格式】C:voidSACM_S480_Volume(Volume_lndex);ASM:R 仁VolumendexCallF_Model-I ndex_Volume【功能說明】在播放SACM_S48語音時改變主音量.【參數(shù)】Volumendex為音量數(shù),音量從最小到最大可在
49、015之間選擇.【返回值】無.8) 【API 格式】C:unsignedintSACM_S480_Status(void);ASM:CallF_SACM_S480_Status返回值=R1【功能說明】獲取SACM_S48語音播放的狀態(tài).【參數(shù)】無.【返回值】當(dāng)R1的值bit0=0,表示語音播放結(jié)束;bit0=1,表示語音在播放中9) 【API 格式】ASM:CallF_FIQ_Service_SACM_S480【功能說明】用作SACM_S48語音背景程序的両服務(wù)子程序.通過前臺子程序(自動方式的SACM_S480_ServiceLoop及手動方式的SACM_S480_Decoc對語音資料進行解
50、碼,然后將其送入DAG!道播放.【參數(shù)】無.【返回值】無.【備注】SACM_S48語音背景子程序只有匯編指令形式,且應(yīng)將此子程序 安置在TMA_FIC中斷源上.7.3.4SACM_S240該壓縮算法的壓縮比較大80:1.5,價格低,適用于對保真度要求不高的場合玩具類產(chǎn)品的批量生產(chǎn),編碼率僅為2.4Kbps.其相關(guān)API函數(shù)如下所示:in tSACM_S240_l ni tial(i ntl nit_ln dex)初始化voidSACM_S240_ServiceLoop(void)獲取語音資料,填入譯碼隊列 voidSACM_S240_Play(i ntSpeechn dex,i ntCha n
51、n el,i ntRamp_Set) 第7章凌陽音頻壓縮算法280/播放voidSACM_S240_Stop(void) 停止播放 voidSACM_S240_Pause(void) 暫停播放 voidSACM_S240_Resume(void) 暫停后恢復(fù) voidSACM_S240_Volume(Volume_l ndex)/ 音量控制 un sig nedi ntSACM_S240_Status(void)獲取模塊狀態(tài)CallF_FIQ_Service_SACM_S240 中斷服務(wù)函數(shù)下面具體介紹一下各個函數(shù):1) 【API 格式】C:intSACM_S240_lnitial(intIn
52、it_Index)ASM:R1=I nit_ln dexCallF_SACM_S240_l nitial【功能說明】SACM_S24語音播放之前的初始化.【參數(shù)】lnit_lndex=0 表示手動方式;lnit_lndex=1 則表示自動方式.【返回值】0?代表語音模塊初始化失敗一1:代表初始化成功.【備注】函數(shù)用于S240語音譯碼的初始化以及相關(guān)設(shè)備的初始化.2) 【API 格式】C:voidSACM_S240_ServiceLoop(void) ASM:CallF_SACM_S240_ServiceLoop【功能說明】從資源中獲取 SACM_S24語音資料,并將其填入解碼隊列中. 【參數(shù)】無.【返回值】無.3) 【API格式】C:i ntSACM_S240_Play(i ntSpeechn dex,i ntC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保技術(shù)與設(shè)備購銷合同
- 2024年版餐廳后廚管理合同2篇
- 《走上辯論臺》教案
- 2024年廣告創(chuàng)意設(shè)計與執(zhí)行合同模板3篇
- 小學(xué)生語文學(xué)習(xí)計劃
- 存量房買賣合同(15篇)
- 中國轉(zhuǎn)椅坐墊項目投資可行性研究報告
- 體育工作計劃范文合集五篇
- 員工安全生產(chǎn)承諾書
- 網(wǎng)絡(luò)大學(xué)生實習(xí)報告合集7篇
- 對外開放與國際合作概述
- 2024屆四川省成都市高中數(shù)學(xué)高一下期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 2023年青協(xié)活動總結(jié)報告
- 提升供應(yīng)鏈效率:年度運營計劃
- 展覽館維修維護投標(biāo)方案
- 陳赫賈玲小品《歡喜密探》臺詞劇本
- 2023招聘專員個人年終總結(jié)
- 機房搬遷服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 腦出血入院病歷
- 國際郵輪產(chǎn)業(yè)及未來郵輪
- 小學(xué)第四季度意識形態(tài)分析研判報告
評論
0/150
提交評論