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