Files
aistream-test/audio_ai_chat/README.md
T
2025-12-02 21:04:46 +08:00

71 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 语音AI对话系统(WebSocket版)
基于FastAPI实现,支持前端通过WebSocket推送语音数据,串联ASR(语音转文字)→ LLM(大模型对话)→ TTS(文字转语音)全流程,返回语音结果给前端。
## 快速启动
1. 创建Conda虚拟环境:`conda create -n audio-ai-chat python=3.10 -y`
2. 激活环境:`conda activate audio-ai-chat`
3. 安装依赖:`pip install -r requirements.txt`
4. 配置环境变量:复制`.env.example``.env`,修改服务地址、密钥等配置
5. 启动服务:`python run.py`
6. 接口文档:访问 `http://localhost:8000/docs`FastAPI自动生成)
## 目录说明
audio_ai_chat/ # 项目根目录(包名,Python可导入)
├── audio_ai_chat/ # 核心代码目录(与根目录同名,避免导入冲突)
│ ├── __init__.py # 包初始化文件(空文件即可)
│ ├── main.py # 项目启动类(FastAPI入口+WebSocket路由)
│ ├── config/ # 配置文件目录
│ │ ├── __init__.py
│ │ ├── settings.py # 核心配置(ASR/LLM/TTS服务地址、WS参数等)
│ │ └── logger.py # 日志配置(格式、输出路径、级别)
│ ├── core/ # 核心业务逻辑(调整服务调用方式)
│ │ ├── __init__.py
│ │ ├── websocket_handler.py# 调整为:通过工厂类获取服务实例
│ │ ├── asr/ # ASR服务目录(多版本实现)
│ │ │ ├── __init__.py
│ │ │ ├── base.py # ASR统一接口抽象类
│ │ │ ├── version1.py # ASR版本1(如:本地离线版)
│ │ │ ├── version2.py # ASR版本2(如:百度云ASR)
│ │ │ └── factory.py # ASR工厂类(根据配置创建实例)
│ │ ├── llm/ # LLM服务目录(多版本实现)
│ │ │ ├── __init__.py
│ │ │ ├── base.py # LLM统一接口抽象类
│ │ │ ├── openai_llm.py # LLM版本1OpenAI
│ │ │ ├── local_llm.py # LLM版本2(本地部署LLM
│ │ │ └── factory.py # LLM工厂类
│ │ └── tts/ # TTS服务目录(多版本实现)
│ │ ├── __init__.py
│ │ ├── base.py # TTS统一接口抽象类
│ │ ├── ali_tts.py # TTS版本1(阿里云)
│ │ ├── pyttsx3_tts.py # TTS版本2(本地pyttsx3
│ │ └── factory.py # TTS工厂类
│ ├── codec/ # 数据编解码目录(存放加密/解密逻辑)
│ │ ├── __init__.py
│ │ └── ProtocolCodec.py # 已有:WS数据加密/解密、协议编解码
│ ├── models/ # 数据模型目录(Pydantic/数据结构定义)
│ │ ├── __init__.py
│ │ └── ws_models.py # WebSocket消息结构(请求/响应模型、错误模型)
│ └── utils/ # 工具函数目录
│ ├── __init__.py
│ ├── exceptions.py # 自定义异常(如服务调用失败、解码失败)
│ └── helpers.py # 通用工具(日志封装、异步重试、数据格式转换)
├── logs/ # 日志输出目录(自动创建)
│ └── app.log # 应用日志文件(按配置滚动生成)
├── .env # 环境变量文件(敏感配置,不提交Git)
├── .env.example # 环境变量示例(提交Git,指导配置)
├── requirements.txt # 依赖包清单
├── README.md # 项目说明(启动方式、配置说明、接口文档)
└── run.py # 项目启动脚本(简化启动命令)
## 握手流程
前端 后端
| |
|--- 建立 WebSocket 连接 ---->|
|<--- 连接接受(101状态码)---|
| |
|--- 发送身份信息(user_id+token--->|
| |
|<--- 校验结果(成功/失败)---|
| |
|--- 发送业务数据(音频/文本)--->|
|<--- 推送业务结果(TTS/回复)---|