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

devtools/2025/1/14 19:39:24/

一 概念

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 binasciisampleRate = 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=0while True:data=fp.read(1)if data == b'':breakif data == b'\xff':data_next=fp.read(1)#print("hello world")if data_next == b'\xff':cnt += 1data_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)


http://www.ppmy.cn/devtools/150492.html

相关文章

vue.js路由重定向

在Vue.js中,路由重定向是指当用户访问某个特定路由时,自动将其重定向到另一个路由。这在应用程序中非常有用,可以将用户引导到特定的页面或重定向到其他相关页面。 在Vue.js中,我们可以通过routes数组中的redirect属性来实现路由…

STM32 FreeRTOS移植

目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …

LLM 大语言模型学习记录

文章目录 1. 写在最前面2. 让 gpt-4o-mini 解释 LLM 的原理3. 让 gpt-4o-mini 解释 LLM 的使用场景4. 让 gpt-4o-mini 解释 LLM 的局限性5. 碎碎念 1. 写在最前面 大语言模型(LLM)似乎已经成为 AI 领域的宠儿,不少公司争相推出自研的大模型。…

代码随想录day13| 二叉树理论基础| 递归遍历|迭代遍历| 统一迭代 |层序遍历

二叉树是一种每个节点最多有两个子节点的树结构,它由若干节点构成,每个节点包含数据部分和两个子节点的引用(指向左子节点和右子节点)。常见的二叉树类型包括完全二叉树、满二叉树和平衡二叉树等。 1. 二叉树的种类 二叉树有两种…

将Docker运行中的容器保存为镜像并导出导入

在 Docker 中,将运行中的容器保存为镜像并导出是一个常见的操作,特别是在你需要迁移或备份容器配置和数据时。以下是具体步骤: 1. 将运行中的容器保存为镜像 首先,你需要通过docker commit命令将运行中的容器保存为一个新的镜像。…

工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!

在工程管理领域,精准记录现场信息至关重要。水印相机拍照功能,为工程人员提供了强大的现场信息记录工具,助力工程管理和统计工程量,更可以将图片分享到电脑、分享给同事,协同工作。 一、打开图纸 打开手机版CAD快速看图…

全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误

具体错误 前面和后面的: /opt/linux/x86-arm/aarch64-mix210-linux/host_bin/../lib/gcc/aarch64-linux-gnu/7.3.0/../../../../aarch64-linux-gnu/bin/ld: warning: libcrypto.so.1.1, needed by ../lib/libssh.so.4.10.1, not found (try using -rpath or -rpat…

4. scala高阶之隐式转换与泛型

背景 上一节,我介绍了scala中的面向对象相关概念,还有一个特色功能:模式匹配。本文,我会介绍另外一个特别强大的功能隐式转换,并在最后介绍scala中泛型的使用 1. 隐式转换 Scala提供的隐式转换和隐式参数功能&#…