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...