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

Streamlit麦克风录音后Librosa加载音频报LibsndfileError求助

问题解决方法

st_audiorec返回的是WAV格式的字节流数据,而librosa.load()默认无法直接解析原始字节流,这就是报错的原因。你需要用io.BytesIO将字节流包装成类文件对象,再传给librosa。

修改后的代码如下:

import streamlit as st
from st_audiorec import st_audiorec
import librosa
import io

wav_audio_data = st_audiorec()
if wav_audio_data is not None:
    # 将字节流包装为类文件对象
    audio_file = io.BytesIO(wav_audio_data)
    y, sr = librosa.load(audio_file, sr=None)
    # 可添加验证代码确认加载成功
    st.write(f"采样率: {sr}, 音频长度: {len(y)/sr:.2f}秒")

原理说明:

  • io.BytesIO把字节数据转换成符合文件接口的对象,让librosa底层的libsndfile可以正常读取解析WAV格式的头部和音频数据。
  • 保持sr=None可保留录制音频的原始采样率,避免自动重采样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:32:02