python 生成24bit音频数据实例解析

一 概念

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)
相关推荐
丸码7 分钟前
Java异常体系全解析
java·开发语言
q***72199 分钟前
PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案
开发语言·redis·php
k***825114 分钟前
python爬虫——爬取全年天气数据并做可视化分析
开发语言·爬虫·python
IMPYLH14 分钟前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua
曾经的三心草16 分钟前
基于正倒排索引的Java文档搜索引擎1-实现索引模块-实现Parser类
java·开发语言·搜索引擎
new_dev25 分钟前
Python网络爬虫从入门到实战
爬虫·python·媒体
q***016539 分钟前
Python爬虫完整代码拿走不谢
开发语言·爬虫·python
顺心而行...40 分钟前
一些问题记录
开发语言
今天没有盐41 分钟前
Python算法实战:从滑动窗口到数学可视化
python·pycharm·编程语言
u***j3241 小时前
JavaScript在Node.js中的进程管理
开发语言·javascript·node.js