[英]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.