音訊PCM 48K to 16K 重取樣

2021-09-26 02:13:00 字數 1779 閱讀 1804

重取樣後的音訊圖對比

pcm(pulse code modulation)也被稱為 脈碼編碼調製。pcm中的聲音資料沒有被壓縮,如果是單聲道的檔案,取樣資料按時間的先後順序依次存入。(它的基本組織單位是byte(8bit)或word(16bit))

同一時間的單位區間內 48000hz取樣了3個點,16000hz則取樣了1個點,即從48000hz的檔案中每讀取3個資料,就要根據這3個資料去推算得到1個資料,而這個資料對應的就是16000hz檔案中的乙個資料。 本文採用的是取3個取樣點的第1個。

取樣點計算:

取樣率 * 聲道 * 深位 = 16000 * 1 * 16

在audiorecord中讀取的時我們使用byte陣列讀取的,byte數字占用記憶體1個位元組,也就是8位,但是音訊取樣點是16位乙個,所以需要轉換成short。

fun

formatpcmbyte2short

(dbyte: byte, gbyte: byte)

: short =((

(0xff

and dbyte.

toint()

)shl

0x8)

or gbyte.

toint()

).toshort

()

了解了pcm 資料格式後 重取樣比想象中要簡單一些,這裡只做了一些簡單的重取樣操作。

val mdrate =

16000

val srcrate =

48000

val srcchanel =

1val srcbit =

16val rate = srcrate / mdrate

val bitv = srcbit /

8val srcq = srcrate * srcchanel * srcbit /8/

1000

val bytes =

bytearray

(srcq)

var len: int

val input =

fileinputstream

(file

("c:\\users\\administrator\\desktop\\test.pcm"))

val output =

dataoutputstream

(fileoutputstream

(file

("d:\\test.pcm"))

)while

(input.

read

(bytes)

.also

>0)

} input.

close()

output.

close

()

how to convert between (most) audio formats in .net

pcm資料格式

【c語言】pcm音訊資料處理—降低取樣率

音訊PCM知識整理

pcm pulse code modulation 脈衝編碼調製。人耳聽到的是模擬訊號,pcm是把聲音從模擬訊號轉化為數碼訊號的技術。原理是用乙個固定的頻率對模擬訊號進行取樣,取樣後的訊號在波形上看就像一串連續的幅值不一的脈衝 脈搏似的短暫起伏的電衝擊 把這些脈衝的幅值按一定精度進行量化,這些量化後...

音訊解碼為PCM

author ych email 1147471053 qq.com time 2018 08 18 desc 解碼器 pcm version public class audiodecoder2pcm return instance public void setdata byte bytes p...

PCM音訊和音量調節

聲音的本質是一種能量波,由振動而產生的能量波,通過傳輸介質傳輸出去。聲音有三個屬性 波長是決定音調高低 振幅是決定音量高低 波紋是決定音色。pcm pulse code modulation,脈衝編碼調製 音訊資料是未經壓縮的音訊取樣資料裸流,它是由模擬訊號經過取樣 量化 編碼轉換成的標準數字音訊資...