我已经搜索了2周,但没有找到算法或解决方案。我的一些.wav文件采用MULAW压缩,而Python似乎没有wave.py
中可以成功解压它的函数。因此,我决定在Python中构建一个解码器。
我在基本元素中找到了一些关于MULAW的信息:
所以我需要一些指导,因为我不知道如何从有符号短整数得到完整的波形信号。这是我根据迄今为止收集到的信息的初步想法:
从维基百科上我得到了u-law压缩和解压缩的公式:
根据压缩公式,输出似乎限制在-1到+1的float
范围内,并且有符号短整数的范围为–32,768到32,767,因此看起来我需要将其从short int
转换为特定范围内的float
。
现在,老实说,我之前听说过量化,但我不确定是否应该先尝试去量化再解压缩或者反过来,甚至在这种情况下是否是同一件事情...教程/文档可能会使用术语上的一些技巧。
我正在处理的波形文件应该包含类似于语音合成的'A'声音,我可以通过在某些音频软件和自定义波形分析器中比较2个波形来验证成功,但我真的想减少这个过程中的试错部分。
所以,我的想法是:
u = 0xff
data_chunk = b'\xe7\xe7' # -6169
data_to_r1 = unpack('h',data_chunk)[0]/0xffff # I suspect this is wrong,
# # but I don't know what else
u_law = ( -1 if data_chunk<0 else 1 )*( pow( 1+u, abs(data_to_r1)) -1 )/u
那么,在面对压缩时,我需要采取一些算法或关键步骤吗?首先:解压,其次:量化:第三步是什么?
因为我在 Google 上找到的所有内容都是关于如何读取 .wav
PCM 调制文件类型,而不是如何处理出现的压缩情况。