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

Python中如何在不写入磁盘的情况下获取.wav文件数据?

内存存储录音字节流的解决方案

你已经拿到了wav_bytes字节数据,完全不需要写入磁盘,直接用BytesIO将其包装成类文件对象,就能直接传给需要音频输入的推理函数,修改后的代码如下:

from io import BytesIO
import numpy as np

val = st_audiorec()

if isinstance(val, dict):  # 提取音频数据
    with st.spinner('retrieving audio-recording...'):
        ind, val = zip(*val['arr'].items())
        ind = np.array(ind, dtype=int)  # 转为numpy数组
        val = np.array(val)             # 转为numpy数组
        sorted_ints = val[ind]
        # 生成wav格式字节流
        wav_bytes = b"".join([int(v).to_bytes(1, "big") for v in sorted_ints])
        
        # 关键:将字节流包装为内存中的类文件对象
        audio_in_memory = BytesIO(wav_bytes)
        # 重置文件指针到开头(避免后续读取时从末尾开始)
        audio_in_memory.seek(0)
        
        # 直接将audio_in_memory传入你的推理函数
        # result = your_inference_function(audio_in_memory)

说明:

  • BytesIO(wav_bytes)会在内存中创建一个可读写的类文件对象,和磁盘文件的接口完全一致,大部分处理音频的推理函数都支持直接接收这种对象。
  • 调用seek(0)是为了确保后续读取操作从音频数据的起始位置开始,避免因指针位置问题读取不到内容。
  • 删除了写入磁盘的代码块,全程在内存中完成音频数据的处理与传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:55:17