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

能否为Streamlit的text_input/chat_input设置动态文本?语音转文字场景

Streamlit text_input/chat_input 动态填充语音转文本方案

不需要额外依赖库,text_input 和 chat_input 都可以通过Streamlit的session_state实现动态设置文本的功能,核心逻辑是将语音转录的结果存入session_state,再绑定到组件的value参数上。

1. text_input 动态填充实现

直接将转录后的文本绑定到text_input的value参数,结合session_state维护状态:

import streamlit as st

# 初始化状态变量
if "transcribed_text" not in st.session_state:
    st.session_state.transcribed_text = ""

# 替换为你的实际语音转录逻辑
def transcribe_from_mic():
    # 这里编写麦克风录音+文本转录代码,返回结果字符串
    return "通过麦克风转录的文本内容"

# 触发语音转录的按钮
if st.button("开始语音转录"):
    st.session_state.transcribed_text = transcribe_from_mic()

# 绑定状态变量到text_input
user_input = st.text_input("输入内容", value=st.session_state.transcribed_text)

# 后续可使用user_input进行交互逻辑
if user_input:
    st.write(f"你输入的内容:{user_input}")

2. chat_input 动态填充实现

chat_input同样支持绑定value参数,但需要注意提交后的状态重置(避免重复显示转录内容):

import streamlit as st

# 初始化状态变量
if "chat_transcript" not in st.session_state:
    st.session_state.chat_transcript = ""

# 替换为你的实际语音转录逻辑
def transcribe_from_mic():
    return "语音转录的聊天内容"

# 触发语音转录的按钮
if st.button("语音转聊天输入"):
    st.session_state.chat_transcript = transcribe_from_mic()

# 绑定状态变量到chat_input
prompt = st.chat_input("请输入消息", value=st.session_state.chat_transcript)

# 处理聊天提交逻辑
if prompt:
    st.chat_message("user").write(prompt)
    # 提交后清空状态,避免下次加载仍显示旧内容
    st.session_state.chat_transcript = ""

关键说明

  • 语音转录的核心逻辑(麦克风录音、转文本)需要你自行实现(比如使用SpeechRecognition库调用本地模型,或对接云语音API),但填充到Streamlit组件的部分仅依赖自带的session_state。
  • 若需要更复杂的交互(比如实时转录填充),可以结合st.rerun()在转录过程中刷新页面更新组件值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:27:34