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

如何在Streamlit Sharing中部署支持用户音频录制的数据收集应用?

在Streamlit Sharing中实现用户音频录制并部署数据收集应用

我刚好解决过类似的问题,Streamlit Sharing上的音频录制关键是要选适配浏览器API且不需要额外服务端组件的方案,推荐用streamlit-audio-recorder库——它基于浏览器原生的MediaRecorder API,完美适配Streamlit Sharing的沙箱环境,不需要额外配置服务器。下面是完整的实现和部署步骤:

一、代码实现步骤

1. 准备依赖

首先在项目根目录创建requirements.txt文件,加入以下内容(确保版本兼容):

streamlit>=1.20.0
streamlit-audio-recorder>=0.0.8

2. 编写核心应用代码

创建app.py,实现短语展示、音频录制和基础存储功能:

import streamlit as st
from streamlit_audio_recorder import audio_recorder

# 页面配置
st.set_page_config(page_title="音频数据收集工具", page_icon="🎤")

st.title("🎤 音频数据收集工具")

# 配置需要用户朗读的短语(可以固定或动态加载)
target_phrase = st.text_input(
    "设置待朗读短语",
    value="人工智能正在改变世界",
    help="用户将朗读这个短语并录制音频"
)
st.markdown(f"### 请朗读以下内容:\n**{target_phrase}**")

# 渲染音频录制组件
audio_bytes = audio_recorder(
    text="点击开始录制(再次点击停止)",
    recording_color="#ff4b4b",
    neutral_color="#4CAF50",
    icon_name="microphone",
    icon_size="3x"
)

# 处理录制完成的音频
if audio_bytes:
    # 播放录制的音频供用户确认
    st.subheader("录制预览")
    st.audio(audio_bytes, format="audio/wav")
    
    # 保存音频到本地(Streamlit Sharing临时存储,建议后续上传到云)
    record_id = st.session_state.get("record_counter", 0)
    filename = f"recording_{record_id}_{target_phrase.replace(' ', '_')}.wav"
    with open(filename, "wb") as f:
        f.write(audio_bytes)
    
    st.success(f"音频已保存:`{filename}`")
    
    # 更新会话内的录制计数
    if "record_counter" not in st.session_state:
        st.session_state.record_counter = 0
    st.session_state.record_counter += 1

二、部署到Streamlit Sharing

  1. 将代码(app.py + requirements.txt)上传到一个公开的GitHub仓库(私有仓库也可以,但需要Streamlit授权访问)
  2. 登录Streamlit Sharing平台,点击「New app」按钮
  3. 选择对应的GitHub仓库、分支和主文件(app.py)
  4. 点击「Deploy」,等待依赖安装和应用启动——整个过程通常只需要1-2分钟

三、关键注意事项

  • 音频持久化:Streamlit Sharing的本地文件系统是临时的,应用重启后所有本地存储的音频会丢失。如果需要长期保存收集的数据,建议集成云存储服务(比如AWS S3、Google Cloud Storage):
    • 在Streamlit的「Secrets」面板中配置云存储的密钥
    • 使用对应SDK(如boto3 for S3)将录制好的audio_bytes直接上传到云端
  • 浏览器权限:用户第一次使用时需要允许浏览器访问麦克风,确保页面提示清晰,引导用户授权
  • 兼容性:streamlit-audio-recorder支持绝大多数现代浏览器(Chrome、Firefox、Edge等),但建议在应用中添加提示,告知用户使用主流浏览器
  • 资源限制:Streamlit Sharing有内存和CPU限制,避免同时处理大量音频文件,建议录制完成后立即上传云端并清理本地文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:47:29