Files
aistream-test/audio_ai_chat
2025-12-04 17:42:00 +08:00
..
xx
2025-12-04 02:16:51 +08:00
x
2025-12-04 17:42:00 +08:00
x
2025-12-04 17:42:00 +08:00
x
2025-12-03 20:54:23 +08:00
x1
2025-12-02 21:04:46 +08:00
x1
2025-12-02 21:04:46 +08:00
x1
2025-12-02 21:04:46 +08:00
x1
2025-12-02 21:04:46 +08:00
x
2025-12-03 20:54:23 +08:00
x1
2025-12-02 21:04:46 +08:00

语音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/docsFastAPI自动生成)

目录说明

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/回复)---|