使用python进行24bit音频处理
import struct
# datalike=b'\x00\x00\x02\xff\xff\xff' #b'\xff\xff\xff\xff\xff\xff'
import audioop class Handle_24bit_Data:
def __init__(self, bytes_data, handle_method):
self.bytes_data = bytes_data
self.handle_method = handle_method def handle_str_data(self):
return audioop.byteswap(self.bytes_data,3) def iter_bytes_data(self,data):
datalist = list(struct.iter_unpack('>BH', data))
return datalist def make_int24_value(self, data_tp):
low_int = data_tp[1]
low_pos = hex(low_int)[2:]
low_pos_len = len(low_pos)
if low_pos_len < 4:
low_pos = (4 - low_pos_len) * ''+low_pos str_data = ''.join([hex(data_tp[0]), low_pos])
hex_value = int(str_data, base=16)
maxvalue=2<<23
comvalue=(2<<22)-1
if hex_value<=comvalue:
return hex_value
else:
return hex_value-maxvalue def swap_number(self,hexnumber):
#to change signed value to unsigned
if hexnumber>=0:
return hexnumber
if hexnumber<0:
return hexnumber+(2<<23) def split_int24(self, hex_num):
hex_str_nbytes = hex(hex_num)
if len(hex_str_nbytes) > 6:
hex_str_1bytes = hex_str_nbytes[:-4]
hex_str_2bytes = hex_str_nbytes[-4:]
return int(hex_str_1bytes, base=16), int(hex_str_2bytes, base=16)
else:
return 0,int(hex_str_nbytes, base=16) def pack_data(self, tp):
return struct.pack('>BH', *tp) def __call__(self):
data=self.handle_str_data()
data_generator = self.iter_bytes_data(data)
int24_datalist = list(map(self.make_int24_value, data_generator)) # get int value list
handled_data = map(self.handle_method, int24_datalist) # handle int data
swaped_data=map(self.swap_number,handled_data)
hex_tuple_list = list(map(self.split_int24, swaped_data)) # split to 8bit and 16bit
int24_bitdata = map(self.pack_data, hex_tuple_list)
print(int24_bitdata)
return audioop.byteswap(b''.join(list(int24_bitdata)), 3) if __name__ == "__main__":
def halflower(data):
return int(data) datalike = b'\xb9\x0f\x00' print(list(Handle_24bit_Data(datalike, halflower)())) # print(list(hex24_bit_datalist))
# print(list(handled_data))
# print(list(hex24_tuple_list))
# print(list(hex24_bit_data))
使用python进行24bit音频处理的更多相关文章
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
[原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...
- python脚本实现音频m4a格式转成MP3格式
群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会.然后就私下聊起来了 解决方法介绍如下: 工具:windows系统,python2.7,转换库ffm ...
- Python中的音频和数字信号处理(DSP)
翻译自Python For Engineers. 1. 创建一个正弦波 在这个项目中,我们将创建一个正弦波,并将其保存为wav文件. 但在此之前,你应该知道一些理论. 频率:频率是正弦波重复一秒的次数 ...
- python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: import scipy from scipy.io import wavfile import soundfile as sf ...
- 用python批量修改音频ID3等标签
使用的模块是eyeD3 一.eyeD3的安装 1.安装msgpack,不安装会报错distributed 1.21.8 requires msgpack, which is not installed ...
- Python音频处理(一)音频基础知识-周振洋
1.声音音频基础知识 (1)声音是由震动产生,表现为波的形式.波有频率,振幅等参数.对于声波而言:频率越大,音调越高,反之越低.振幅越大,声音越大,反之越小. (2)采样率,帧率:波是连续(无穷)的, ...
- 使用Python音频双通道分离
某些音频是双方对话,有可能需要对音频作通道的分离. 示例代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- """ 音 ...
- 太赞了!Python竟可以轻松实现音频格式无损转换
大家好,我是辰哥 辰哥在平时处理音频格式的时候,需要去下载各种音频处理软件(专业一点的软件还要收费),掌握Python技术的我们,知道Python是万能的(哈哈哈,开个玩笑).今天辰哥就来教大家用Py ...
- Python音频操作+同时播放两个音频
对于python而言,音频的操作可以使用pygame包中的sound 和 music对象,本博客主要讲解这两个对象. 1.sound对象 Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文 ...
随机推荐
- 51nod 1201 整数划分 dp
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2 ...
- P3958 奶酪
传送门 思路: 模拟题.用并查集求出所有 “连通块” ,判断是否有 “连通块” 的最顶上和最下方都不小于奶酪的范围. Code: #include<iostream> #include&l ...
- jenkin服务关闭和重启
1.关闭Jenkins http://localhost:8080/exit 2.重启Jenkies http://localhost:8080/restart 3.重新加载配置信息 http://l ...
- document.documentElement.clientHeight和document.body.clientHeight区别
首先了解下document HTML DOM 节点 在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点: 文档是一个文档节点. 所有的HTML元素都是元 ...
- random froest 调参
https://blog.csdn.net/wf592523813/article/details/86382037 https://blog.csdn.net/xiayto/article/deta ...
- 【C/C++】C++11 Variadic Templates
Variadic Templates 1.function template:利用“参数个数逐一递减”的特性,实现递归函数调用 template <typename T, typename... ...
- Linux内存管理(一)
Linux内存管理之一:基本概念篇 物理地址.线性地址(虚拟地址)和逻辑地址:阐述段式管理和页式管理基本概念:Linux操作系统内存管理和虚拟内存概念:为内核开发做一个基础铺垫. 内存是linux内核 ...
- PDF 补丁丁 0.6.0.3427 版发布(修复提取图片问题)
新的版本进一步改善了导出图片的问题.
- java字符串根据正则表达式让单词首字母大写
public class Da { public static void main(String[] args) { String s = "hello_*java_*world" ...
- unity中EventTrigger组件的应用
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using D ...