音频相关的基本概念
音頻相關的基本概念
1. 聲音的本質
聲音的本質是波在介質中的傳播現象,聲波的本質是一種波,是一種物理量。 兩者不一樣,聲音是一種抽象的,是聲波的傳播現象,聲波是物理量。
2. 聲音的三要素
響度(loudness): 人主觀上感覺聲音的大小(俗稱音量),由“振幅”(amplitude)和人離聲源的距離決定,振幅越大響度越大,人和聲源的距離越小,響度越大。
音調(pitch): 聲音的高低(高音、低音),由頻率決定,頻率越高音調越高(頻率單位Hz,赫茲),人耳聽覺范圍20~20000Hz。20Hz以下稱為次聲波,20000Hz以上稱為超聲波)。
音色(Timbre): 波形決定了聲音的音調。由于不同對象材料的特點,聲音具有不同的特性,音色本身就是抽象的東西,但波形就是把這種抽象和直觀的性能。波形因音調而異,不同的音調可以通過波形來區分。
傅立葉理論 (Jean Baptiste Joseph Fourier,1768-1830。他提出任何周期信號都可以看做是一系列正弦波和余弦波的疊加。 )告訴我們,時域中的任何電信號都可以由一個或多個具有適當頻率、幅度和相位的正弦波疊加而成。
3.幾個基本概念
-
比特率(碼率):比特率是每秒傳輸的比特數。單位為比特(bps位/秒)。指音頻每秒鐘播放的數據量,單位為 bit,例如對于 PCM 流,采樣率為 44100Hz,采樣大小為16,聲道數為 2,那么碼率為:44100* 16 * 2 = 1411200 bps。
關于音頻文件大小的計算文件大小 = 采樣率 * 錄音時間 * 采樣位數 / 8 * 通道數(字節) -
采樣: 采樣是把連續的時間信號,變成離散的數字信號。
-
采樣率:簡單來說就是每秒獲取聲音樣本的次數。
聲音是一種能量波,其具有音頻頻率和振幅的特征。那么采樣的過程,其實就是抽取某點的頻率值。如果我們在一秒鐘抽取的點越多,獲得的信息也就越多; 采樣率越高,聲音的質量就越好。但是并不是說采樣率越高就越好了,因為人耳聽覺的范圍為 20Hz ~ 20kHz。一般來講,44100HZ的采樣率已經能夠滿足基本的要求了。
-
采樣數:采樣數跟采樣率和時間有關系,比如采樣率為 44100Hz,采樣時間為1s,那么1s 內的采樣數就為 44100 個。
-
采樣位數?:?采樣位數也叫采樣大小或者量化位數。量化深度表示每個采樣點用多少比特表示,音頻的量化深度一般為 8 、16 、32 位等。例如:量化深度為 8bit 時,每個采樣點可以表示 256 個不同的量化值,而量化深度為 16bit 時,每個采樣點可以表示 65536 個不同的量化值。
??量化深度的大小影響到聲音的質量,顯然,位數越多,量化后的波形越接近原始波形,聲音的質量越高,而需要的存儲空間也越多;位數越少,聲音的質量越低,需要的存儲空間越少。CD音質采用的是 16 bits.
??
?- 通道數:通道數即聲音的通道數目,常見的有單聲道、雙聲道和立體聲道。
??單聲道的聲音只能使用一個揚聲器發聲,或者也可以處理成兩個揚聲器輸出同一個聲道的聲音,當通過兩個揚聲器回放單聲道信息的時候,我們可以明顯感覺到聲音是從兩個音箱中間傳遞到我們耳朵里的,無法判斷聲源的具體位置。
??雙聲道就是有兩個聲音通道,其原理是人們聽到聲音時可以根據左耳和右耳對聲音相位差來判斷聲源的具體位置。聲音在錄制過程中被分配到兩個獨立的聲道,從而達到了很好的聲音定位效果。
??記錄聲音時,如果每次生成一個聲波數據,稱為單聲道;每次生成兩個聲波數據,稱為雙聲道(立體聲)。立體聲(雙聲道)存儲大小是單聲道文件的兩倍。 -
音頻幀:?音頻跟視頻不太一樣,視頻的每一幀就是一副圖像,但是因為音頻是流式的,本身是沒有一幀的概念的。而且有些時候確實沒有辦法說一幀怎么怎么樣。比如對于 PCM 流來說,采樣率為 44100Hz,采樣位數為 16,通道數為 2,那么一秒的音頻固定大小的:44100162 / 8 字節。但是人們可以規定一幀的概念,比如amr 幀比較簡單,它規定每 20ms 的音頻是一幀。
-
奈奎斯特采樣定律(Nyquist):又稱為采樣定律,采樣率大于或等于連續信號最高頻率分量的2倍時,采樣信號可以用來完美重構原始連續信號通常有44.1KHz,48kHz。
-
PCM 流
PCM 流就是原始收錄聲音時,數據會保存到一串 buffer 中,這串 buffer,就采用了 PCM 格式存儲的。通常把音頻采樣過程也叫做脈沖編碼調制編碼,即 PCM(Pulse Code Modulation)編碼,采樣值也叫 PCM 值。
??在 windows 中,通過 WaveIn 或者 CoreAudio 采集聲音,得到的原始數據就是一串PCM格式的buffer。
4.編碼的過程
編碼過程: 模擬信號-> 采樣-> 量化-> 編碼->數字信號
4.1 采樣
所謂采樣就是只在時間軸上對信號進行數字化。
根據奈奎斯特定律(也稱為采樣定律),按照比聲音最高頻率的2倍上進行采樣。人類聽覺的頻率(音調)范圍為 20Hz–20KHz 。所以至少要大于 40KHz。采樣頻率一般為44.1kHz,這樣可保證聲音達到 20kHz 也能被數字化。44.1kHz 就是代表 1 秒會采樣 44100次。
4.2 量化
具體每個采樣又該如何表示呢???這就涉及到量化。
??量化是指在幅度軸上對信號進行數字化。如果用 16(8/32) 比特位的二進制信號來表示一個采樣,那么一個采樣所表示的范圍即為【-32768,32767】。
4.3 編碼
每一個量化都是一個采樣,將這么多采樣進行存儲就叫做編碼。所謂編碼,就是按照一定的格式記錄采樣和量化后的數字數據,比如順序存儲或者壓縮存儲,等等。
??通常所說的音頻裸數據格式就是脈沖編碼調制(PCM)數據。一段 PCM 數據通常需要量化格式(位深,通常 16bit)、 采樣率、聲道數幾個概念來描述。
??對于聲音格式,還有一個概念用來描述它的大小,即比特率,就是1 秒內的比特數目,用來衡量音頻數據單位時間內的容量大小。
4.4 數字信號
將編碼數據用高低電平表示出來就可以了。
5. 音頻處理相關
5.1算法名稱及部分功能解釋
AEC(Acoustic Echo Cancellation) 回聲消除算法
??在視頻或者音頻通話過程中,本地的聲音傳輸到對端播放之后,聲音會被對端的麥克風
采集,混合著對端人聲一起傳輸到本地播放,這樣本地播放的聲音包含了本地原來采集的聲音,造成主觀感覺聽到了自己的回聲。以 WebRTC 為例,其中的回聲抑制模塊建議移動設備采用運算量較小的 AECM 算法,
AGC(Automatic Gain Control) 增益控制/自動增益控制
手機等設備采集的音頻數據往往有時候響度偏高,有時候響度偏低,造成聲音忽大忽小,影響聽眾的主觀感受。自動增益控制算法根據預先配置的參數對輸入聲音進行正向/負向調節,使得輸出的聲音適宜人耳的主觀感受。
VAD(Voice Activity Detection) 端點檢測/靜音檢測/語音端點檢測/語音邊界檢測
靜音檢測的基本原理:計算音頻的功率譜密度,如果功率譜密度小于閾值則認為是靜音,否則認為是聲音。靜音檢測廣泛應用于音頻編碼、AGC、AECM 等。
NS (Noise Suppression) 噪聲抑制/降噪/主動噪聲控制/噪聲消除/主動降噪
手機等設備采集的原始聲音往往包含了背景噪聲,影響聽眾的主觀體驗,降低音頻壓縮效率。以 Google 著名的開源框架 WebRTC為例,我們對其中的噪聲抑制算法進行嚴謹的測試,發現該算法可以對白噪聲和有色噪聲進行良好的抑制。滿足視頻或者語音通話的要求。其他常見的噪聲抑制算法如開源項目 Speex 包含的噪聲抑制算法,也有較好的效果,該算法適用范圍較WebRTC 的噪聲抑制算法更加廣泛,可以在任意采樣率下使用。
CNG舒適噪音產生(Comfortable Noise Generation)
?舒適噪聲產生的基本原理:根據噪聲的功率譜密度,人為構造噪聲。廣泛適用于音頻編解碼器。在編碼端計算靜音時的白噪聲功率譜密度,將靜音時段和功率譜密度信息編碼。在解碼端,根據時間信息和功率譜密度信息,重建隨機白噪聲。
?
ANC(Active Noise Control) 噪聲抑制/降噪/主動噪聲控制/噪聲消除/主動降噪
ANS(Automatic Noise Suppression) 噪聲抑制/降噪/主動噪聲控制/噪聲消除/主動降噪
NC (Noise Cancellation) 噪聲抑制/降噪/主動噪聲控制/噪聲消除/主動降噪
AFC(Acoustic Feedback Cancellation) 嘯叫抑制/自適應聲反饋消除/聲反饋消除
EQ 音頻均衡
Dereverberation 混響去除
Beam Forming 波束形成
Speech Recognition 語音識別
ASR(Automatic Speech Recognition) 語音識別
KWS(Keyword Spotting) 語音喚醒
Speech Enhancement 語音增強
Audio encode 音頻編碼
Microphone Array 麥克風陣列
Voiceprint recognition 聲紋識別
Sound source localization 聲源定位
5.2 部分服務
壓縮器(compressor):減小高信號的輸出
自動增益(AGC):對高信號進行降低,對低信號進行升高
反饋消除(AFC):使某一頻率點的輸入信號迅速衰弱達到阻止此頻率信號通過的效果,避免嘯叫產生
回聲消除(AEC):進行回聲消除
閃避器:保證同一時刻只有輸入信號效果好
延時器(Delayer):延緩信號輸出時間
音箱管理器(main mixer):可以對輸出信號進行一些微調
限幅器(limiter):控制輸出信號的最大值
6.音頻采集的來源是什么,如何計算?
首先音頻的來源一般為麥克風(MediaRecorder.AudioSource.MIC)
采樣率(單位:赫茲)
??每秒鐘音頻采樣點個數(8000/44100Hz),模擬信號數字化的過程,用0101來表示的數字信號
??
聲道
- AudioFormat.CHANNEL_IN_MONO 單聲道,一個聲道進行采樣
- AudioFormat.CHANNEL_IN_STEREO 雙聲道,兩個聲道進行采樣
音頻采樣精度
?指定樣式的數據的格式和每次采用的大小,數據返回的格式PCM格式,每次采用的位寬為16bit,一般都采用這個 AudioFormat.ENCODING_PCM_16BIT(官方文檔表示,該采樣精度保證所有設備都支持)
每秒鐘采樣的大小
采樣率 * 采樣大小 * 聲道數
每秒鐘采樣的大小=16bit( 位寬) * 2( 雙通道) * 44100(每次采樣的次數 hz) =1411200b=1411.2kbps
7.音頻使用場景及應用
在現實生活中,音頻(audio)主要用在兩大場景中:語音(voice)和音樂(music)。語音主要用于溝通通信,如打電話,現在由于語音識別的發展,人機語音交互也是語音的一個應用,目前正在風口上,好多大廠都推出了 智能音箱。音樂主要用于欣賞,如音樂播放。
音頻開發的主要應用:
7.1音頻播放器
錄音機
語音電話
音視頻監控應用
音視頻直播應用
音頻編輯/ 處理軟件(ktv 音效、變聲, 鈴聲轉換)
藍牙耳機/音箱
7.2?音頻開發的具體內容:
音頻采集/播放;
音頻算法處理(去噪、VAD 檢測、回聲消除、音效處理、功放/增強、混音/分離,等等);
音頻的編解碼和格式轉換;
音頻傳輸協議的開發(SIP,A2DP、AVRCP,等等)。
8.混音技術介紹
混音:顧名思義,就是把兩路或者多路音頻流混合在一起,形成一路音頻流。
混流:則是指音視頻流的混合,也就是視頻畫面和聲音的對齊,也稱混流。
并非任何兩路音頻流都可以直接混合。
8.1 兩路音視頻流,必須符合以下條件
- 格式相同,要解壓成 PCM 格式。
- 采樣率相同,要轉換成相同的采樣率。主流采樣率包括:16k Hz、32k Hz、44.1k Hz 和 48kHz。
- 幀長相同,幀長由編碼格式決定,PCM 沒有幀長的概念,開發者自行決定幀長。為了和主流音頻編碼格式的幀長保持一致,推薦采用 20ms 為幀長。
- 位深( (Bit-Depth) )式 或采樣格式 (Sample Format) 相同,承載每個采樣點數據的 bit 數目
要相同。 - 聲道數相同,必須同樣是單聲道或者雙聲道 (立體聲)。這樣,把格式、采樣率、幀長、
位深和聲道數對齊了以后,兩個音頻流就可以混合了。
8.2 回聲消除、噪音抑制和靜音檢測等處理
在混音之前,還需要做回聲消除、噪音抑制和靜音檢測等處理。回聲消除和噪音抑制屬于語音前處理范疇的工作。在**編碼之前,采集、語音前處理、混音之前的處理、混音和混音之后的處理應該按順序進行。**靜音抑制(VAD,Voice Activity Detect)可做可不做。對于終端混音,是要把采集到的主播聲音和從音頻文件中讀到的伴奏聲音混合。如果主播停頓一段時間不發出聲音,通過 VAD 檢測到了,那么這段時間不混音,直接采用伴奏音樂的數據就好了。然而,為了簡單起見,也可以不做 VAD。主播不發聲音的期間,繼續做混音也可以(主播的聲音為零振幅)。
9. 音頻重采樣
重采樣即是將音頻進行重新采樣得到新的采樣率的音頻。
重采樣的原因???
音頻系統中可能存在多個音軌,而每個音軌的原始采樣率可能是不一致的。比如在播放音樂的過程中,來了一個提示音,就需要把音樂和提示音都混合到 codec 輸出,音樂的原始采樣率和提示音的原始采樣率可能是不一致的。問題來了,如果 codec 的采樣率設置為音樂的原始采樣率的話,那么提示音就會失真。因此最簡單見效的解決方法是:codec 的采樣率固定一個值(44.1KHz/48KHz),所有音軌都重采樣到這個采樣率,然后才送到 音軌都重采樣到這個采樣率,然后才送到 codec,保證所有音軌聽起來都不失真 ,保證所有音軌聽起來都不失真。
10.頻譜
頻譜是一組正弦波,經適當組合后,形成被考察的時域信號。 顯示了一個復合信號的波形。假定我們希望看到的是正弦波,但顯然圖示信號并不是純粹的正弦形,而僅靠觀察又很難確定其中的原因。
11. 嵌入式DSP處理器(Embedded Digital Signal Processor,EDSP)
是一種非常擅長于高速實現各種數字信號處理運算(如數字濾波、頻譜分析等)的嵌入式處理器。由于對DSP硬件結構和指令進行了特殊設計,使其能夠高速完成各種數字信號處理算法。
11.1 特點
嵌入式數字信號處理器的長處在于能夠進行向量運算、指針線性尋址等運算量較大的數據處理。
嵌入式數字信號處理器是專門用于信號處理的嵌入式處理器,在系統結構和指令算法方面經過特殊設計。因而具有很高的編譯效率和指令執行速度。DSP芯片內部采用程序和數據分開的哈佛結構。具有專門的硬件乘法器,廣泛采用流水線操作。提供特殊的DSP指令,可以快速實現各種數字信號處理算法。
總結
- 上一篇: jeecg框架表格合计解决方案
- 下一篇: jeecg 框架