[英]Why these two WAV-creating functions are not producing identical output?
我正在使用这些功能(接收 pyaudio 输入)来生成可在 torchaudio 上使用的音频 object。 但是,只有“write2”产生了有效的结果,而不是“write1”。
def write2(recording):
n_files = len(os.listdir(f_name_directory))
filename = os.path.join(f_name_directory, 'file.wav')
wf = wave.open(filename, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(recording)
wf.close()
with open('file.wav', 'rb') as f:
buffer = io.BytesIO(f.read())
return buffer
def write1(recording):
buffer = io.BytesIO()
wave_write = wave.open(buffer, 'wb')
wave_write.setnchannels(CHANNELS)
wave_write.setsampwidth(p.get_sample_size(FORMAT))
wave_write.setframerate(RATE)
wave_write.writeframes(recording)
wave_write.close()
return buffer
在没有 i/o 操作的情况下,我需要做什么才能使 write1 等同于 write2?
正如@jasonharper 在开篇评论中所说,解决方案是在 function 的末尾插入 buffer.seek(0),然后再返回它。
(...)
wave_write.close()
buffer.seek(0)
return buffer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.