gpt4 book ai didi

python - 读取缓冲区中的 *.wav 文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:05 26 4
gpt4 key购买 nike

我需要从特定数量的缓冲区中的 *.wav 文件中读取数据。到目前为止,我可以使用 wave 库读取 10 秒的 wav 文件:

fp = wave.open('M1F1-int16-AFsp.wav')
nchan = fp.getnchannels()
N = fp.getnframes()
fr= fp.getframerate()
dstr = fp.readframes(N*nchan)
data = numpy.fromstring(dstr, numpy.int16)
data = numpy.reshape(data, (-1,nchan))

在我可以使用 open as write mode with wave 函数写入文件之后。使用前面的源代码,我可以读取一个wave文件并写入一个wave文件的副本。但是,现在我想读写2048的缓冲区中的wav文件。你知道更好的读写wav文件的方法吗,这些文件的长度更长,需要分块处理?

感谢您的指导

最佳答案

Wave.readframes(n) 方法接受一个参数 controlling the size of the frames returned .我们可以通过将缓冲区大小(2048 字节)除以样本宽度 + channel 数来计算帧大小。然后我们可以遍历文件,抓取一堆这种大小的帧并将它们写入我们的输出文件。

如下:

import wave

BUFFER_SIZE = 2048

fp = wave.open('M1F1-int16-AFsp.wav')

output = wave.open('output.wav', 'wb')
output.setparams(fp.getparams())

frames_to_read = BUFFER_SIZE / (fp.getsampwidth() + fp.getnchannels())

while True:
frames = fp.readframes(frames_to_read)
if not frames:
break

output.writeframes(frames)

关于python - 读取缓冲区中的 *.wav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34959797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com