音頻3A處理簡介之AGC(自動增益控制)

在音頻通話和視頻會議中,音頻自動增益控制AGC模塊的主要作用:

  • ? 穩定音頻信號的輸出電平。無論麥克風采集信號的強弱(如用戶離麥克風遠近程度不同),盡可能保證音頻采集模塊的輸出音量保持相對一致,不會偏大造成消波,也不會偏小導致聽不清楚。
  • ? 動態適應音量采集的變化環境。即可以應對環境中噪音變化、設備差異(如不同麥克風靈敏度)、用戶說話習慣差異,動態自動調整語音信號的強度,使得其輸出保持在一個合適的水平。

在常見的消費類電子產品的音頻編解碼器Audio Codec的處理鏈路之中,AGC模塊一般工作中經過ADC轉換之后的數字域處理環節,通過DSP算法來實現動態調整語音信號數據增益的功能,這樣的處理方式靈活性更好,并且可以與其他DSP算法如降噪、AEC等協同優化。當然,一些低端的Audio Codec(例如TLV320AIC3101)內部缺少豐富的數字音頻處理功能,那么AGC模塊也可以直接在模擬域對PGA的增益進行調節來實現自動增益控制的效果。如下圖是TLV310AIC3101的AGC處理鏈路。

另外,我們只有在音頻信號的輸入鏈路的處理中,也就是對麥克風采集語音信號的處理中,才會用到AGC動態調整增益來實現語音信號強度基本保持一致的效果;在音頻信號的輸出鏈路,也就是對揚聲器播放語音信號的處理鏈路之中,一般是不需要AGC的,此時對于輸出語音信號的大小通常由用戶手動設置或系統音量管理,無需自動增益。

1. AGC音頻處理鏈路與VAD模塊

一般而言,從麥克風采集到的聲音信號中,除了真正的我們想要保留的本地端語音信號以外,不可避免地還會包含有一定的噪聲、雙向對接狀態下的回聲等,而AGC既然是通過調整音頻采樣數據的增益來維持音量的穩定性,那么其要穩定的對象勢必是盡可能去除了噪聲和回聲的本地端語音信號,這就是在音頻3A鏈路中,應該把AGC放在AEC和ANS之后進行處理的原因所在,因為我們要進行音量自動增益控制的對象并不包含回聲和噪聲。

以上的噪聲和回聲分別在ANS和AEC環節處理后,在AGC自動增益控制的處理流程中,還包含一個VAD(語音活動檢測)模塊用于決定何時啟動音頻采樣數據的增益調整。VAD模塊的主要目標就是對麥克風連續采集的語音信號區分為語音段與非語音段(如靜默或背景噪聲),只在語音段才會激活AGC對音頻數據的增益進行動態控制,非語音段抑制增益調整或維持固定增益,防止放大噪聲,避免AGC的動態增益調整對非語音信號產生負面影響。

VAD模塊對于語音段和非語音段的判決,以音頻幀為單位,對音頻幀內音頻采樣數據的均方根能量進行統計,與VAD模塊維護的動態本地噪聲的能量進行比較,若當前幀能量高于動態噪聲本底+固定偏移(如+3dB),可判定為語音段候選,再結合狀態機控制機制(如連續多幀高于閾值判定為語音段,連續多幀低于閾值判定為非語音段),給出語音段和非語音段的最終判決。

2. AGC的處理流程

2.1. 音頻采樣數據的預處理

如上所述,AGC工作在Audio Codec的數字域,也就是對麥克風采集信號經過ADC以及其他音頻處理模塊處理后的數字采樣序列中執行自動增益處理的流程。在該環節,首先對連續的音頻采樣數據進行切片處理,把連續的音頻數據切分為固定采樣數量的音頻幀,后續的AGC處理是以音頻幀為單位。

在AGC的分幀處理上,一般會采用50%重疊的方式進行處理,即當前音頻幀的前50%采樣與上一個音頻幀的后50%采樣相同,以平滑音頻幀的邊界效應,避免兩個連續的音頻幀增益不同造成的突變。

2.2. VAD檢測

如上所述,VAD模塊通過比較當前音頻的幀能量與噪聲本底的能量,判斷當前音頻幀處于語音段還是非語音段。

AGC的流程中一般僅在語音段觸發AGC增益調整。

2.3. 自動增益的計算階段

自動增益的計算階段要依賴于AGC模塊的幾個提前預設值:

  • ? 目標電平,也就是對于AGC模塊的調整而言,期望AGC模塊的輸出能夠達到的目標音量水平。
  • ? 時間常數,表示增益調整的時間參數,用于控制增益調節的平滑度,避免聲音音量忽大忽小。

在計算增益時,對當前音頻幀的能量和目標電平進行比較,當當前幀能量高于目標電平時,應適當減小增益以避免音頻采樣數據疊加增益后過載;而如果當前幀能量低于目標電平,則增大增益提高音量的幅度。

針對信號的動態范圍比較小(信號幅度的差異不大)的應用場景,一般就可以簡單的選擇線性增益調整模式:即根據當前音頻幀的能量與目標電平的差異確定一個增益的大小,對所有的音頻采樣進行相同的增益調整。

而針對復雜信號環境(如突發噪聲、多頻段干擾),則需采用非線性增益的調整策略:

  • ? 動態范圍壓縮(DRC)。DRC是一種通過非線性增益調整信號動態范圍的技術,不僅可以用于語音信號的處理,也廣泛應用于通信系統和智能設備領域中。DRC的工作大致依賴于三個參數:threshold_low、threshold_high和ratio。其工作邏輯大概為:當音頻采樣的幅度和能量低于threshold_low閾值的時候,DRC就會設置比較低的增益以抑制噪聲;當音頻采樣的幅度和能量在threshold_low和threshold_high之間的時候,DRC按照前面計算出來的目標增益對該音頻采樣進行設置;而當音頻采樣的幅度和能量大于threshold_high時,就按照ratio的設置,對這個音頻采樣的增益進行適當壓縮,以避免出現消頂的問題。
  • ? 多頻段增益控制。首先通過FFT運算執行頻帶分割,把信號分為低頻、中頻、高頻子帶;然后對每個子帶單獨計算并調整增益,這樣可以避免整體調整所導致的頻譜失衡問題,整個處理方式有點類似于EQ的工作流程了,對于不同頻段設置不同的增益,或者抑制,或者增強。

此外,自動增益計算和調整的時間常數則主要包含兩種類型的時間參數,用于實現增益和調整后語音幅度的平滑和自然變化:

  • ? 啟動時間(Attack Time):當音頻信號的幅度突增時,快速降低增益(典型值20~100ms),防止出現瞬時過載的問題。
  • ? 釋放時間(Release Time):當信號幅度減弱時,則緩慢恢復增益(典型值100~2000ms)。

2.4. 增益的應用階段及其后處理

AGC處理的最后階段,就是把計算階段所計算出來的增益應用到當前音頻幀的所有采樣數據上。根據前一階段采用線性或者非線性的增益計算策略,針對性的對音頻采樣設置一致或者不一致的增益。

此外,經過以上AGC處理以后的音頻采樣序列數據,還需要限制其幅值(如-1dBFS),防止DAC或揚聲器過載;以及與前面階段的AEC、ANS等音頻處理模塊反饋聯動,實現對音頻數據的穩定控制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917271.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

web前端打包apk包

我用的是HBuilder工具,可視化更便捷,目前我這操作的apk包是不需要上架的,所以跟實際需要上架的可能還有些出入 首先先新建個項目,選擇5App模式 把目前需要打包的內容上傳到服務器,我們以嵌套的形式進行打包,找到index.…

Ansible提權sudo后執行報錯

1.問題 配置了sudo提權信息后,執行ansible-play報錯,報錯信息如下:2.原因 sudo沒有執行**/bin/sh的權限,而ansible腳本中依賴/bin/sh**,所以報錯了: 查看日志sudo tail -f /var/log/secure3.解決方式 修改*…

.NET報表控件ActiveReports發布v19.0——正式兼容 .NET 9

ActiveReports 是一款專注于 .NET 和 .NET Core 平臺的報表控件。通過拖拽式報表設計器,可以快速地設計 Excel表格、Word文檔、圖表、數據過濾、數據鉆取、精準套打等類型報表,全面滿足 WinForm、ASP.NET、ASP.NET MVC、WPF 平臺中各種報表的開發需要。同…

SCI論文選詞煉句

標準句子不能啰嗦;詞不能有問題,得是SCI中經常出現的,符合上下文的。SCI論文中常出現的摸棱兩可的詞單詞涵義例子Architecture指 整體系統設計方案,如網絡層次結構、模塊組合、激活函數選擇等深度學習模型架構Structure更泛泛&…

Qt deleteLater 延遲刪除原理

deleteLater 調用 事件發送 void QObject::deleteLater() {QCoreApplication::postEvent(this, new QDeferredDeleteEvent()); }首先該對象繼承QObject調用deleteLater, 內部會發送刪除事件QCoreApplication::postEvent(this, new QDeferredDeleteEvent()) 到事件循…

TypeScript SDK 升級:通過 Upload Relay 賦能更多應用

自 3 月主網上線以來,Walrus 開發者社區持續展現出強勁的發展勢頭: 當前 Walrus 已存儲超 758 TB 數據,為數百個項目提供支持。在 2025 年 6 月舉辦的 Sui Overflow 黑客松上,Walrus 成為最受歡迎的數據層。該賽事共收到 599 個項…

C#線程同步(二)鎖

目錄 1.lock 2.Monitor 3.鎖的其它要注意的問題 3.1同步對象的選擇 3.2什么時候該上鎖 3.3鎖和原子性 3.4嵌套鎖 3.5 死鎖 3.6 性能 4.Mutex 5.Semaphore 1.lock 讓我們先看一段代碼: class ThreadUnsafe {static int _val1 1, _val2 1;static void G…

鴻蒙智能居家養老系統構思(續二)—— 適老化烹飪中心詳細構思

一、背景在“寫給華為鴻蒙智家 —— 智能居家養老系統構思”一文中,結合對居家養老的理解及個人體驗,提出了基于鴻蒙OS實現居家養老系統的粗略構思。其中包含“吃得好”。當老人到了不能隨性外出活動、只能在家消耗時光時,除了一些看看電視、…

高斯透鏡公式(調整鏡頭與感光元件之間的距離時,使得不同距離的物體在感光元件上形成清晰的影像)

當使用定焦鏡頭時,仍然可以調整鏡頭與感光元件(或膠片)之間的距離時,使得不同距離的物體在感光元件上形成清晰的影像。對此可以用高斯透鏡公式進行解釋: 一、透鏡成像的基本原理 在光學中,一個基本的公式是…

預過濾環境光貼圖制作教程:第三階段 - GGX 分布預過濾

核心目標 GGX 分布是 PBR 中模擬粗糙表面高光反射的主流模型,其核心是通過統計分布描述微表面的朝向概率。本階段的目標是: 基于第一階段生成的環境圖集,預計算 6 個級別的 GGX 過濾結果(對應不同粗糙度); 使用蒙特卡洛采樣(Monte Carlo Sampling)加速 GGX 卷積計算;…

Spring框架與AutoCAD結合應用

什么是AutoCAD? AutoCAD簡介 AutoCAD是由美國Autodesk公司開發的計算機輔助設計(CAD)軟件,廣泛應用于建筑、工程、制造、產品設計等領域。它支持2D繪圖和3D建模,提供精確的圖形工具和自動化功能,幫助用戶高效創建技術圖紙和模型。 主要功能 2D繪圖:提供直線、圓弧、多…

Java 學習筆記:常用類、String 與日期時間處理

作為一名名 Java 初學者,最近在學習過程中整理了一些關于常用類、String 類以及日期時間處理的知識點。這些內容是 Java 基礎中的重點,也是日常編程練習中頻繁用到的工具,掌握它們能讓我們在寫代碼時更加得心應手。今天把這些筆記分享出來&am…

Android常用的adb和logcat命令

ADB ADB,即 Android Debug Bridge 是一種允許模擬器或已連接的 Android 設備進行通信的命令行工具,它可為各種設備操作提供便利,如安裝和調試應用,并提供對 Unix shell(可用來在模擬器或連接的設備上運行各種命令&…

重學JS-001 --- JavaScript算法與數據結構(一)JavaScript 基礎知識

文章目錄 變量 變量命名規則 變量命名 let vs const 變量使用范圍 賦值 = 控制臺輸出 運算符 ++ -- == === !== 注釋 轉義字符 數據類型 7種 原始數據類型 1. string?? 2. number?? 3. ??boolean?? 4. null?? 5. undefined?? 6. ??symbol??(ES6 新增) 7. big…

MySQL數據閃回工具my2sql的使用

場景: 當你或者其它人員誤操作數據庫不小心刪除或者更新了一批數據,但是是當時又沒事先備份時,你可以 用這個 my2sql工具快速幫你找回數據。就是如此的絲滑。但是要注意的是只限于dml語句,所以我們在操作數據庫前必需先備份哦&…

9.1無法恢復的錯誤與 panic!

無法恢復的錯誤與 panic! 有時你的代碼中會發生嚴重問題,而你無能為力。在這些情況下,Rust 提供了 panic! 宏。實際上,有兩種方式會導致 panic:一種是執行某個操作使代碼產生 panic(例如訪問數組越界)&…

分享低功耗單火線開關語音識別方案

在眾多老舊建筑和常規家居環境里,單火線布線是主流方式。單火線語音識別芯片方案通過研發和應用特殊的單火線語音識別芯片,實現設備在單火線供電條件下穩定運行,并精準識別語音指令,為智能家居、智能照明等領域帶來便捷的語音控制…

如何在Windows操作系統上通過conda 安裝 MDAnalysis

MDAnalysis 是一個開源的 Python 庫,旨在提供一個高效且靈活的方式來分析和處理分子動力學(MD)模擬數據。它可以從不同的文件格式中讀取模擬軌跡和結構數據,進行復雜的數據處理和分析,廣泛應用于生物物理學、化學、材料科學等領域。 一、創建虛擬環境 為了能夠順利安裝,減…

實用PDF演示解決方案

它打破了傳統閱 讀模式,讓PDF文檔也能像PPT一樣流暢播放,特別適合匯報、講解等展示場景。它是綠色單文件版,無需安裝,雙擊紅色圖標即點即用。運行后第一件事,建議把界面語言切換成中文,操作更順手。導入PDF…

VS Code中如何關閉Github Copilot

點擊頂部搜索欄后面的Copilot圖標,在下拉菜單中選擇Hide Copilot。在彈出的提示框中,點擊Hide Copilot按鈕就可以了。