改變PCM取樣點計算來控制音量

2021-09-12 00:13:01 字數 4104 閱讀 3740

from

聲音是介質振動在聽覺系統中產生的反應。聲音總可以被分解為不同頻率不同強度正弦波的疊加(傅利葉變換)。

聲音有兩個基本的物理屬性:頻率振幅。聲音的振幅就是音量,頻率的高低就是指音調,頻率用赫茲(hz)作單位。人耳只能聽到20hz到20khz範圍的聲音。

模擬音訊(analogous audio),用連續的電流或電壓表示的音訊訊號,在時間和振幅上是連續。在過去記錄聲音記錄的都是模擬音訊,比如機械錄音(以留聲機、機械唱片為代表)、光學錄音(以電影膠片為代表)、磁性錄音(以磁帶錄音為代表)等模擬錄音方式。

數字音訊(digital audio),通過取樣和量化技術獲得的離散性(數位化)音訊資料。計算機內部處理的是二進位制資料,處理的都是數字音訊,所以需要將模擬音訊通過取樣、量化轉換成有限個數字表示的離散序列(即實現音訊數位化)。

取樣頻率(sampling rate),單位時間內採集的樣本數,是取樣週期的倒數,指兩個取樣之間的時間間隔。取樣頻率必須至少是訊號中最大頻率分量頻率的兩倍,否則就不能從訊號取樣中恢復原始訊號,這其實就是著名的夏農取樣定理。cd音質取樣率為 44.1 khz,其他常用取樣率:22.05khz,11.025khz,一般網路和移動通訊的音訊取樣率:8khz。

量化深度,表示乙個樣本的二進位制的位數,即樣本的位元數。量化是將經過取樣得到的離散資料轉換成二進位制數的過程,量化深度表示每個取樣點用多少位元表示,在計算機中音訊的量化深度一般為4、8、16、32位(bit)等。例如:量化深度為8bit時,每個取樣點可以表示256個不同的量化值,而量化深度為16bit時,每個取樣點可以表示65536個不同的量化值。量化深度的大小影響到聲音的質量,顯然,位數越多,量化後的波形越接近原始波形,聲音的質量越高,而需要的儲存空間也越多;位數越少,聲音的質量越低,需要的儲存空間越少。cd音質採用的是16 bits,移動通訊 8bits。

聲道數,記錄聲音時,如果每次生成乙個聲波資料,稱為單聲道;每次生成兩個聲波資料,稱為雙聲道。使用雙聲道記錄聲音,能夠在一定程度上再現聲音的方位,反映人耳的聽覺特性。

數字音訊儲存大小。取樣頻率、量化深度數越高,聲音質量也越高,儲存這段聲音所用的空間也就越大。立體聲(雙聲道)儲存大小是單聲道檔案的兩倍。即:檔案大小(b)=取樣頻率(hz)×錄音時間(s)×(量化深度/8)×聲道數(單聲道為1,立體聲為2)

如:錄製1分鐘取樣頻率為44.1khz,量化深度為16位,立體聲的聲音(cd音質),檔案大小為:

44.1×1000×60×(16/8)×2=10584000b≈10.09m

音訊編碼,指將模擬音訊轉換成數字音訊並以某種格式儲存的技術或過程。

pcm(pulse code modulation)編碼,即通過脈衝編碼調製方法生成數字音訊資料的技術或格式,是一種無損編碼格式,是音訊模擬訊號數位化的一種方法,需要經過取樣、量化和編碼過程,以實現音訊模擬訊號數位化。

首先從6個方面描述pcm:

1)取樣率;

2)符號:表示樣本資料是否是有符號位,比如用一位元組表示的樣本資料,有符號的話表示範圍為-128~127,無符號就是0~255,;

3)位元組序:位元組序分為大端與小端;

4)樣本大小:決定了每個樣本由多少位組成,即前面說到的量化深度,一般16位是最常見的;

5)聲道數:分為單聲道與雙聲道。

6)整形或浮點型:大多數格式的pcm樣本資料使用整形表示,然而在一些對精度要求高的應用方面,使用浮點型別表示pcm樣本資料。

de f32be           pcm 32-bit floating-point big-endian

de f32le           pcm 32-bit floating-point little-endian

de f64be           pcm 64-bit floating-point big-endian

de f64le           pcm 64-bit floating-point little-endian

de mulaw           pcm mu-law

de s16be           pcm signed 16-bit big-endian

de s16le           pcm signed 16-bit little-endian

de s24be           pcm signed 24-bit big-endian

de s24le           pcm signed 24-bit little-endian

de s32be           pcm signed 32-bit big-endian

de s32le           pcm signed 32-bit little-endian

de s8              pcm signed 8-bit

de u16be           pcm unsigned 16-bit big-endian

de u16le           pcm unsigned 16-bit little-endian

de u24be           pcm unsigned 24-bit big-endian

de u24le           pcm unsigned 24-bit little-endian

de u32be           pcm unsigned 32-bit big-endian

de u32le           pcm unsigned 32-bit little-endian

de u8              pcm unsigned 8-bit

比如de s16be,就表示乙個樣本用16bits有符號的整形資料表示,位元組序為大端。

假設我們有乙個pcm signed 16-bit little-endian,雙聲道的pcm檔案。如下是檔案中前9個樣本:

|  500 |  300 | -100 | -20  | -300 |  900 | -200 |  -50 |  250 |

每個樣本2位元組,總共18位元組,每個樣本取值範圍:-32768 ~ 32767。

通過前面描述我們對pcm有了個了解,知道了在pcm流中資料如何儲存。下面我們先看乙個真正的音訊樣本波形:

如果我們放大5倍波形,也就是振幅乘以5,此時我們聽到了更大的聲音,此時樣本波形如下:

假如我們有2048bytespcm資料,樣本大小兩個位元組,共有1024個樣本,我們要放大兩倍聲音,**可以按如下寫:

int16_t pcm[1024] = read in some pcm data;

for (ctr = 0; ctr < 1024; ctr++) else if (pcmval > 32767) else if (pcmval < -32768) else if (pcmval > 32767) else if (pcmval < -32768) {

pcm[ctr] = -32768;

其中level取值需要具體測試實現,一般使用時level取值為某個範圍的幾個數,比如取10個數,這樣音量就有10個階躍可以調節。

如下圖,最後聲音音量近似按對數關係增長了:

pcm 取樣率轉換 廣播百科 取樣率

第 459 期 取樣率,也稱為取樣速度或者取樣頻率,定義了每秒從連續訊號中提取並組成離散訊號的取樣個數,它用赫茲 hz 來表示。取樣頻率的倒數是取樣週期或者叫作取樣時間,它是取樣之間的時間間隔。通俗的講取樣頻率是指計算機每秒鐘採集多少個訊號樣本。連續訊號在時間 或空間 上以某種方式變化著,而取樣過程...

音訊PCM 48K to 16K 重取樣

重取樣後的音訊圖對比 pcm pulse code modulation 也被稱為 脈碼編碼調製。pcm中的聲音資料沒有被壓縮,如果是單聲道的檔案,取樣資料按時間的先後順序依次存入。它的基本組織單位是byte 8bit 或word 16bit 同一時間的單位區間內 48000hz取樣了3個點,160...

ADC取樣時間 取樣週期 取樣頻率計算方法

一 概述 adc轉換就是輸入模擬的訊號量轉換成數字量。讀取數字量必須等轉換完成後,完成乙個通道的讀取叫做取樣週期。取樣週期一般來說 轉換時間 讀取時間,而轉換時間 取樣時間 12.5個時鐘週期。取樣時間是你通過暫存器告訴stm32取樣模擬量的時間,設定越長越精確 二 stm32 adc取樣頻率的確定...