110 lines
2.4 KiB
Markdown
110 lines
2.4 KiB
Markdown
|
|
# 语音交互网页
|
|||
|
|
|
|||
|
|
基于 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 API(Chrome/Firefox/Edge)
|
|||
|
|
2. 需要用户授权麦克风权限
|
|||
|
|
3. 模型推理较慢(约10-30秒),请耐心等待
|
|||
|
|
4. 录音格式为 WebM,模型服务会自动转换
|