基于streamlit的大模型语音交互代码和前端代码展示

streamlit介绍

Streamlit 是一款专为数据科学家和机器学习工程师打造的开源 Python 库,具有上手快、效率高的特点,它提供了丰富的功能,包括但不限于:按钮、滑块、图表等多样化组件助力打造交互界面;能读取多种格式数据并展示、支持实时更新,方便数据处理与可视化;可集成大模型、机器学习库,轻松构建模型推理、大模型交互应用;还支持一键本地部署及云部署分享,凭借热重载等特性提升开发体验,广泛适用于数据应用开发、模型演示、大模型交互等场景。

 详情见:st.chat_message - Streamlit Docs

效果展示

本次使用了llama模型,llama模型的API_KEY申请方法见:主流AI大模型的python代码调用和代码示例-CSDN博客

基于文本向量库的构建可见:基于PDF文献的本地向量库构建和大模型检索(LLM-向量数据库)-CSDN博客 

基于streamlit的大模型语音交互代码和前端代码展示_第1张图片

代码展示:

1.导包需求:

import docx
import time
import streamlit as st
from openai import OpenAI
from PyPDF2 import PdfReader
from langchain_core.documents import Document
import speech_recognition as sr
import pyttsx3

2. 初始化语音引擎和语音识别

# 语音引擎初始化
engine = pyttsx3.init()

def speak(text):
    """将文本转换为语音输出"""
    try:
        engine.say(text)
        engine.runAndWait()
    except Exception as e:
        st.error(f"语音播放失败: {e}")
        st.session_state.audio_error = str(e)  # 保存错误信息到会话状态

def recognize_speech():
    """从麦克风录制音频并转换为文本"""
    recognizer = sr.Recognizer()
    from speech_recognition import recognizers
    try:
        with sr.Microphone() as source:
            st.session_state.recording = True
            st.write("正在检测麦克风...")
            recognizer.adjust_for_ambient_noise(source, duration=1)

            audio = None
            st.write("请开始说话..."

你可能感兴趣的:(交互,前端,人工智能,自然语言处理,gpt,llama)