我正在创建一个wav文件的波形表示,并很好奇使用标准库在python中有效实现这一目标的最佳方法。一些音频文件可能只有几分钟。
谢谢!
答案 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建议的算法,后来我发现了这个库并得到了更好的结果。