一 概念
24 bit 是指音频文件的 采样深度 (bit depth)。 它代表了每个采样点的数据精度,也就是音频每个样本所使用的比特数。 24 bit 的采样深度相较于 16 bit 提供了更高的动态范围和更精确的音频信息表示。 动态范围:24 bit 的动态范围大约为 144 dB,而 16 bit 的动态范围约为 96 dB。 目前,24bit音频数据成为了很多硬件的标配。
二 源码
直接上源码:
import wave, struct, math, random
import serial
import numpy as np
import struct
import operator
import binascii
sampleRate = 96000.0 # hertz
obj = wave.open('sound_96k_b.wav','w')
obj.setnchannels(1) # mono
obj.setsampwidth(3)
obj.setframerate(sampleRate)
fp = open("test.bin",'rb')
def bin_file_process(fp):
cnt=0
while True:
data=fp.read(1)
if data == b'':
break
if data == b'\xff':
data_next=fp.read(1)
#print("hello world")
if data_next == b'\xff':
cnt += 1
data_lens=fp.read(2)
print("read data_cnt is:",cnt)
data_audio=fp.read(1920)
count=len(data_audio)
for idx in range(0,len(data_audio),3):
raw_data = data_audio[idx:idx+3]
obj.writeframes(struct.pack('B',raw_data[0]))
obj.writeframes(struct.pack('B',raw_data[1]))
obj.writeframes(struct.pack('B',raw_data[2]))
if __name__ == '__main__':
bin_file_process(fp)