使用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格式的音频文 ...
随机推荐
- node 之 Buffer 笔记
1. Buffer 相关 js 最初是被设计来处理 html的,因此它不善于处理二进制数据,只有数值和字符串类型.而 node 是基于 js 的,因为 node 需要实现一些譬如数据库通信.操作图像及 ...
- 2019 To do List
做好测试不是靠编程,而是靠的是严禁的作风,慎密的逻辑思维,适合的测试流程. 内心有些迷茫的时候,迷茫的是作为测试既然要学那么多编程,为什么不直接去干开发呢?学了编程,用不上,到底有什么用呢? 看了这句 ...
- window上安装kafka(单机)
1.第一步骤,先安装JDK,请参考:https://www.cnblogs.com/xubao/p/10692861.html 2.第二步骤,安装zookeeper,请参考:https://www.c ...
- VGG
2019-04-08 13:30:58 VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet.但是VGG模型在多个迁移学习任务中的表现要优于googLeNet.而且,从图像中提取 ...
- Spring Cloud 升级最新 Finchley 版本,踩了所有的坑!
Spring Boot 2.x 已经发布了很久,现在 Spring Cloud 也发布了 基于 Spring Boot 2.x 的 Finchley 版本,现在一起为项目做一次整体框架升级. 升级前 ...
- python实现汉诺塔问题
汉诺塔问题可以简单描述成为将a柱子上的圆盘按一定规则借助b柱子完美地复制到c柱子上.现假设有a,b,c三根柱子,a柱子上的圆盘从上到下依次标号为1,2,3,……,n,且为递增状态.规则:每次移动一个盘 ...
- win10搭建svn服务
1,安装服务器版svnhttps://tortoisesvn.net/downloads.html查看版本 svn --version 2,创建版本仓库提倡创建公共仓库,那么可以多次增加项目svnad ...
- exe所在路径
procedure TForm1.btn1Click(Sender: TObject); begin //完整路径 E:\UsrSoft\Desktop\FileNameDemo\Project1.e ...
- EF - Code First 开发方式
概述: 本节介绍通过 Code First 开发建立新数据库. 借助 Code First 可以选择使用类的特性和属性执行配置,或者使用 XML 配置文件来配置,当然也可以使用 Fluent API ...
- css实现横向带箭头步骤流程效果
通过纯css实现圆角的步骤流程效果,扩展性强,可以随意增加减少数量,兼容性ie6+. 具体代码: <style type="text/css"> ul{margin:0 ...