張躍軍 胡玉清 胡守國(guó) 雷靜
摘要:隨著計(jì)算機(jī)科學(xué)的發(fā)展,聲音基于數(shù)字形式傳遞,使得用計(jì)算機(jī)處理聲音成為可能,而PC用戶在連續(xù)播放不同MP3音頻的時(shí)候,經(jīng)常會(huì)出現(xiàn)不同音頻文件播放時(shí)聲音忽大忽小,影響了人耳的感受。用戶在播放不同文件時(shí),可以提取MP3音頻文件中存在的增益信息,用當(dāng)前文件的增益信息再結(jié)合上次文件的增益信息和播放音量,可智能調(diào)整當(dāng)前文件播放的音量,無(wú)需人工再調(diào)節(jié),這樣提高了用戶在使用MP3音頻文件時(shí)的方便性和舒適性。
關(guān)鍵詞:智能;PC;MP3;音頻;音量
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2021)21-69-4
0引言
聲音是傳播信息的重要途徑,尤其是現(xiàn)代計(jì)算機(jī)科學(xué)的發(fā)展,目前大量的聲音都是基于數(shù)字形式傳遞的。但是聲音數(shù)字傳播的過程中,承載聲音的音頻文件中的音量沒有統(tǒng)一的標(biāo)準(zhǔn),這樣就導(dǎo)致人們?cè)谕ㄟ^音頻文件接收信息的時(shí)候,音量忽大忽小,對(duì)聲音接收者會(huì)造成不適,音量過大可能會(huì)影響聽力,音量過小就影響接收效果,目前正常處理方式都是通過播放音頻工具的音量調(diào)節(jié)按鈕來(lái)人工調(diào)節(jié),使用起來(lái)比較繁瑣,在調(diào)節(jié)過程中也會(huì)影響接收效果,耽誤時(shí)間。
通過智能識(shí)別PC用戶音頻音量播放,能夠自動(dòng)設(shè)定音量大小,在使用不同音頻文件過程中,無(wú)需再手動(dòng)調(diào)節(jié)音量,保證用戶使用效果。尤其在特定環(huán)境下,能實(shí)現(xiàn)無(wú)接觸正常聽音頻,不會(huì)由于某些音頻文件音量過大或者過小影響聽音頻的效果。
1國(guó)內(nèi)外研究情況
楊鑫芳提出從網(wǎng)絡(luò)上下載的各種風(fēng)格的歌曲時(shí),經(jīng)常會(huì)遇到歌曲的音量高低差別問題。同時(shí)提出了可以借助美國(guó)Adobe公司的音頻處理軟件Audition來(lái)將歌曲音量進(jìn)行最高標(biāo)準(zhǔn)的規(guī)范,用戶可以非常方便地對(duì)包括歌曲在內(nèi)的各種音頻進(jìn)行響度的標(biāo)準(zhǔn)化處理[1]。此方法可以統(tǒng)一歌曲的音量,但是需要提前對(duì)音樂文件進(jìn)行處理,操作起來(lái)比較麻煩。國(guó)家知識(shí)產(chǎn)權(quán)局專利局專利審查協(xié)作四川中心的馮晨露提出了在移動(dòng)終端通過環(huán)境噪聲來(lái)自動(dòng)調(diào)節(jié)音量大小或者根據(jù)用戶的作息習(xí)慣來(lái)調(diào)節(jié)音量[2]。華南理工大學(xué)廣州學(xué)院電氣工程學(xué)院的陳崇輝設(shè)計(jì)了系統(tǒng)識(shí)別向左或右、向上或向下一揮的手勢(shì)動(dòng)作控制無(wú)線話筒的音量大小[3],可以實(shí)時(shí)緩解話筒叫嘯引起的干擾。上海工程技術(shù)大學(xué)城市軌道交通學(xué)院的雷星蒙提出了在地鐵車廂中適合人耳收聽的音量區(qū)間內(nèi)進(jìn)行廣播音量的自動(dòng)控制[4]。
這些研究表明,人們對(duì)聲音大小自動(dòng)化調(diào)節(jié)的要求越來(lái)越強(qiáng)烈。同時(shí)曹強(qiáng)分析了MP3文件Side Information Granule結(jié)構(gòu),其中Glaobal Gain表示全局量化增益,用于MP3解碼器的重新量化[5],使得可以提取MP3文件中的增益成為可能。密歇根州立大學(xué)學(xué)者哈姆澤赫·加塞姆扎德使用了全局增益和MP3比特流的其他字段之間的聯(lián)合分布。通過測(cè)量這些聯(lián)合分布的信息來(lái)檢測(cè)變化。比傳統(tǒng)的單層方法有更好的性能,準(zhǔn)確率提高了20.4%[6],說(shuō)明國(guó)外對(duì)MP3增益使用也一樣在進(jìn)行。
2基本原理
MP3其實(shí)就是MPEG-1音頻的Layer 3[7]。MPEG音頻壓縮是一種基于感知的策略,在確保輸出的信號(hào)對(duì)于人類的聽力系統(tǒng)感覺不到差別,而不是要保持編碼和解碼后的信號(hào)完全一樣。陜西學(xué)者董寧采用對(duì)MP3編碼器算法進(jìn)行心理聲學(xué)模型改進(jìn),提高了編碼質(zhì)量,降低了運(yùn)算復(fù)雜度[8]。
MP3編碼器將原始聲道通過快速傅里葉變換到頻域,然后通過算法加入更多的信息。根據(jù)資料顯示,人類的聽力系統(tǒng)頻率在20 Hz~20 kHz,但其實(shí)高于15 kHz頻率的聲音一般通過聽力系統(tǒng)聽不到,只能通過身體其他部位感受到它的存在,所以MP3在編碼的時(shí)候會(huì)省掉16 kHz以上的聲音。同時(shí)使用了混合立體聲的編碼,進(jìn)一步壓縮了音頻文件,還用了哈夫曼編碼。
MP3文件是由幀(frame)構(gòu)成,幀是MP3文件的最小組成單位。每一幀都包含幀頭,并可以計(jì)算幀的長(zhǎng)度。根據(jù)幀的性質(zhì)不同,文件主要分為3個(gè)部分:Tag_v2(ID3v2)標(biāo)簽幀、數(shù)據(jù)幀和Tag_v1(ID3v1)標(biāo)簽幀。并非每個(gè)MP3文件都有ID3v2,但是數(shù)據(jù)幀和ID3v1幀是必須的。ID3v2在文件頭以字符串“ID3”為標(biāo)志,包含了演唱者、作曲及專輯等信息,長(zhǎng)度不固定,擴(kuò)展了ID3V1的信息量。ID3v1在文件結(jié)尾以字符串“TAG”為標(biāo)記,其長(zhǎng)度是固定的128 byte,包含了演唱者、歌名、專輯及年份等信息。數(shù)據(jù)幀由文件大小和幀大小來(lái)決定,每個(gè)幀頭長(zhǎng)度是4 byte(32 bit),幀頭后面可能有2byte的CRC校驗(yàn)。音頻數(shù)據(jù)的組成結(jié)構(gòu)為:SideInformation+MAIN_DATA+AncillaryData(Option),即音頻數(shù)據(jù)由邊信息、主數(shù)據(jù)和附加數(shù)據(jù)組成。以雙聲道邊信息格式為例,音頻數(shù)據(jù)如表1所示。而Side Information Granule結(jié)構(gòu)包含Part2_3 Length,Big Value,Global Gain,Scale Factor Compress,Window Switch Flag,Pre Flag,Scale Factor和Count1 Table Select。從這個(gè)結(jié)構(gòu)中,可以看到增益信息。
提取MP3音頻文件中的增益,可以先設(shè)定一個(gè)函數(shù)讀取二進(jìn)制文件的內(nèi)容,函數(shù)為GetBits (LPBYTE pByData, DWORD& dwBitStart, int nLen);pByData為音頻文件,dwBitStart為二進(jìn)制讀取的開始位置,nLen為讀取內(nèi)容的長(zhǎng)度。通過MP3文件格式讀取對(duì)應(yīng)的增益信息,把獲得的增益值統(tǒng)一放到一個(gè)列表中。對(duì)所有增益信息求和,并求出其平均值,所求的值保存到這個(gè)MP3文件相關(guān)信息中。當(dāng)智能識(shí)別第一次啟動(dòng)時(shí),如果讀取配置文件,讀取之前的增益和音量值成功,智能識(shí)別系統(tǒng)會(huì)自動(dòng)識(shí)別之前MP3音頻文件的音量和增益,再根據(jù)當(dāng)前文件的增益,算出當(dāng)前文件需要播放的音量。根據(jù)測(cè)試當(dāng)前音量計(jì)算公式如下:當(dāng)前音量=之前音量×(之前增益/當(dāng)前增益)。其中,系數(shù)=9比較適合。否則默認(rèn)一個(gè)音量,用戶根據(jù)自己的喜好可以調(diào)整音量。程序退出的時(shí)候,就會(huì)自動(dòng)把當(dāng)時(shí)播放的音量和增益值保存起來(lái)。
3設(shè)計(jì)流程
智能識(shí)別PC用戶的音頻音量的研究對(duì)象為MP3格式的音頻文件,MP3文件的格式中包含增益數(shù)據(jù),用戶在播放MP3時(shí),通過音頻播放器調(diào)用文件中的增益數(shù)據(jù),結(jié)合播放器的音量參數(shù)進(jìn)行播放。自動(dòng)設(shè)定一個(gè)缺省的音量播放,把當(dāng)前MP3文件的增益提取出來(lái),然后把當(dāng)前的音量和增益保存到本地文件“savevol.info”中。當(dāng)用戶調(diào)節(jié)音量后,調(diào)節(jié)后的音量會(huì)更新到本地文件“savevol.info”中。當(dāng)用戶播放第2個(gè)音頻文件時(shí),系統(tǒng)首先會(huì)把之前的音量和增益文件“savevol.info”讀取出來(lái),與當(dāng)前的音頻文件的增益結(jié)合換算出目前播放音頻的音量,然后把當(dāng)前播放的音量和文件的增益重新保存到本地文件“savevol.info”中。依次這樣循環(huán),可以實(shí)現(xiàn)智能識(shí)別音頻音量,用戶無(wú)需根據(jù)每個(gè)音頻文件音量的大小來(lái)調(diào)節(jié)。
用二進(jìn)制形式打開需要播放的文件,然后找到當(dāng)前音頻文件的增益因子,獲取“savevol.info”文件中的增益和音量與之對(duì)比,核算出當(dāng)前音頻播放的音量。然后播放當(dāng)前的音頻文件,把當(dāng)前音頻文件的增益因子和音量數(shù)據(jù)保存到“savevol. info”文件中,依次循環(huán),直到結(jié)束程序。智能識(shí)別音量算法流程如圖1所示。
4系統(tǒng)測(cè)試
根據(jù)設(shè)計(jì)的方法,先開發(fā)一個(gè)正常的MP3音頻播放系統(tǒng),然后在讀取MP3音頻文件之前加入本文研究的智能識(shí)別方法,即可達(dá)到自動(dòng)識(shí)別用戶音頻音量。本文使用VS2008開發(fā)環(huán)境,用VC語(yǔ)言開發(fā)完成。完成界面如圖2所示。在剛剛開始的時(shí)候,第一首曲子《綠軍裝的夢(mèng)》的音量為10個(gè)小格,在用戶不干預(yù)音量的情況下,播放器在自動(dòng)播放第2首曲子《愛情的秋天》的時(shí)候,如圖3所示,音量自動(dòng)跳到了7個(gè)小格,在播放器自動(dòng)播放第3首曲子《大碗茶》的時(shí)候,如圖4所示,音量自動(dòng)跳到了4個(gè)小格。這是因?yàn)槊總€(gè)曲子的增益不一樣,要達(dá)到最后用戶聽到的音量保持一致,系統(tǒng)自動(dòng)調(diào)節(jié)播放器播放當(dāng)前MP3文件音量的大小來(lái)控制最后用戶聽到的音量與之前的MP3文件音量一致,用這樣的系統(tǒng)播放MP3自然提高了用戶聽覺的舒適性。
5結(jié)束語(yǔ)
通過研究MP3音頻文件的格式,用二進(jìn)制形式打開文件,提取MP3文件中的增益信息,結(jié)合上次播放的音量和增益信息,與當(dāng)前文件的增益信息得出當(dāng)前文件播放時(shí)需要的音量,達(dá)到了用戶在用此系統(tǒng)播放MP3文件時(shí),音量自動(dòng)與用戶設(shè)定的大小一致,提高了用戶在使用MP3音頻文件時(shí)的舒適性。當(dāng)然直接用人耳來(lái)判斷聲音大小,不同的人是有一定的差異,如何解決這個(gè)問題,需要參照其他技術(shù)手段進(jìn)行測(cè)試,進(jìn)一步改進(jìn)算法,這是以后改進(jìn)的方向。
參考文獻(xiàn)
[1]楊鑫芳.將多首歌曲音量一步標(biāo)準(zhǔn)化[N].電子報(bào), 2018-12-30.
[2]馮晨露,任建宇.移動(dòng)終端音量調(diào)節(jié)專利技術(shù)分析[J].中國(guó)科技信息,2019(17):23-24.
[3]陳崇輝,鄧筠.基于慣性傳感器的體感手環(huán)教學(xué)系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2020,28(8):182-186.
[4]雷星蒙,孫婧楠,肖曼琳.地鐵車廂中廣播自適應(yīng)音量控制系統(tǒng)的設(shè)計(jì)[J].科技傳播,2018,10(7):66-67.
[5]曹強(qiáng).數(shù)字音頻規(guī)范與程序設(shè)計(jì):基于Visual C++開發(fā)[M].北京:中國(guó)水利水電出版社, 2012 .
[6] GHASEMZADEH H. Multi-Layer Architecture for Efficient Steganalysis of UnderMp3Cover in Multi-Encoder Scenario[J].IEEE Transactions on Information Forensics and Security, 2019,14(1):186-195.
[7]阮燁.基于壓縮音頻主碼本可替代位的信息隱藏算法研究[D].北京:北京林業(yè)大學(xué),2019.
[8]董寧.MP3編碼算法的改進(jìn)與優(yōu)化[J].電子設(shè)計(jì)工程, 2015,23(14):48-50.
計(jì)算機(jī)與網(wǎng)絡(luò)2021年21期