999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多任務音頻播放與實時頻譜變換的實現

2017-09-25 07:58:50張亞平
實驗技術與管理 2017年9期
關鍵詞:嵌入式

楊 博, 張亞平, 丁 瑞

(首都師范大學 信息工程學院, 北京 100048)

通信作者:張亞平(1968—),女,湖南湘潭,碩士,工程師,主要研究方向為計算機應用、嵌入式系統開發.

多任務音頻播放與實時頻譜變換的實現

楊 博, 張亞平, 丁 瑞

(首都師范大學 信息工程學院, 北京 100048)

使用ARM嵌入式開發實驗箱UPTECH2410、μC/OS-II多任務調度操作系統和圖象顯示庫系統,設計了一款能在彩色LCD屏上同步顯示歌詞、音頻頻譜信息、歌曲點播選單和對應曲目主題畫面的可視化MP3播放器。給出了系統工作流程,討論了該系統是如何使用雙緩沖機制播放和處理音頻以保證音頻播放的實時性和無縫性,提出一種針對歌曲音頻的高效頻譜變換方法,并對常見的WAV音樂格式進行了分析。

多任務音樂播放; 頻譜變換; μC/OS-II

MP3播放器種類繁多,按照操作系統屬性可以分為:

(1) 基于通用操作系統,如Window、Linux、安卓等;

(2) 基于嵌入式實時操作系統,如μC/OS、TinyOS、RTOS、剪裁修改的Linux等,很多高檔專用MP3播放器使用嵌入式實時操作系統;

(3) 無操作系統,使用簡單的前后臺或者輪詢程序控制,屬于廉價低端MP3設備[1-3]。

為滿足教學、科研的需要,筆者設計了基于μC/OS-II操作系統的可視化MP3播放器。該播放器能夠完成歌曲播放、歌曲頻譜信息顯示、歌詞同步顯示和歌曲配圖顯示,不僅挖掘和擴展了實驗箱的功能,而且也豐富了μCOS-II實驗教學實例,可供開發探究性實驗和綜合創新性實驗項目參考。

1 項目環境和設計目標

1.1 硬件環境

設計多任務音頻播放與實時頻譜變換MP3播放器使用的是北京博創公司ARM嵌入式開發實驗箱UPTECH2410,其核心微處理器為ARM920T,板載UDA1341TS音頻解碼芯片、Flash存儲器、SRAM、LCD液晶屏、數字鍵盤、耳機接口等其他外設。

微處理器內集成DMA、標準音頻通信IIS接口,可以在非CPU干預的情況下獨立定時地向音頻芯片傳輸數據,其優點是提高CPU工作效率,使數據傳送周期恒定。音頻播放相關硬件關系如圖1所示。

圖1 實驗箱音頻播放相關硬件關系圖

1.2 軟件環境

基于ARM ADS1.2軟件集成開發環境,使用C語言作為開發語言,使用開源操作系統μC/OS-II構建MP3播放器。μC/OS-II有如下特點[4-6]:

(1) 源代碼公開,可移植;

(2) 可裁剪,易于實現代碼最小化;

(3) 多任務,可管理多達64個任務,但不支持時間片輪轉調度;

(4) 搶占式的實時內核;

(5) 精確延時。

此外,μC/OS-II可以提供多種系統服務,具有中斷管理和可靠性、穩定性高等特點。該實驗箱為μC/OS-II配備了圖象顯示庫,可以直接調用這些函數在LCD上完成所需控件的顯示。

1.3 項目設計目標

基于UPTECH2410實驗平臺上的已有硬件設備,該項目能夠實現如下功能:

(1) 支持Windows的標準WAV格式文件播放;

(2) 列表顯示Flash存儲器上所有WAV曲目;

(3) 隨歌曲播放同步顯示歌詞;

(4) 隨歌曲播放同步顯示聲調頻譜信息;

(5) 可為每首歌曲顯示設定的背景圖片;

(6) 可在任意時間播放、暫?;蚯袚Q歌曲。

2 原理和方法

2.1 音頻重建和播放

數字音頻文件是由麥克風采集的模擬信號經防混疊低通濾波器后采樣、量化得到的離散數字信號組成的。采樣時要滿足采樣定理,以高于原信號最高頻率2倍以上的速率進行采樣(采樣頻率常用22.05 kHz、44.1 kHz或更高)。量化等級水平稱為量化深度或采樣深度,一般以bit為單位表示(常用16 bit)。

為了無失真或最小失真地將聲音信號還原,需要將離散數字信號按照不低于采樣深度的轉換水平,并且按照與采樣頻率相同的轉換速率經DA轉換器輸出。輸出信號再經低通濾波、放大后方可得到重建信號。

音頻文件播放必須滿足:

(1) 播放頻率(重建頻率)與采樣頻率一致,否則會發生頻率畸變;

(2) 播放轉換等級(DA的轉換精度水平)大于等于量化深度,否則會發生聲音失真、使音樂質量降低。

本實驗平臺上的UDA1341TS音頻播放芯片內置有16位深度的雙聲道DA轉換器以及濾波器、放大器等相關電路[7],保證了一般應用情況下所需的量化等級。該器件有獨立的時鐘和定時器,能夠支持包含經典的44.1 kHz、22.05 kHz在內的多種采樣頻率計數,讓轉換器可以按照采樣頻率進行轉換播放。通過分析可知,UDA1341TS滿足音頻文件不失真播放的要求。

UDA1341TS含有實用標準音頻播放IIS接口,方便與其他設備相連;也可以在定時器超時的時候產生中斷,自動向DMA申請數據,極大地減輕了CPU的負擔,也保證音頻播放的頻率準確性和實時性。

2.2 WAV音頻文件

WAV是微軟公司開發的一種無損聲音文件格式,它符合RIFF(resource interchange file format)文件規范,用于保存Windows平臺的音頻信息資源,支持多種音頻數字、采樣頻率和聲道數量[8]。標準格式化的WAV文件和CD格式一樣,也是44.1 kHz的采樣頻率,16位量化數字。

量化位數分為8位、16位、24位3種,聲道有單聲道和雙聲道(立體聲),采樣速率有11.025 kHz、22.05 kHz和44.1 kHz。本項目采用的是16 bit量化深度、22.05 kHz采樣頻率、雙聲道的WAV格式。

WAV文件由文件頭和數據塊組成,其中文件頭記錄WAV文件的屬性和控制等相關信息,數據塊順序記錄音頻的離散數字信號。整個文件采用小端模式(little-endian)字節順序,標志符不是字符串而是單獨的符號。WAV頭文件格式如表1所示。

表1(續)

數據塊結構如表2所示。

表2 WAV文件數據塊結構

在音頻數據中,每個采樣數據按照時間順序依次排列。每個采樣(4字節)包含左聲道(低2字節)和右聲道(高2字節)數據。每個聲道數據由16 bit雙字節構成,低8 bit在低字節,高8 bit在高字節。

本項目會讀取頭文件信息并判斷該文件是否為符合要求的音頻文件,如果符合要求則按照數據格式提取數據并播放。

2.3 基于雙緩沖的音頻無縫分段播放

2.3.1 系統瓶頸導致的問題

待播放的音頻文件數據存儲在Flash中,播放時需要先將文件從Flash寫入內存,再由DMA單元從內存中讀取數據并通過IIS接口送入UDA1341芯片。

對硬件平臺多次測試后得知:將時長10 s的音頻數據(約861 KB)從Flash讀入內存大概需要2 s;為保證播放速率,DMA將數據從內存傳到UDA1341芯片需10 s。

可見,DMA的傳送速度慢于Flash的讀入速度,而Flash的讀入延遲也是相當多的。若Flash讀入和DMA傳送都使用同一內存,會導致Flash覆蓋DMA還沒有傳輸完的數據,這樣音樂聽起來就完全不對了。所以將Flash讀出的數據寫入該內存塊和DMA讀取同一內存塊不能同時進行,即避免訪寫沖突。若DMA讀取和Flash寫入交替進行,那么音樂每播放10 s中間會產生2 s的停頓。不管如何縮短緩沖區的長度以至于人耳無法察覺到停頓的存在,停頓引起的20%的延遲都是不可忽略的。延遲會引起播放時間的拉長,歌曲內容與歌詞失去同步,這些是不容許的。

2.3.2 雙緩沖解決方案

本文提出采用雙緩沖區以避免Flash和DMA的訪寫沖突問題。其優點有:

(1) 無訪寫沖突,保證了數據的安全性;

(2) 無縫播放,DMA可連續讀取各區的數據;

(3) 降低IO優先級,以縮短其他Flash任務的響應時間。

雙緩沖機制的實現需要兩個內存區域——緩沖區1與緩沖區2,每個區域均可存放10 s的音頻數據。首先,CPU讀取10 s的音頻數據放入緩沖區1,然后啟動DMA將緩存區1數據送到音頻設備播放(此過程DMA以22.05 kHz的頻率傳輸數據,且無需CPU干預),同時CPU將Flash上第二個10 s的音頻數據讀入緩存區2。當DMA傳輸完畢后,DMA播放緩沖區2的數據,CPU將Flash上第三個10 s的數據讀入到緩沖區1中。如此交替循環,可提高系統的并行能力,實現音頻的流暢無縫播放。

2.4 針對特定音調的DTFT頻譜特征變換

常用的頻譜變換方法是基于FFT的快速傅里葉變換[9],這種算法占用嵌入式設備大量的內存空間和大量的浮點運算,而且也增加了編程的復雜度;而用專用硬件進行頻譜變換則會增加成本和設計的復雜度。

經過對要處理的MP3文件的分析,發現大部分音頻會在某些特定頻率點上重復出現,即所謂在音調上[10]。據此提出針對特定音調的DTFT(discrete-time Fourier transform)頻譜變換方法,其優點是計算量更小、速度更快、計算空間需求小、編程簡單,若技巧得當,可在無浮點運算下完成。

DTFT頻譜變換的原理如下。

由采樣序列f(nT)的DTFT公式:

(1)

ejθ=cosθ+jsinθ

(2)

得:

推出:

(3)

因此,可將音頻序列x[k]與兩個正交的余弦序列{cos(kωT),k=1,2,3…}與{sin(kωT),k=1,2,3…}相乘求和,再平方得到其在頻率ω上的頻譜強度。其中ω=2πf,f為特定音調對應的頻率。本文選取了如表3所示的10個在音樂中普遍出現的音調,并給出了對應的頻率。其中c1為中央C。

表3 常用的10個音調及其對應頻率

將表3中的各音調頻率代入余弦序列{cos(kωT),k=1,2,3…}與{sin(kωT),k=1,2,3…}中,可得10對周期性的序列。將這10對序列按照常數存放和使用,可極大提高運算速度。

將聲音信號以0.5 s為一段不斷地提取出來,并按照公式3與上述10對代表不同音調頻率特性的余弦序列相乘求和,得到了10個音調對應的頻譜強度X(1),X(2),…,X(10)。

由于有時某一點的強度會極大地超過其他點,并超過屏幕能夠顯示的強度上限,所以需要依照式(4)按其強度比進行均衡化。

(4)

將均衡化后的結果顯示在屏幕上(見圖2)。整個算法的流程如圖3所示。

圖2 顯示在LCD屏幕上的頻譜圖

圖3 基于特定音調的頻譜提取流程

圖4是為驗證算法的有效性和可行性而在Matlab上做的仿真。橫軸上1—10表示10個音調頻率,縱軸從0到300表示音樂的時間,高度表示頻譜強度。

圖4 音調特征提取的Matlab仿真結果

3 項目的實現

(1) 總流程。系統啟動后,首先初始化各類參數以及圖形庫、IIS、DMA、UDA1341TS等模塊,隨后創建頻譜提取顯示、歌詞顯示、音樂播放控制、主任務等4個任務,最后調用OS_Start啟動各個任務的調度。

(2) 主任務。主任務是響應鍵盤的輸入、處理外部事件、負責與上位機通信,負責其他各任務的相互協調。

(3) 頻譜提取顯示。任務是每隔0.5 s將下一段(長度也為0.5 s)的音頻數據按照2.4節提到的DTFT頻譜特征變換方法進行處理,并顯示在屏幕上。

(4) 歌詞顯示任務。該任務是對LRC歌詞文件的讀取和處理(見表4),一個 LRC 文件包含2部分:歌詞和時間標簽。該標簽指示出每一句歌詞所出現的時間點。在任務中不斷調用sscanf(( const char *) File_Read_Buffer , “[%d:%d.%d]”, &SubTitle_Info.NextMinute, &SubTitle_Info.NextSecond, &SubTitle_Info.Next10Ms),讀取相鄰兩行歌詞的時間,得出兩句歌詞之間的時間差。當第一句歌詞顯示后,調用延時函數OSTimeDly()進行等待對應的時間差,然后顯示第二句歌詞,如此往復實現了歌詞的同步。

表4 LRC文件格式實例

(5) 音樂播放。上文2.3節中說明了本文采用雙緩沖方式,并結合DMA、IIS、UDA1341等硬件模塊完成音樂的流暢無縫分塊播放。因此,音樂播放的程序主要包括兩部分,即底層硬件相關程序和上層播放控制程序。

4 播放控制程序

4.1 與硬件相關的主要函數

(1) Audio_Init():用于初始化所需的IIS、DMA、UDA1341,設定播放速率和雙聲道傳輸模式;

(2) Audio_Stop():停止DMA傳輸和UDA1341的播放功能;

(3) Audio_Play():啟動DMA傳輸與UDA1341的播放功能;

(4) Audio_SetBuffer(char* SoundBuffer,U32 DataCount):設定DMA將要傳輸數據緩沖區的起始地址及長度。傳輸的方式采用原地址遞增,而目的地址固定0X55000010 (目的地址為IIS外設接口地址)。

4.2 上層播放控制程序

圖5示意了本播放器的工作流程和雙緩沖工作機制(不含頻譜計算和字幕顯示)。頻譜計算在讀取完音頻數據后就開始了,每隔0.5 s為一個時間點進行計算,并在正確的時間將頻譜信息、字幕信息顯示在屏幕上。播放暫停和停止操作也沒有繪入流程圖,暫停、停止操作會中斷播放任務線程,并記錄當前的播放狀態,以便恢復播放操作使用。

圖5 播放控制流程

基于μC/OS-II操作系統的可視化MP3播放器最終能流暢播放出MP3歌曲并同步顯示歌詞、頻譜信息,同時能夠自由暫停、繼續、開始、停止、切換歌曲,并

顯示所有符合WAV格式的歌曲列表,運行結果如圖6所示。

圖6 MP3播放器運行界面

5 結語

通過音頻頻譜的提取和顯示,聲音文件流暢播出,可以充分了解嵌入式系統環境下軟硬件是如何協同工作的,有利于提高對系統的分析能力和綜合運用所學知識解決問題的能力。目前該MP3播放器只能播放合法的WAV文件,且必須滿足22.05 kHz的采樣頻率、16 bit的采樣深度和雙聲道這3個條件。為此,需要進一步研究,使該音樂播放器能夠支持更多的音頻格式和屬性。

References)

[1] 宋志章,馬麗,劉曉華.基于ARM的數字音頻解碼系統的設計與實現[J].科技通報,2012,28(6):161-162,165.

[2] 何敬銀,王為.基于S3C2440的數字音頻播放器設計[J].科技通報,2012,28(12):36-38,41.

[3] 蔣尚婷,金毅仁.數字音頻壓縮編碼及音頻播放器制作[J].電腦編程技巧與維護,2011(6):82-85,92.

[4] Labrosse J J.嵌入式實時操作系統uC/OS-III[M].宮輝,曾鳴,譯.北京:北京航空航天大學出版社,2012.

[5] 楊鑄,唐攀.深入淺出嵌入式底層軟件開發[M].北京:北京航空航天大學出版社,2011.

[6] 王田苗.嵌入式系統設計與實例開發:基于ARM微處理器與uC/OS-II實時操作[M].北京:北京航空航天大學出版社,2007.

[7] 胡力剛,許偉明,焦陽.基于S3C2410A和UDA1341TS的嵌入式音頻系統設計[J].計算機測量與控制,2009,17(2):2510-2512,2515.

[8] 王若鈞,何杉.WAV文件格式分析與詳解[J].數字技術與應用,2004(3):93-94.

[9] 陳后金,薛健,胡健.數字信號處理[M].北京:高等教育出版社,2004.

[10] 曹西征,劉春紅,孫林.基于WAV文件的獨奏樂曲信號中的樂譜識別[J].計算機應用,2009,29(3):768-770,788.

Realization of multi-task audio playback and real-time frequency spectrum conversion

Yang Bo, Zhang Yaping, Ding Rui

(College of Information Engineering, Capital Normal University, Beijing 100048, China)

By using the ARM embedded development box UPTECH2410 and the μC/OS-II multi-task scheduling and operating system, and the image display library system, a visual MP3 player is designed, which can synchronously display the lyrics, the audio frequency spectral information, the song request menu and the corresponding song theme pictures on the color LCD screen. The workflow of the whole system is presented, and how to use the double buffering mechanism to play and process the audio to ensure the real-time and seamless audio playback is discussed. A high efficient frequency spectral transform method for the song audio is proposed, and the common WAV musical formats are analyzed.

multi-task music playback; frequency spectral transform; μC/OS-II

TN912.3

: A

: 1002-4956(2017)09-0137-05

04—07H4long從下個地址開始到文件尾的總字節數08—0BH4char“WAVE”,WAV文件標志0C—0FH4char“fmt”,波形格式標志,最后一位空格10—13H4longfmt格式段長度,一般為10H14—15H2short格式種類(1表示數據為線性PCM編碼)16—17H2short通道數,單聲道為1,雙聲道為218—1BH4long采樣頻率(22050、44100等)

2017-04-26

楊博(1992—),男,北京,碩士研究生,主要研究方向為嵌入式和電子信息工程

E-mail:yangkkb@aliyun.com

E-mail:997715213@qq.com

10.16791/j.cnki.sjg.2017.09.034

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产高清自拍视频| 精品久久香蕉国产线看观看gif| 女同国产精品一区二区| 国产人人射| 欧美v在线| 精品伊人久久久久7777人| 亚洲乱码在线视频| 国产成人综合久久| 色综合热无码热国产| 亚洲AV无码乱码在线观看代蜜桃| 久久精品视频亚洲| 2021天堂在线亚洲精品专区| 视频二区中文无码| 欧美在线一二区| 最新痴汉在线无码AV| 香蕉视频国产精品人| 欧美性久久久久| 91成人免费观看在线观看| 美女潮喷出白浆在线观看视频| 久久精品只有这里有| 色悠久久久久久久综合网伊人| 狠狠色狠狠综合久久| 国产美女在线观看| 在线日韩日本国产亚洲| 99热这里只有免费国产精品 | 成年av福利永久免费观看| 欧美特级AAAAAA视频免费观看| 亚洲AⅤ波多系列中文字幕| 999精品色在线观看| 狠狠v日韩v欧美v| 免费国产小视频在线观看| 亚洲天堂网2014| 精品三级在线| 国产成人8x视频一区二区| 国产小视频a在线观看| 婷婷色婷婷| 成人综合网址| 丰满人妻久久中文字幕| 欧美午夜视频| 伊人福利视频| 亚洲国产中文精品va在线播放| 91精品啪在线观看国产91九色| 欧美一级片在线| 亚洲中文在线视频| 国产成人精品三级| 制服丝袜亚洲| 99精品热视频这里只有精品7| 欧美色视频在线| 日韩黄色在线| 国产第一页免费浮力影院| 青草视频在线观看国产| 国产在线观看91精品| 久久久精品无码一二三区| 国产中文一区a级毛片视频| 老汉色老汉首页a亚洲| 99久久无色码中文字幕| 丰满人妻中出白浆| 日本高清成本人视频一区| 性欧美在线| 亚洲欧美成人网| 中文字幕资源站| 国产黄色爱视频| 午夜福利亚洲精品| 日韩小视频在线观看| 日韩无码黄色| 久久国产精品麻豆系列| 91在线精品麻豆欧美在线| 美女视频黄频a免费高清不卡| 天天综合天天综合| 色综合久久88| 国产精品一区在线麻豆| 99一级毛片| 无码精品国产dvd在线观看9久| 欧美 亚洲 日韩 国产| 日本AⅤ精品一区二区三区日| 久久久久无码精品| 国产日韩欧美视频| 日韩大乳视频中文字幕| 国产精品粉嫩| 中国丰满人妻无码束缚啪啪| 国产成人精彩在线视频50| 久久综合五月婷婷|