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音频处理的更多相关文章

  1. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  2. python脚本实现音频m4a格式转成MP3格式

    群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会.然后就私下聊起来了 解决方法介绍如下: 工具:windows系统,python2.7,转换库ffm ...

  3. Python中的音频和数字信号处理(DSP)

    翻译自Python For Engineers. 1. 创建一个正弦波 在这个项目中,我们将创建一个正弦波,并将其保存为wav文件. 但在此之前,你应该知道一些理论. 频率:频率是正弦波重复一秒的次数 ...

  4. python 读取wav 音频文件的两种方式

    python 中,常用的有两种可以读取wav音频格式的方法,如下所示: import scipy from scipy.io import wavfile import soundfile as sf ...

  5. 用python批量修改音频ID3等标签

    使用的模块是eyeD3 一.eyeD3的安装 1.安装msgpack,不安装会报错distributed 1.21.8 requires msgpack, which is not installed ...

  6. Python音频处理(一)音频基础知识-周振洋

    1.声音音频基础知识 (1)声音是由震动产生,表现为波的形式.波有频率,振幅等参数.对于声波而言:频率越大,音调越高,反之越低.振幅越大,声音越大,反之越小. (2)采样率,帧率:波是连续(无穷)的, ...

  7. 使用Python音频双通道分离

    某些音频是双方对话,有可能需要对音频作通道的分离. 示例代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- """ 音 ...

  8. 太赞了!Python竟可以轻松实现音频格式无损转换

    大家好,我是辰哥 辰哥在平时处理音频格式的时候,需要去下载各种音频处理软件(专业一点的软件还要收费),掌握Python技术的我们,知道Python是万能的(哈哈哈,开个玩笑).今天辰哥就来教大家用Py ...

  9. Python音频操作+同时播放两个音频

    对于python而言,音频的操作可以使用pygame包中的sound 和 music对象,本博客主要讲解这两个对象. 1.sound对象 Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文 ...

随机推荐

  1. C#操作Control异步工具类

    /// <summary> /// 异步工具类 /// </summary> public class TaskTools { /// <summary> /// ...

  2. [Linux]防火墙关闭与开启

    防火墙关闭与开启 系统环境:ubuntu16.04 工具:xshell 测试远程主机的端口是否开启 telnet 192.168.xx.xx 80 防火墙关闭/开启/重启 # 防火墙关闭 sudo u ...

  3. MySQL存储过程 游标

    MySQL存储过程  游标 如何在存储过程中使用MySQL游标来遍历SELECT语句返回的结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标.游标允许您迭代查询返回的一组行,并相应地处理 ...

  4. HTML CSS 特殊字符表

    HTML有许多特殊的字符,您对此有多少了解?平时在WEB制作中,您又有用到多少?或者说你在平时使用之时,是否也会碰到,有许多特殊字符要如何打印出来?比如说“笑脸”,比如说“版权号”.要是你用时忘记了这 ...

  5. .net邮件发送帮助类

    代码如下: using System; using System.Collections.Generic; using System.Text; using System.Configuration; ...

  6. [转]关于Megatops BinCalc RPN计算器的说明

    最近收到几个好心人发来的邮件,指出我的BinCalc存在低级BUG,即1+1算出来不等于2--鉴于存在这种误解的人之多,俺不得不爬出来澄清一下--我的Megatops BinCalc当中的计算器是RP ...

  7. 采用Tensorflow内部函数直接对模型进行冻结

    # enhance_raw.py # transform from single frame into multi-frame enhanced single raw from __future__ ...

  8. C++标准模板库(STL)之Pair

    1.Pair的常用用法 pair:两个元素绑在一起作为一个合成元素.可以看成是两个元素的结构体. struct pair { typeName1 first; typeName2 second; }; ...

  9. TCP建立连接三次握手和释放连接四次握手

    TCP建立连接三次握手和释放连接四次握手     [转载]http://blog.csdn.net/guyuealian/article/details/52535294   在谈及TCP建立连接和释 ...

  10. kafka 心跳和 reblance

    kafka 的心跳是 kafka consumer 和 broker 之间的健康检查,只有当 broker coordinator 正常时,consumer 才会发送心跳. consumer 和 re ...