一,概述
消費類的音頻電子產(chǎn)品的一個發(fā)展趨勢是小型化,而揚聲器設(shè)計的尺寸也越來越受限,如何在受限的空間提供優(yōu)質(zhì)的音頻體驗,是目前帶音頻功能的電子產(chǎn)品面臨的難題之一。音效增強技術(shù)可以在一定程度上彌補物理的局限性,同時也能為用戶提供豐富的音頻體驗。傳統(tǒng)的音效增強技術(shù)經(jīng)常和音效DSP芯片綁定,一方面是技術(shù)商業(yè)化的考慮,另一方面是電子產(chǎn)品主芯片處理能力不足導(dǎo)致的。但近年來芯片技術(shù)突飛猛進,主芯片的處理能力往往是富余的,完全可以滿足音效處理,通過軟件的方式實現(xiàn)音效增強變得更加可行。同時我們也看到電子產(chǎn)品的軟硬件平臺是多樣的,設(shè)計一個跨平臺通用的音效增強系統(tǒng)可以從成本和技術(shù)上提升產(chǎn)品的競爭力。本文主要探討音效增強系統(tǒng)設(shè)計和跨平臺的實現(xiàn)。
二、音效增強系統(tǒng)的設(shè)計
常見的音效增強技術(shù)由均衡器,動態(tài)范圍控制,聲場擴展,低音增強等技術(shù),結(jié)合音頻產(chǎn)品實際需求和行業(yè)調(diào)音經(jīng)驗,設(shè)計了音效增強系統(tǒng)的框架。如下圖所示:
2.1音量控制
音量控制模塊主要時實現(xiàn)音量曲線的控制,讓用戶調(diào)整音量時響度的變化是均勻的,避免出現(xiàn)響度步進太大或太小的情況,影響用戶的體驗。音量控制模塊是在音效增強系統(tǒng)的前端,為后續(xù)模塊的處理提供更加準確的信號強度和響度的估算。
2.2混音器
混音器主要針對單喇叭單元的產(chǎn)品,常見的音源都是立體聲的,如果在音效處理前將立體聲轉(zhuǎn)換為單聲道輸出,在后續(xù)的模塊處理過程中可以節(jié)省一半的運算量,從而降低CPU使用率和系統(tǒng)的功耗。
2.3重采樣
重采樣模塊的主要作用是規(guī)整輸入數(shù)據(jù)的采樣頻率和格式,為后續(xù)模塊的處理提供統(tǒng)一的采樣頻率和數(shù)據(jù)格式,降低模塊設(shè)計的難度。本系統(tǒng)中采用的是sinc-src的重采樣算法[1]。
2.4聲場擴展
一個立體聲信號可用通過Mid/Side編碼來改變聲場的寬度[2]。M/S編碼是指一個立體聲信號可以由Mid信號和Side信號組成,它和左右聲道的關(guān)系如下:
如果在處理的過程中,引入一個縮放因子ω,可以實現(xiàn)聲場的擴展或者變窄。當ω>1時,聲場變寬,當ω<1時,聲場變窄,當ω=1時,聲場不變。
計算到M/S信號后,對其解碼就可以得到新的左右聲道信號。
2.5均衡器
常用的均衡器有兩種形式,一種是圖示均衡器(G-EQ),有固定中心頻點和Q值,即將頻段劃分為數(shù)十段,如31段均衡器。另外一種的參量均衡器(P-EQ),可以精細地調(diào)整Q值,中心頻率,增益。由于PEQ能夠提供更加精細的控制,本文采用的是二階的參量均衡器,濾波器或頻段的個數(shù)由用戶設(shè)置。均衡器原理可以參考文獻[3],它由一個二階全通濾波器A(z)和特殊的濾波器結(jié)構(gòu)組成,如下圖所示:
其中Ω是歸一化的-3dB帶寬,ω0表示歸一化的中心頻率,K表示均衡器的增益。通過上述公式,可以精確控制均衡器的中心頻率,增益和Q值(帶寬)。
2.6等響曲線補償
等響曲線是指通過對人耳聲響實感的測定所得出的聲音響度主觀感量(響度級)相等的一簇曲線。同一聲壓級,不同的頻率人耳主觀感受到響度是不一樣的。對這個響度的衡量采用響度級來表示,單位是方(phon)。以1kHz的響度作為基準,將其他頻率響度相同的純音聲壓級連成一條曲線就形成等響曲線,多個響度級就形成多條曲線,最終得到等響曲線圖。本文根據(jù)等響曲線的特性,對各頻率的響度相對進行補償。首先對輸入信號的音量和幅度做測量,并結(jié)合揚聲器的輸出得到對應(yīng)的聲壓級,根據(jù)預(yù)置的濾波器進行補償部分頻段的輸出,最后使聲音聽起來響亮和均衡,優(yōu)化聽音感受。
2.7動態(tài)低音增強
在小型揚聲器系統(tǒng)中,低音的表現(xiàn)受限于產(chǎn)品結(jié)構(gòu)空間和功放功率,常常不能達到很好的效果。本系統(tǒng)設(shè)計了動態(tài)低音增強模塊,在小信號輸入時,適當?shù)卦鰪姷皖l輸出,而在大信號輸入時,則對信號做一定的壓制,防止喇叭打底失真,或者造成喇叭的損壞。
2.8動態(tài)范圍壓縮
動態(tài)范圍壓縮(Dynamic Range Compression)主要用來降低大信號的音量和提升小信號幅度,從而降低或者壓縮音頻信號的動態(tài)范圍。一般動態(tài)范圍壓縮器分為4種,分別是壓縮器,限幅器,噪聲門限器和擴展器。在本系統(tǒng)中主要用到壓縮器。壓縮器是由線性轉(zhuǎn)分貝運算,增益計算,增益平滑等模塊組成。如下圖所示
DRC運算的過程是基于分貝來實現(xiàn)的,所以在DRC處理前后需要做線性數(shù)值和分貝數(shù)值的轉(zhuǎn)換。增益計算塊主要是用來粗略的計算當前的信號是否需要壓縮,以及壓縮的比例,需要Threashold和Ratio參數(shù)來實現(xiàn)控制;增益平滑模塊采用了一個一階的濾波器平滑快速變化的增益值,避免出現(xiàn)對原始信號的調(diào)制現(xiàn)象,需要攻擊時間和釋放時間參數(shù)來實現(xiàn)控制,詳細算法和實現(xiàn)可以參考文獻[4]。全頻段的DRC控制效果很難滿足需求,本文的系統(tǒng)設(shè)計了3段的DRC進行獨立控制,包括低音,中音和高音的DRC,在進行動態(tài)壓縮前先進行分頻,處理完成后再合成最終的信號輸出,其中分頻點可在調(diào)音時設(shè)置。
三、跨平臺音效增強系統(tǒng)的設(shè)計和實現(xiàn)
由于音頻產(chǎn)品依賴的系統(tǒng)是多樣的,有Windows,Linux和Android,一些低端的產(chǎn)品甚至用到了RTOS系統(tǒng),為了讓軟件更具移植性和通用性,算法和系統(tǒng)的實現(xiàn)均采用C語言編寫,調(diào)音用戶界面軟件采用QT技術(shù)。音頻產(chǎn)品和調(diào)音軟件的通信采用網(wǎng)絡(luò)或串口進行通信,實現(xiàn)實時調(diào)音。整個系統(tǒng)的架構(gòu)如下圖所示:
音效核心模塊除了本文第二節(jié)介紹的各個子模塊,還有幾個模塊。調(diào)音配置模塊,負責(zé)將調(diào)音參數(shù)轉(zhuǎn)換為各個模塊的參數(shù);音效實時切換模塊,實現(xiàn)多種音效即時切換,本文在兩種音效切換期間加入混音處理,避免音頻信號突變,出現(xiàn)噪聲;音效鏈路管理模塊負責(zé)管理各個音效處理子模塊,搭建整體音效處理鏈路。
跨平臺適配層主要是將各個平臺的音效處理接口抽象出來,對音效增強處理模塊和特定平臺的音頻系統(tǒng)進行解耦。
每個特定的系統(tǒng)都有自己的音頻子系統(tǒng),并且差異非常大,需要針對每個平臺開發(fā)相應(yīng)的插件進行適配。本文在Windows平臺采用Audio Processing Object(APO)插件實現(xiàn),在Linux平臺采用LADSPA插件實現(xiàn),在Android平臺采用Audio Effect插件實現(xiàn)。它們大致的原理的是相同的。本節(jié)將介紹這三種音效插件的實現(xiàn),以及圖形化調(diào)音軟件的實現(xiàn)。
3.1 Windows平臺音效增強系統(tǒng)的實現(xiàn)
從Vista版本開始,Windows就開始支持音頻處理對象APO,與文獻[5]虛擬聲卡方法相比,該方案需要的系統(tǒng)權(quán)限要少,穩(wěn)定性更佳,是微軟目前提供的可定制化的軟件數(shù)字信號處理方案。APO作為系統(tǒng)音頻插件,是由Windows的Audiosrv服務(wù)加載的,根據(jù)配置支持在三個位置加載,分別是SFX (Stream Effects, 流音效), MFX (Mode effects, 模式音效)和EFX (Endpoint effects, 端點音效)??紤]到我們需要實現(xiàn)系統(tǒng)級別的音效,本文實現(xiàn)的音效增強系統(tǒng)將以EFX的方式插入到系統(tǒng)的音頻鏈路。這樣任意的音頻應(yīng)用程序輸出的音頻都將經(jīng)過音效增強系統(tǒng)處理。
實現(xiàn)APO插件最直接的方法是從CBaseAudioProcessingObject基類派生出來,這個類已經(jīng)實現(xiàn)了APO許多基礎(chǔ)功能特性, 只需實現(xiàn)少量的接口就可以完成APO的基本功能, 其中最重要的是APO處理函數(shù),IAudioProcessingObjectRT::APOProcess,需要在該函數(shù)實現(xiàn)自己定義的音效處理功能??偟膩碚f,完成以下三步就可以實現(xiàn)自定義的APO:
1. 創(chuàng)建自定義APO的COM對象來實現(xiàn)所期望的音頻處理。
2. 創(chuàng)建UI界面來配置自定義的APO,這樣在系統(tǒng)音頻的配置頁面實現(xiàn)參數(shù)配置。
3. 創(chuàng)建INF文件安裝和注冊APO,以及開發(fā)自定義的音效應(yīng)用程序。
由于本系統(tǒng)設(shè)計了自己調(diào)音軟件,只需實現(xiàn)步驟1和步驟3即可。
3.2 Linux平臺音效增強系統(tǒng)的實現(xiàn)
Linux音頻系統(tǒng)并沒有統(tǒng)一的架構(gòu),但對Linux嵌入式系統(tǒng)來說,大部分都是支持ALSA音頻驅(qū)動的,所以優(yōu)先考慮在ALSA框架下實現(xiàn)音效處理。對于ALSA來說最簡單的音效植入方式是開發(fā)一個LADSPA (Linux Audio Developer's Simple Plugin API)音頻插件,然后將默認的音頻設(shè)備配置成LADSPA插件虛擬出來的音頻設(shè)備。這樣只要所有使用ALSA默認設(shè)備的音頻應(yīng)用程序的音頻輸出都經(jīng)經(jīng)過LADSPA插件的處理,從而實現(xiàn)系統(tǒng)基本音效。LADSPA的接口非常簡單,全部都包含在ladspa.h頭文件中,插件只需要實現(xiàn)對應(yīng)的接口,ALSA在初始化時就會加載該插件。所有的接口都定義在一個LADSPA_Descriptor結(jié)構(gòu)體中,包括插件輸入輸出Pins,控制參數(shù),初始函數(shù)和音頻數(shù)據(jù)處理函數(shù)等。詳細可在LADSPA網(wǎng)站查閱[6]。
3.3 Android平臺音效增強系統(tǒng)的實現(xiàn)
Android的音頻驅(qū)動是基于TinyALSA,是簡化版本的ALSA,并不直接支持LADSPA插件,所以不能用Linux的方式實現(xiàn)。幸運的是,Android開發(fā)了自己一套音效處理的架構(gòu),Audio Effect,專門提供給第三方做音效處理開發(fā)使用。類似Windows和Linux,開發(fā)Audio Effect插件同樣需要實現(xiàn)一系列的接口,包括插件的初始化,參數(shù)配置,音效處理函數(shù)等。
需要注意的是Android系統(tǒng)并不會默認加載AudioEffect插件,所以需要在應(yīng)用開啟一個音頻服務(wù)App,保證系統(tǒng)啟動的時候,能自動加載自定義的音效插件。
3.4圖形化調(diào)音軟件的設(shè)計和實現(xiàn)
音效調(diào)試往往需要邊聽音邊調(diào)試,實時調(diào)音功能在音效增強系統(tǒng)尤為重要??紤]到產(chǎn)品平臺運算量和接口受限的問題,將調(diào)音控制功能從產(chǎn)品中分離出來是必要的,簡化設(shè)備端軟件的開發(fā),同時也能給調(diào)音師統(tǒng)一的調(diào)音操作界面。本音效增強系統(tǒng)調(diào)音功能在PC端用QT開發(fā),不但支持各個音效模塊的調(diào)試參數(shù),還支持繪制即時的沖激響應(yīng)曲線,調(diào)音操作所見即所得。此外,還實現(xiàn)系統(tǒng)掃頻,揚聲器聲學(xué)曲線對照,音效對比,音頻播放器等輔助功能,極大提升調(diào)音效率和準確度。最終設(shè)計的音效增強系統(tǒng)調(diào)音用戶界面如下圖所示:
四、測試和應(yīng)用
音效增強要求能實時處理當前播放的音頻數(shù)據(jù),因此系統(tǒng)的實時性是必須保證。在不同平臺下對系統(tǒng)進行性能測試,測試數(shù)據(jù)如下表所示。
測試表明音效增強系統(tǒng)能夠滿足音頻實時處理的要求,對內(nèi)存和CPU資源的消耗在合理范圍內(nèi)。
音效增強的效果方面并沒有客觀的標準來評價,更多的是主觀的評價,目前該系統(tǒng)已經(jīng)用于實際的產(chǎn)品項目中,受到客戶和消費者的認可。
五、總結(jié)
本文從消費類音頻產(chǎn)品音效方面的實際需求出發(fā),設(shè)計并實現(xiàn)了一個完整的音效增強系統(tǒng)。該系統(tǒng)支持均衡器,動態(tài)范圍控制,聲場擴展,低音增強,等響曲線補償?shù)群诵墓δ苣K,并且為了將該音效增強系統(tǒng)應(yīng)用到更廣泛的產(chǎn)品,本文還實現(xiàn)了不同操作系統(tǒng)平臺上音效增強軟件移植的方案。本文的音效增強系統(tǒng)具有一定的通用性和擴展性,能夠滿足產(chǎn)品音效方面多變的需求,為消費者提供優(yōu)質(zhì)的音頻產(chǎn)品體驗。
參考文獻
[1] Digital Audio Resampling Home Page [EB.OL]. [2021-05-05]. https://ccrma.stanford.edu/~jos/resample
[2] Tarr E . Hack Audio: An Introduction to Computer Programming and Digital Signal Processing in MATLAB[M]. 2018.
[3] Regalia, P., & Mitra, S. (1987). Tunable digital frequency response equalization filters. IEEE Transactions on Acoustics, Speech, and Signal Processing, 35(1), 118-120. doi:10.1109/tassp.1987.1165037
[4] Giannoulis, Dimitrios, Michael Massberg, and Joshua D. Reiss. "Digital Dynamic Range Compressor Design –– A Tutorial and Analysis."?Journal of Audio Engineering Society. Vol. 60, Issue 6, 2012, pp. 399–408.
[5]閏震海,楊飛然,楊軍.基于Windows平臺的音效增強系統(tǒng)設(shè)計與實現(xiàn)[J].電聲技術(shù),2016,40(3):37—44.
[6] Linux Audio Developer's Simple Plugin API (LADSPA)[EB.OL]. [2021-05-05]. https://www.ladspa.org/
作者簡介:
姓名:黃萬章 出生年:1986-02-25 性別:男 籍貫 : 廣東省廣州市 民族:漢 職稱:無 學(xué)歷:華南理工大學(xué)碩士 研究方向:信號與信息處理
國光電器股份有限公司