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