Files
voice-chat-web/README.md

110 lines
2.4 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.
# 语音交互网页
基于 Qwen2-Audio 的语音对话网页点击按钮录音AI 实时回复。
## 端口
- **服务端口**: 19019
- **模型服务**: 19018需要单独部署
## 功能
- 点击按钮录音(再次点击停止)
- 录音状态可视化(波形动画)
- 多轮对话支持
- 服务状态检测
- 清除对话功能
## 架构
```
┌─────────────┐ ┌─────────────────┐ ┌───────────────────┐
│ 浏览器前端 │ ──── │ 本机后端(19019) │ ──── │ 模型服务(19018) │
│ (录音/播放) │ HTTP │ (转发代理) │ HTTP │ (Qwen2-Audio) │
└─────────────┘ └─────────────────┘ └───────────────────┘
```
## 部署
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 启动模型服务(另一台电脑)
参考 `qwen-audio-server` 项目,在 GPU 机器上部署。
### 3. 启动网页服务
```bash
# 默认端口 19019
python main.py
# 或指定模型服务地址
MODEL_SERVICE_URL=http://192.168.2.5:19018 python main.py
```
### 4. 访问网页
```
http://localhost:19019
```
## 环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| PORT | 服务端口 | 19019 |
| MODEL_SERVICE_URL | 模型服务地址 | http://localhost:19018 |
## API 接口
### 语音对话
```bash
POST /api/voice/chat
Content-Type: multipart/form-data
参数:
- audio: 音频文件
- conversation_id: 对话ID可选
返回:
{
"reply": "AI回复文本",
"conversation_id": "xxx",
"timestamp": "..."
}
```
### 服务状态
```bash
GET /api/status
返回:
{
"status": "ok",
"model_service": "http://...",
"model_online": true
}
```
## 前端功能
| 功能 | 说明 |
|------|------|
| 录音按钮 | 点击开始/停止录音 |
| 波形动画 | 录音时显示动态波形 |
| 消息列表 | 显示对话历史 |
| 状态指示 | 模型服务连接状态 |
| 清除对话 | 重置对话历史 |
## 注意事项
1. 需要浏览器支持 MediaRecorder APIChrome/Firefox/Edge
2. 需要用户授权麦克风权限
3. 模型推理较慢约10-30秒请耐心等待
4. 录音格式为 WebM模型服务会自动转换