朱子文 李思杰 付崢
【摘要】使用Android Studio安卓開發工具設計一款Android端的英語復讀App,該APP可以自動識別兩段聽力之間的停頓,并根據用戶設置進行特定時間間隔的暫停。通過音頻二進制文件讀取音頻信息,所得到的的音頻數據幀信息再通過App邏輯層處理,進行音頻格式和數據幀分析,以獲取英語聽力兩段對話的停頓時刻。通過用戶在英語聽力播放前的相關設置,自動暫停,讓用戶不必進行多余的手動暫停操作,方便快捷。
【關鍵詞】英語復讀 ?APP ?音頻分析
一、引言
音頻文件是在計算機內采用特定格式存儲和表示聲音的文件,將聲音數據以二進制的格式存儲在計算機中。音頻文件實質上就是用離散的數字信號表示連續的模擬信號,音頻文件除了首部對音頻的格式大小等信息進行描述之外,剩下部分就是對聲音的采樣數據,以首部規定的采樣格式對實際聲音信號進行采樣描述。音頻文件每個采樣數據描述的是該音頻在該采樣時刻對應的音頻幅值大小,對應實際聲音信號的大小。雖然有限大小的音頻文件對音頻的描述是有限的,但是只要采樣率夠高,即單位時間內采樣的次數足夠多,人耳對聲音的分辨就能達到與真實聲音信號一樣的程度。
也正是因為音頻文件的大小是有限的,采樣率是有限大的,所以就存在不同格式和不同音質的音頻類型,對應的音頻文件大小也不同。一般音頻的音質越好,對應的音頻文件所需存儲空間就越大。常見的音頻格式有CD、WAVE、MPEG、MP3、MIDI、WMA等,其中,CD標準格式為44.1K的采樣頻率,16位量化位數(即一個采樣點幅值的存儲位數),可以說是近似無損的,它的聲音基本忠于原聲。
而其他幾種音頻格式也有各自的優點,就拿WAVE和MP3來說,WAVE音頻文件大小一般是MP3音頻文件的10倍,相應地音質也明顯高于 MP3格式的音頻,MP3音頻文件的壓縮是有損壓縮,犧牲了聲音文件中12KHz到16KHz高音頻這部分的質量來換取文件的尺寸。但由于MP3文件壓縮率高,所以是目前應用最廣泛的音頻格式之一。
二、分析與設計
(一)音頻格式分析
進行英語聽力播放前,需要先對聽力文件的音頻數據進行分析,音頻文件首部存儲著音頻格式的相關信息,應用中以字節流形式將格式信息讀出,判斷出音頻格式和采樣格式等參數。需要讀出聲道數,判斷音頻是單聲道音頻還是雙聲道立體音,雙聲道格式下音頻數據部分是左右聲道的采樣點依次存儲,分析時某個特定數據幀的音頻幅值取左右聲道的疊加;需要讀出采樣位數(即單個采樣數據的存儲位數),以使程序能夠準確提取到每一個采樣數據而不會錯位;需要讀出采樣率(即單位時間內采樣的次數),以判斷每秒的采樣數據量,結合“靜音”采樣點連續出現的個數,計算出英語聽力相應時間段“靜音”的連續時長,以此判斷是否為符合條件的停頓點;識別出數據量大小以計算整個音頻的采樣數據個數,所有這些格式信息規定了后面數據幀部分的具體結構。
(二)數據幀分析
因為數據幀部分的采樣數據表示的是音頻在該采樣時刻的幅值大小,單位時間內有固定數量的采樣數據,所以可以對幅值進行界限的分析,若音頻信息持續一段特定時間(即一定量的采樣數據)幅值處于界限以下的“靜音”狀態,則該時間段被判為兩個聽力題之間的暫停時間段,同時需要排除英語聽力剛開始時候的靜音,這一段不屬于需要暫停的時間段。再者,對于雙聲道音頻,需要將左右聲道的音頻采樣幅值進行疊加,然后再進行分析。
(三)音頻處理過程
用戶在點擊播放音頻之前,可以對音頻的停頓時長(即用戶期望兩段聽力之間的停頓時長)和判斷間隔(即多長時間的“靜音”才被判定為兩題間的停頓)進行設置,在點擊播放音頻后,程序先對音頻文件進行數據幀的分析,使用一個特定算法計算出該音頻的所有題目之間的停頓時刻,并根據用戶事先設置的需求進行自動處理。由于單位時間內采樣數據量過多,如果把每一個采樣點都計算在內,處理量過大,會導致程序運行處理的效率大大降低,所以需要設置一個合適的時間間隔進行跳躍,要既能保證停頓點判斷的準確性,又能有效提高程序的運行效率。
(四)Android界面邏輯設計
考慮到用戶使用的不同設備的分辨率與屏幕大小都不一樣,所以軟件UI采用RelativeLayout相對布局,讓用戶在使用不同設備的時候界面都能正常顯示。
UI界面上添加了一個懸浮按鈕,將眾多復雜的操作隱藏其中,使主題界面顯得簡潔,提高用戶使用體驗。在主要功能實現部分,采用線程監聽播放狀態,當用戶點擊暫停時,線程控制進度條停止,當用戶點擊播放則繼續移動。并且用戶能夠通過ContentResolver自主添加所需處理的音頻,達到自由學習的目的。
(五)數據信息存儲
由于英語聽力文件普遍在20-30分鐘,總采樣數目過大,在英語播放時進行音頻“靜音段”判斷會占據Android設備過多的運行資源,從而影響App的運行性能,所以需要進行數據信息的緩存操作,存儲已添加播放過的音頻路徑、總采樣數、停頓點等信息,其中停頓點采集耗費的運行資源較多,對其進行緩存是提高應用運行效率的重要措施。
(六)具體設計
基于音頻幅值判斷的“靜音段”檢測方便快捷,但是要想音頻檢測具有更好的普適性,則需要對市面上的英語聽力文件進行一個廣泛的統計分析,得到關于兩題之間最普遍的間隔時長;同時,需要調查市面上主要音頻格式的采樣率,讓應用能夠分析處理盡可能多類型的采樣率。再者,還需要對英語聽力的“靜音”幅值范圍進行統計分析,得到最合適的范圍,以使英語聽力的“靜音”檢測更加精確。
三、小結
基于Android的英語自動復讀軟件,很好地結合了音頻處理技術和英語聽力練習的需求,讓英語聽力練習更加智能化。
參考文獻:
[1]王先全,李建蜀.WAVE聲音文件格式的分析及其合成[J].電腦開發與應用,1999.07:29-30.
[2]高彥.基于相似度的音頻檢索系統的設計與實現[D].復旦大學,2011.
[3]馮哲.基于內容的視頻檢索中的音頻處理[D].復旦大學,2004.
[4]李剛.瘋狂Java講義[M].電子工業出版社,2008.
基金項目:課題資助:南昌航空大學第14屆“三小”課題。