You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PaddleSpeech/demos/speech_web/API.md

405 lines
6.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 接口文档
开启服务后可参照:
http://0.0.0.0:8010/docs
## ASR
### 【POST】/asr/offline
说明:上传 16k, 16bit wav 文件,返回 offline 语音识别模型识别结果
返回: JSON
前端接口: ASR-端到端识别,音频文件识别;语音指令-录音上传
示例:
```json
{
"code": 0,
"result": "你也喜欢这个天气吗",
"message": "ok"
}
```
### 【POST】/asr/offlinefile
说明上传16k,16bit wav文件返回 offline 语音识别模型识别结果 + wav 数据的 base64
返回: JSON
前端接口: 音频文件识别(播放这段base64还原后记得添加 wav 头,采样率 16k, int16添加后才能播放)
示例:
```json
{
"code": 0,
"result": {
"asr_result": "今天天气真好",
"wav_base64": "///+//3//f/8/////v/////////////////+/wAA//8AAAEAAQACAAIAAQABAP"
},
"message": "ok"
}
```
### 【POST】/asr/collectEnv
说明: 通过采集环境噪音,上传 16k, int16 wav 文件,来生成后台 VAD 的能量阈值, 返回阈值结果
前端接口ASR-环境采样
返回: JSON
```json
{
"code": 0,
"result": 3624.93505859375,
"message": "采集环境噪音成功"
}
```
### 【GET】/asr/stopRecord
说明:通过 GET 请求 /asr/stopRecord, 后台停止接收 offlineStream 中通过 WS 协议 上传的数据
前端接口:语音聊天-暂停录音(获取 NLP播放 TTS 时暂停)
返回: JSON
```JSON
{
"code": 0,
"result": null,
"message": "停止成功"
}
```
### 【GET】/asr/resumeRecord
说明:通过 GET 请求 /asr/resumeRecord, 后台停止接收 offlineStream 中通过 WS 协议 上传的数据
前端接口:语音聊天-恢复录音( TTS 播放完毕时,告诉后台恢复录音)
返回: JSON
```JSON
{
"code": 0,
"result": null,
"message": "Online录音恢复"
}
```
### 【Websocket】/ws/asr/offlineStream
说明:通过 WS 协议,将前端音频持续上传到后台,前端采集 16kInt16 类型的PCM片段持续上传到后端
前端接口:语音聊天-开始录音,持续将麦克风语音传给后端,后端推送语音识别结果
返回后端返回识别结果offline 模型识别结果, 由WS推送
### 【Websocket】/ws/asr/onlineStream
说明:通过 WS 协议,将前端音频持续上传到后台,前端采集 16kInt16 类型的 PCM 片段,持续上传到后端
前端接口ASR-流式识别开始录音,持续将麦克风语音传给后端,后端推送语音识别结果
返回后端返回识别结果online 模型识别结果, 由 WS 推送
## NLP
### 【POST】/nlp/chat
说明:返回闲聊对话的结果
前端接口:语音聊天-获取到ASR识别结果后向后端获取闲聊文本
上传示例:
```json
{
"chat": "天气非常棒"
}
```
返回示例:
```json
{
"code": 0,
"result": "是的,我也挺喜欢的",
"message": "ok"
}
```
### 【POST】/nlp/ie
说明:返回信息抽取结果
前端接口:语音指令-向后端获取信息抽取结果
上传示例:
```json
{
"chat": "今天我从马来西亚出发去香港花了五十万元"
}
```
返回示例:
```json
{
"code": 0,
"result": [
{
"时间": [
{
"text": "今天",
"start": 0,
"end": 2,
"probability": 0.9817976247505698
}
],
"出发地": [
{
"text": "马来西亚",
"start": 4,
"end": 8,
"probability": 0.974892389414169
}
],
"目的地": [
{
"text": "马来西亚",
"start": 4,
"end": 8,
"probability": 0.7347504438136951
}
],
"费用": [
{
"text": "五十万元",
"start": 15,
"end": 19,
"probability": 0.9679076530644402
}
]
}
],
"message": "ok"
}
```
## TTS
### 【POST】/tts/offline
说明:获取 TTS 离线模型音频
前端接口TTS-端到端合成
上传示例:
```json
{
"text": "天气非常棒"
}
```
返回示例:对应音频对应的 base64 编码
```json
{
"code": 0,
"result": "UklGRrzQAABXQVZFZm10IBAAAAABAAEAwF0AAIC7AAACABAAZGF0YZjQAAADAP7/BAADAAAA...",
"message": "ok"
}
```
### 【POST】/tts/online
说明:流式获取语音合成音频
前端接口:流式合成
上传示例:
```json
{
"text": "天气非常棒"
}
```
返回示例:
二进制PCM片段16k Int 16类型
## VPR
### 【POST】/vpr/enroll
说明:声纹注册,通过表单上传 spk_id字符串非空, 与 audio (文件)
前端接口:声纹识别-声纹注册
上传示例:
```text
curl -X 'POST' \
'http://0.0.0.0:8010/vpr/enroll' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'spk_id=啦啦啦啦' \
-F 'audio=@demo_16k.wav;type=audio/wav'
```
返回示例:
```json
{
"status": true,
"msg": "Successfully enroll data!"
}
```
### 【POST】/vpr/recog
说明:声纹识别,识别文件,提取文件的声纹信息做比对 音频 16k, int 16 wav 格式
前端接口:声纹识别-上传音频,返回声纹识别结果
上传示例:
```shell
curl -X 'POST' \
'http://0.0.0.0:8010/vpr/recog' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'audio=@demo_16k.wav;type=audio/wav'
```
返回示例:
```json
[
[
"啦啦啦啦",
[
"",
100
]
],
[
"test1",
[
"",
11.64
]
],
[
"test2",
[
"",
6.09
]
]
]
```
### 【POST】/vpr/del
说明: 根据 spk_id 删除用户数据
前端接口:声纹识别-删除用户数据
上传示例:
```json
{
"spk_id":"啦啦啦啦"
}
```
返回示例
```json
{
"status": true,
"msg": "Successfully delete data!"
}
```
### 【GET】/vpr/list
说明:查询用户列表数据,无需参数,返回 spk_id 与 vpr_id
前端接口:声纹识别-获取声纹数据列表
返回示例:
```json
[
[
"test1",
"test2"
],
[
9,
10
]
]
```
### 【GET】/vpr/data
说明: 根据 vpr_id 获取用户vpr时使用的音频
前端接口:声纹识别-获取vpr对应的音频
访问示例:
```shell
curl -X 'GET' \
'http://0.0.0.0:8010/vpr/data?vprId=9' \
-H 'accept: application/json'
```
返回示例:
对应音频文件
### 【GET】/vpr/database64
说明: 根据 vpr_id 获取用户 vpr 时注册使用音频转换成 16k, int16 类型的数组,返回 base64 编码
前端接口:声纹识别-获取 vpr 对应的音频(注意:播放时需要添加 wav头16k,int16, 可参考 tts 播放时添加 wav 的方式,注意更改采样率)
访问示例:
```shell
curl -X 'GET' \
'http://localhost:8010/vpr/database64?vprId=12' \
-H 'accept: application/json'
```
返回示例:
```json
{
"code": 0,
"result":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"message": "ok"
```