視頻筆記:音頻專業級分析軟件(Cooledit)
音質定義以語音帶寬來區分,采樣率越高,帶寬越大,則保真度越高,音質越好。窄帶(8khz采樣),寬帶(16khz采樣),CD音質(44.1khz采樣)
音頻采集播放流程:采集-前處理(回聲消除、噪聲抑制、音量調節、混響處理等)-編碼-傳輸-解碼-后處理-播放
采樣率:原始PCM數據每秒采樣次數
比特率:編碼壓縮后的碼率,每秒音頻的大小。(所以在編碼效果好的情況下也會有高采樣率對應相對低的比特率)
PCM(Pulse Code Modulation),脈沖編碼調制。人耳聽到的是模擬信號,PCM是把聲音從模擬信號轉化為數字信號的技術。原理是用一個固定的頻率對模擬信號進行采樣,采樣后的信號在波形上看就像一串連續的幅值不一的脈沖(脈搏似的短暫起伏的電沖 擊),把這些脈沖的幅值按一定精度進行量化,這些量化后的數值被連續的輸出、傳輸、處理或記錄到存儲介質中,所有這些組成了數字音頻的產生過程(抽樣、量化、編碼三個過程)。
混音技術介紹:https://blog.csdn.net/zego_0616/article/details/81705025
混音,顧名思義,就是把兩路或者多路音頻流混合在一起,形成一路音頻流。而混流,則是指音視頻流的混合,也就是視頻畫面和聲音的對齊,也稱混流。
並非任何兩路音頻流都可以直接混合。兩路音視頻流,必須符合以下條件才能混合:
- 格式相同,要解壓成 PCM 格式。
- 采樣率相同,要轉換成相同的采樣率。主流采樣率包括:16k Hz、32k Hz、44.1k Hz 和 48k Hz。
- 幀長相同,幀長由編碼格式決定,PCM 沒有幀長的概念,開發者自行決定幀長。為了和主流音頻編碼格式的幀長保持一致,推薦采用 20ms 為幀長。
- 位深(Bit-Depth)或采樣格式 (Sample Format) 相同,承載每個采樣點數據的 bit 數目要相同。
- 聲道數相同,必須同樣是單聲道或者雙聲道 (立體聲)。這樣,把格式、采樣率、幀長、位深和聲道數對齊了以后,兩個音頻流就可以混合了。
在混音之前,還需要做回聲消除、噪音抑制和靜音檢測等處理。回聲消除和噪音抑制屬於語音前處理范疇的工作。在編碼之前,采集、語音前處理、混音之前的處理、混音和混音之后的處理應該按順序進行。靜音抑制(VAD,Voice Activity Detect)可做可不做。對於終端混音,是要把采集到的主播聲音和從音頻文件中讀到的伴奏聲音混合。如果主播停頓一段時間不發出聲音,通過 VAD 檢測到了,那么這段時間不混音,直接采用伴奏音樂的數據就好了。然而,為了簡單起見,也可以不做 VAD。主播不發聲音的期間,繼續做混音也可以(主播的聲音為零振幅)。
音頻重采樣
重采樣的原因
音頻系統中可能存在多個音軌,而每個音軌的原始采樣率可能是不一致的。比如在播放音樂的過程中,來了一個提示音,就需要把音樂和提示音都混合到codec輸出,音樂的原始采樣率和提示音的原始采樣率可能是不一致的。問題來了,如果codec的采樣率設置為音樂的原始采樣率的話,那么提示音就會失真。因此最簡單見效的解決方法是:codec的采樣率固定一個值(44.1KHz/48KHz),所有音軌都重采樣到這個采樣率,然后才送到codec,保證所有音軌聽起來都不失真。
重采樣即是將音頻進行重新采樣得到新的采樣率的音頻。
回音消除(AEC)(整理:https://www.cnblogs.com/ldjrl2013/p/3687938.html)
在即時通訊應用中,需要進行雙方,或是多方的實時語音交流,在要求較高的場合,通常都是采用外置音箱放音,這樣必然會產生回音,即一方說話后,通過對方的音箱放音,然后又被對方的Mic采集到回傳給自己(如下圖所示)。如果不對回音進行處理,將會影響通話質量和用戶體驗,更嚴重的還會形成震盪,產生嘯叫。
回聲消除就是在Mic采集到聲音之后,將本地音箱播放出來的聲音從Mic采集的聲音數據中消除掉,使得Mic錄制的聲音只有本地用戶說話的聲音。
傳統的回聲消除都是采用硬件方式,在硬件電路上集成DSP處理芯片,如我們常用的固定電話、手機等都有專門的回音消除處理電路,而采用軟件方式實現回聲消除一直存在技術難點,包括國內應用最廣泛的QQ超級語音,便是采用國外的GIPS技術,由此可見一般。
回聲消除已經成為即時通訊中提供全雙工語音的標准方法。聲學回聲消除是通過消除或者移除本地話筒中拾取到的遠端的音頻信號來阻止遠端的聲音返回去的一種處理方法。這種音頻的移除都是通過數字信號處理來完成的。回聲消除技術是數字信號處理的典型應用之一。
回聲消除的基本原理是以揚聲器信號與由它產生的多路徑回聲的相關性為基礎,建立遠端信號的語音模型,利用它對回聲進行估計,並不斷修改濾波器的系數,使得估計值更加逼近真實的回聲。然后,將回聲估計值從話筒的輸入信號中減去,從而達到消除回聲的目的。
音頻3A處理在不同的應用場景三者的處理順序也不同,如在WebRTC中音頻數據回依次經過AEC和NS(noise suppression) 或者 NS 與AECM(AECM 是WebRTC專門為移動端打造的算法,計算量低,而AEC 是為PC打造的)。而在AEC(回聲消除算法),為什么需要這個算法呢?當一個設備在播放聲音經過空間中的多次反射會被麥克風再次捕捉並采集到系統當中,這時音頻的輸入既有空間反射的回聲也有本端說話聲,如果缺少此模塊就意味着通話中說話人一直可以聽到自己的聲音回來,這是非常差的一種體驗,這當然是需要我們避免的。這里AEC的作用就是通過播放的參考信號跟蹤出回聲並從采集信號中把回聲消除掉,隨后再經過降噪處理去除噪聲。而其中的AECM是在NS模塊之后通過獲取clean與noise數據進行分析,AEC則是NS模塊之前直接獲取noise數據進行分析。
音頻數據完成AEC與NS的處理后會進行AGC處理,其包括AAGC(模擬域的自動增益控制)與DAGC(數字域的自動增益控制)。其中AAGC的主要作用是通過系統的采集音量設置接口調整輸入信號(大多用於PC端,移動端一般沒有輸入音量的系統接口),如借助Windows上的的API調整采集音量等參數。AAGC可為輸入的音頻數據帶來明顯的質量優化,如提高信噪比,避免輸入信號溢出等。但由於我們服務的跨平台要求,我們需要構建一個面向多平台設備的框架,在不同的輸入平台和設備都會有不同的輸入音量,DAGC可以根據對輸入信號的跟蹤,盡量的調整信號到達期望大小(幅值或能量),從而避免不同設備采集帶來的音量差異過大。完成AGC處理的音頻數據,即可進入Audio Encode進行編碼操作。
原文:https://blog.csdn.net/lipengshiwo/article/details/84280294