You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两个WAV生成函数输出不一致?如何让write1等效于write2且无IO操作

解决方法

问题出在write1的BytesIO指针位置上:写完WAV数据后,指针停在缓冲区末尾,torchaudio读取时从这个位置开始,自然读不到内容;而write2重新读取磁盘文件时,指针默认在起始位置,所以能正常工作。

修改后的write1函数(无需磁盘IO即可和write2功能等效):

import io
import wave

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()
    # 将缓冲区指针移到起始位置,保证后续读取能拿到完整数据
    buffer.seek(0)
    return buffer

核心改动就是在关闭wave对象后,调用buffer.seek(0)重置指针位置,让BytesIO回到可以从头读取的状态,这样返回的缓冲区就和write2从磁盘读出来的完全一致,torchaudio就能正常解析了。

内容的提问来源于stack exchange,提问作者plshelpmeout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:40:54