Multimedia - 回音消除
材料準備
- AmebaPro2 [ AMB82 MINI ] x 1
- 3.5mm TRS/TRRS 立體耳機線插孔 x 1 (e.g., Adafruit 2791 / Sparkfun 11570)
- Adafruit PDM 麥克風插孔 x 1 [Optional]
範例說明
介紹
此範例說明如何使用 Ameba 開發板的 Acoustic Echo Cancellation (AEC) 音頻效能。 當 Ameba Pro 2 開發板同時播放音頻和錄製音頻時,AEC 演算法可以消除回音。
流程
如圖所示,將音頻插孔連接到 Ameba 板上。
或者,如果您想使用數位麥克風,請如下圖所示連接音頻插孔、電位器和 PDM 麥克風。
打開範例 “File” -> “Examples” -> “AmebaMultimedia” -> “Audio” -> “EchoCancellation”。
在標記的代碼片段中,將您的 WiFi 網絡 SSID 填入“ssid”,將網絡密碼填入“pass”。
編譯代碼並將其上傳到 Ameba。
按下Reset鍵後,等待Ameba Pro 2開發板連上WiFi網絡。
此範例需要打開兩個 VLC 播放器視窗,一個用於將 RTP 音頻串流傳輸到 Ameba Pro 2 板,一個用於從 Ameba Pro 2 板串流傳輸 RTSP 音頻。
RTP Audio Stream
在連接到相同 WiFi 網絡的電腦上,打開 VLC 媒體播放器,然後選擇“Media”-> “Stream”。
點選Add按鈕,將要傳輸的音頻文件添加到 Ameba 板,然後點選Stream按鈕。
在出現的新視窗中,點選next以進入到目標設置頁面。 在下拉選單中,選擇“RTP Audio/Video Profile”,然後選擇旁邊的add按鈕。
在出現的介面中,在address欄中輸入 Ameba Pro 2 開發板的 IP。 確保預設端口使用默認值 5004。單擊next按鈕。
對於transcoding options,確保勾選“Activate Transcoding”。 如果您已經為 Ameba Pro 2 創建了一個配置文件,請選擇現有的配置文件,然後跳過下一節介紹如何創建配置文件。 否則,點選標記的按鈕為 Ameba Pro 2 Board 創建一個新的配置文件。
在出現的新視窗中,為新的轉碼配置文件提供一個合適的名稱。 確保在“Encapsulation”設定中選擇“RAW”。
確保在“Video codec”和“Subtitles”設定頁面中禁用“Video”和“Subtitle”。
在“Audio codec”設定中,確保啟用“Audio”。 為codec選擇“MPEG 4 Audio (AAC)”,為channels選擇 1。 對於sample rate,此值應與 Ameba Pro 2 的 AudioSetting 配置相同,在本例中默認為 8000 Hz。 點選Create按鈕,確保選擇新配置文件,然後點擊next按鈕。
在下一個視窗中,點擊stream按鈕,VLC 將開始使用 RTP 將音頻文件串流傳輸到 Ameba Pro 2。
將一對有線耳機插入音頻插孔,您應該可以聽到從電腦傳輸的音頻。 您可以使用 VLC 中的按鈕來控製播放。
RTSP Audio Stream
在連接到相同 WiFi 網絡的電腦上,打開 VLC 媒體播放器,然後轉到“Media”-> “Open Network Stream”。
由於 RTSP 被用作串流協議,在 VLC 媒體播放器中輸入“rtsp://{IPaddress}:{port}”作為網絡 URL,將 {IPaddress} 替換為您的 Ameba Pro2 開發板的 IP 地址,以及 {port } 使用串行監視器中顯示的 RTSP 端口。 默認的 RTSP 端口號是 554。
接下來,單擊“Play”開始 RTSP 串流傳輸。 應該能夠聽到通過電腦重放的板載麥克風錄製的聲音。
Testing AEC algorithm
當 RTP 和 RTSP 音頻流都在進行時,調整揚聲器輸出,使 Ameba Pro 2 上的板載麥克風可以錄製揚聲器產生的聲音,如圖所示。
當 AEC 演算法正常運行時,從電腦的 RTSP 音頻串流輸出,您應該聽不到任何通過 RTP 串流傳輸到 Ameba Pro 2 的音頻。
為了比較 AEC 算法的有效性,註解掉“audio.configMicAEC(1);” 在代碼中,再次使用兩個 VLC 視窗重新編譯、重新上傳和測試。 從電腦上的 RTSP 串流中應該可以明顯發現從揚聲器到麥克風的音頻。
程式碼說明
AEC 演算法限於 8 kHz 和 16 kHz 取樣率。 AEC 效果的強度級別可以通過 configMicAEC 的第二個參數進行調整,0 為最弱,17 為最強。