从原始wav音频中获取信号的正负分量

0 投票
1 回答
1138 浏览
提问于 2025-04-18 00:48

我在看一个StackOverflow的帖子:

音频是如何用数字表示的?

根据回答,数字信号会有一个正的部分和一个负的部分。所以我想把这个和一个非常基础的WAV音频文件联系起来。

我正在用Python读取一个WAV音频文件的所有帧。我使用的代码如下:

import wave
import sys
ip = wave.open(sys.argv[1], 'r')
print ip.getparams()
for i in range(ip.getnframes()):
    iframe = ip.readframes(1)
    print iframe.encode('hex') , ' >>> ',int(iframe.encode('hex'), 16)
ip.close()

'''
Output :
C:\>python readframe.py test.wav
(1, 2, 44100, 176400, 'NONE', 'not compressed')
0000  >>>  0
0204  >>>  516
0008  >>>  8
f70b  >>>  63243
e10f  >>>  57615
bb13  >>>  47891
8217  >>>  33303
311b  >>>  12571
c41e  >>>  50206
3922  >>>  14626
8b25  >>>  35621
b728  >>>  46888
bb2b  >>>  47915
922e  >>>  37422
3b31  >>>  15153
b233  >>>  45619
f535  >>>  62773

'''

我的问题是,如何从每一帧的数据中获取WAV音频的正负部分呢?

提前谢谢你,

1 个回答

1

如果一个数比32767大,我们需要从2的16次方(也就是65536)中减去这个数,才能把它转成负数。这是因为我们在用16位的补码表示法来表示负数。

撰写回答