speex回聲消除功能測試

2021-09-20 09:55:03 字數 1431 閱讀 8544

今天測試了speex中帶回聲消除模組,效果還可以。

測試環境:網路雙工通話,16k取樣16位編碼,speex壓縮以及解壓.原來通話會聽到線路另一端傳過來的自己的聲音,現在在程式中加入speex回聲消除模組。

**:

#include

"speex/speex_echo.h"

............#define speex_frame_byte 640

speexechostate *echo_state speex_echo_state_init

(320,5000)

;short echo_data[speex_frame_byte / 2];//從網路上收到的語音包

//讀取音效卡,將資料儲存在input_frame0中......//回聲消除speex_echo_cancellation(echo_state,input_frame0,echo_data,input_frame);//將回聲消除後的資料input_frame通過網路傳送......

speex_echo_state_init(320,5000);這個函式中320為每乙個資料報的幀數,5000即為尾音長度,這個引數的設定將影響回聲消除模組的處理效果。如果在乙個房間裡,最好是發射時間的1/3.我現在的情況是通過網路傳輸,大概估算回聲出現的時間是在說話後1秒左右的時間,1s的幀數是320 * 50 = 16000,1/3即5333幀,取5000幀寫入函式。

今天測試了speex中帶回聲消除模組,效果還可以。

測試環境:網路雙工通話,16k取樣16位編碼,speex壓縮以及解壓.原來通話會聽到線路另一端傳過來的自己的聲音,現在在程式中加入speex回聲消除模組。

**:

#include

"speex/speex_echo.h"

............#define speex_frame_byte 640

speexechostate *echo_state speex_echo_state_init

(320,5000)

;short echo_data[speex_frame_byte / 2];//從網路上收到的語音包

//讀取音效卡,將資料儲存在input_frame0中......//回聲消除speex_echo_cancellation(echo_state,input_frame0,echo_data,input_frame);//將回聲消除後的資料input_frame通過網路傳送......

speex_echo_state_init(320,5000);這個函式中320為每乙個資料報的幀數,5000即為尾音長度,這個引數的設定將影響回聲消除模組的處理效果。如果在乙個房間裡,最好是發射時間的1/3.我現在的情況是通過網路傳輸,大概估算回聲出現的時間是在說話後1秒左右的時間,1s的幀數是320 * 50 = 16000,1/3即5333幀,取5000幀寫入函式。

speex 回聲消除的用法

speex的回聲訊息 就是speex echo cancellation函式的正確用法 回聲訊息的原理 對參考聲音 解碼的對端原始語音包 做延遲 會有多個延遲,如麥克風直接採集到音箱的聲音,經牆壁反射後再次採集 衰減,從聲卡里採集到的語音,做乙個語音合成。回聲產生的條件 通話中,有一方使用音箱 或者...

speex與webrtc回聲消除小結

回聲消除aec包含 延時估計對齊 線性自適應濾波器 nlp 雙講檢測 處理 舒適雜訊cng 一 speex aec 1 沒有nlp 2 只考慮實時dsp系統,即是沒有延時對齊等 3 自適應濾波 mdf 使用雙濾波器結構,自適應濾波器因子自動更新 二 webrtc aec 1 雙講檢測沒有,雙講時遠端...

回聲消除概述

回聲消除概述 2016 02 21 23 00 00 分類 android平台 首先,a的聲音傳給b,b然後用喇叭放出來,而這時b的mic則會採集到喇叭放出來的聲音,然後傳回給a,如果這個傳輸的過程中時延足夠大,a就會聽到自己剛才說的話,這就是回聲。回聲消除器的作用就是在b端對b採集到的聲音進行處理...