webrtc中AGC的應用

2022-07-01 12:15:12 字數 2445 閱讀 1909

webrtc--audioprocessing的使用

1.audioprocessing的例項化和配置:

audioprocessing* apm = audioprocessing::create(0);

apm->level_estimator()->enable(true);//啟用重試次數估計元件

apm->echo_cancellation()->enable(true);//啟用回聲消除元件

apm->echo_cancellation()->enable_metrics(true);//

apm->gain_control()->enable(true);//啟用增益控制項,client必須啟用哦!

apm->high_pass_filter()->enable(true);//高通過濾器元件,過濾dc偏移和低頻噪音,client必須啟用

apm->noise_suppression()->enable(true);//雜訊抑制元件,client必須啟用

apm->voice_detection()->enable(true);//啟用語音檢測元件,檢測是否有說話聲

apm->voice_detection()->set_likelihood( voicedetection::kmoderatelikelihood);//設定語音檢測的閥值,閥值越大,語音越不容易被忽略,同樣一些噪音可能被當成語音。

apm->initialize();//保留所有使用者設定的情況下重新初始化apm的內部狀態,用於開始處理乙個新的音訊流。第乙個流建立之後不一定需要呼叫此方法。

2.audioprocessing的工作流程:

audioprocessing也是事件驅動的,事件分為初始化事件、捕捉音訊事件、渲染音訊事件。

初始化事件:

apm->set_sample_rate_hz(sample_rate_hz);//設定本地和遠端音訊流的取樣率

apm->set_num_channels(num_capture_input_channels, num_capture_output_channels);//設定本地和遠端音訊流的通道數

apm->analyzereversestream(&far_frame));//分析遠端音訊流的10ms的frame資料,這些資料為回聲抑制提供參考。(啟用回聲抑制的時候需要呼叫)

捕捉事件:

apm->gain_control()->set_stream_analog_level(capture_level);

apm->set_stream_delay_ms(delay_ms + extra_delay_ms);//設定本地和遠端音訊流之間的延遲,單位毫秒。這個延遲是遠端音訊流和本地音訊流之間的時差,計算方法為:

delay = (t_render - t_analyze) + (t_process - t_capture);

其中t_analyze是遠端音訊流交給analyzereversestream()方法的時間;

t_capture是本地音訊frame捕捉的時間;

t_process是同樣的本地音訊frame被交給processstream()方法的時間。

int err = apm->processstream(&near_frame);//處理音訊流,包括各個環節的處理。(如增益調節、回聲消除、雜訊抑制、語音檢測、高通過率等,沒有解碼哦!是針對pcm資料做處理的)

capture_level = apm->gain_control()->stream_analog_level();//模擬模式下,必須在processstream之後呼叫此方法,獲取新的音訊hal的推薦模擬值。這個麥克風音量值可以設定用來調節本地麥克風音量值

stream_has_voice =apm->voice_detection()->stream_has_voice();//檢測是否有語音,必須在processstream之後呼叫此方法

ns_speech_prob = apm->noise_suppression()->speech_probability();//返回內部計算出的當前frame的人聲優先概率。

3.audioprocessing 的釋放

audioprocessing::destroy(apm);

apm = null;

更多參考:

webrtc agc 演算法原理介紹(二)

webrtc中agc模組分析(上)

webrtc中agc模組分析(下)

webrtc--audioprocessing的使用

webrtc agc 演算法原理初識一

webrtc agc 演算法二

webrtc audioprocessing 3a: aec agc anc 初探

webrtc 音訊agc/aec/ns各平台設定原始碼分析

WebRTC之AGC自動增益控制

當對語音的響度進行調整的需要時,就要做語音自動增益 agc 演算法處理,語音聊天時都會用到這個演算法。最簡單的硬性增益處理是對所有音訊取樣乘上乙個增益因子,它也等同於在頻域每個頻率都同時乘上這個增益因子,但由於人的聽覺對所有頻率的感知不是線性的,是遵循等響度曲線的,導致這樣處理後,聽起來感覺有的頻率...

webrtc中AudioProcessing的使用

1.audioprocessing的例項化和配置 audioprocessing apm audioprocessing create 0 apm level estimator enable true 啟用重試次數估計元件 apm echo cancellation enable true 啟用回...

WebRTC 中的頻寬偵測

pacing bitrate 為allocated bitrate bps 1000 kdefaultpacemultiplier,這裡的kdefaultpacemultiplier 2.5 void pacedsender setallocatedsendbitrate int allocated...