1

我正在创建一个 wav 文件的波形表示,并且很好奇使用标准库在 python 中有效地解决这个问题的最佳方法是什么。一些音频文件可能长达几分钟。

谢谢!

4

2 回答 2

2

http://docs.python.org/2/library/wave.html - 用于读取 wav 文件的标准库。一个简单的使用例子。

在我的脑海中,这就是我的做法(伪代码)

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。

于 2013-05-22T08:36:20.153 回答
0

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

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

于 2014-01-23T20:58:16.483 回答