使用标准库python创建波形表示

时间:2013-05-21 21:27:57

标签: python numpy wav waveform

我正在创建一个wav文件的波形表示,并很好奇使用标准库在python中有效实现这一目标的最佳方法。一些音频文件可能只有几分钟。

谢谢!

2 个答案:

答案 0 :(得分:2)

http://docs.python.org/2/library/wave.html - 用于读取wav文件的stdlib。 A simple example of using it.

我最喜欢的就是这样做(伪代码)

fmts = (None, "=B", "=h", None, "=l")
fmt = fmts[sampwidth]
dcs  = (None, 128, 0, None, 0)
dc = dcs[sampwidth]

image_width = 600
image_height = 300
chunk_size = len(wavefile.getnframes()) / image_width

def unpacker(frame):
    return struct.unpack(fmt, frame)[0]

for i in range(chunk_size):
    value = math.avg([unpacker(x) for x in wavefile.read_frames(chunk_size)])
    # and then use value * 300 to figure out the vertical position for the pixel.

您可以使用各种库而不是编写图像,例如svg。

答案 1 :(得分:0)

TimeSide库以一种非常简单的方式解决了这个问题,同时提供了一些更有趣的图表。

我有同样的问题,并实现了synthesizerpatel建议的算法,后来我发现了这个库并得到了更好的结果。