yl-frontend/api-docs/assistant-api.txt

256 lines
4.9 KiB
Plaintext
Raw Normal View History

2024-12-05 21:56:49 +08:00
智能语音助手模块接口文档
===================
基础信息
-------
- 基础路径: /api/v1/assistant
- 请求方式: REST
- 数据格式: JSON
- 认证方式: Bearer Token
数据结构
-------
VoiceCommand 语音指令对象:
{
id: number, // 指令ID
phrase: string, // 语音短语
action: string, // 执行动作
type: string, // 指令类型
enabled: boolean, // 是否启用
createTime: string // 创建时间
}
VoiceReminder 语音提醒对象:
{
id: number, // 提醒ID
title: string, // 提醒标题
content: string, // 提醒内容
time: string, // 提醒时间
repeat: string[], // 重复周期
voiceEnabled: boolean, // 是否启用语音
status: string // 提醒状态
}
VoiceMessage 对话消息对象:
{
id: number, // 消息ID
role: string, // 消息角色(user/assistant)
content: string, // 消息内容
type: string, // 消息类型(text/voice)
time: string, // 消息时间
audioUrl?: string // 语音URL可选
}
API 接口
-------
1. 语音识别
POST /api/v1/assistant/recognize
Content-Type: multipart/form-data
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
| audio | File | 是 | 语音文件(WAV/MP3) |
| lang | string | 否 | 语言代码(zh-CN/en-US) |
响应示例:
{
"code": 200,
"message": "success",
"data": {
"text": "打开电视",
"confidence": 0.95
}
}
2. 语音合成
POST /api/v1/assistant/synthesize
请求参数:
{
"text": "好的,已为您打开电视",
"voice": "female",
"rate": 1.0,
"pitch": 1.0
}
响应示例:
{
"code": 200,
"message": "success",
"data": {
"audioUrl": "https://example.com/audio/123.mp3",
"duration": 3.5
}
}
3. 执行语音指令
POST /api/v1/assistant/execute
请求参数:
{
"command": "打开电视",
"context": {
"room": "客厅",
"device": "tv"
}
}
响应示例:
{
"code": 200,
"message": "success",
"data": {
"action": "tv_on",
"status": "success",
"response": "好的,已为您打开电视"
}
}
4. 获取语音指令列表
GET /api/v1/assistant/commands
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
| type | string | 否 | 指令类型 |
| enabled| boolean| 否 | 是否启用 |
响应示例:
{
"code": 200,
"message": "success",
"data": [
{
"id": 1,
"phrase": "打开电视",
"action": "tv_on",
"type": "device",
"enabled": true,
"createTime": "2024-03-20 10:00:00"
}
]
}
5. 添加语音提醒
POST /api/v1/assistant/reminders
请求参数:
{
"title": "吃药提醒",
"content": "该吃降压药了",
"time": "08:00",
"repeat": ["mon", "wed", "fri"],
"voiceEnabled": true
}
响应示例:
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"title": "吃药提醒",
"content": "该吃降压药了",
"time": "08:00",
"repeat": ["mon", "wed", "fri"],
"voiceEnabled": true,
"status": "pending"
}
}
6. 获取对话历史
GET /api/v1/assistant/messages
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
| page | number | 否 | 页码默认1 |
| size | number | 否 | 每页数量默认20 |
响应示例:
{
"code": 200,
"message": "success",
"data": {
"total": 100,
"records": [
{
"id": 1,
"role": "user",
"content": "今天天气怎么样",
"type": "voice",
"time": "2024-03-20 10:00:00",
"audioUrl": "https://example.com/audio/q123.mp3"
},
{
"id": 2,
"role": "assistant",
"content": "今天天气晴朗气温20度适合外出活动",
"type": "text",
"time": "2024-03-20 10:00:01"
}
]
}
}
7. 更新语音设置
PUT /api/v1/assistant/settings
请求参数:
{
"volume": 80,
"rate": 1.0,
"voice": "female",
"wakeWord": "小助手",
"autoReply": true
}
响应示例:
{
"code": 200,
"message": "success",
"data": {
"volume": 80,
"rate": 1.0,
"voice": "female",
"wakeWord": "小助手",
"autoReply": true,
"updateTime": "2024-03-20 10:00:00"
}
}
错误码说明
--------
| 错误码 | 说明 |
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
注意事项
-------
1. 语音文件格式要求:
- 支持格式WAV、MP3
- 采样率16kHz
- 时长限制60秒
2. 语音识别支持的语言:
- 中文zh-CN
- 英文en-US
3. 语音合成注意事项:
- 速率范围0.5-2.0
- 音量范围0-100
- 支持的声音:男声、女声
4. 性能优化<E4BC98><E58C96>
- 语音文件建议压缩后上传
- 长文本建议分段合成
- 使用WebSocket保持实时连接
5. 安全建议:
- 语音文件存储时加密
- 定期清理历史记录
- 设置访问频率限制