Mon Sep 30 2024 00:00:00 GMT+0800 (中国标准时间)
精准国际传播系统 API文档
该API通过WebSocket连接提供VAD、ASR、TTS、CTT多模式下实时和离线融合的语音识别。
基本URL
ws://<HOST>:<PORT> |
鉴权
- Bearer Token: JWT秘钥。
- 需要在请求中加入
Authorization头,携带Bearer Token。
支持的协议
- 上传语音数据包:
{code:"101",data:"binary"} - Ping间隔: 自动Ping保持连接
初始语音请求
语音格式初始化请求示例 (WebSocket)
发送到WebSocket服务器的消息应为JSON格式。客户端通过发送JSON消息控制 WebSocket 连接的行为,并通过二进制音频数据发送音频流。以下是常见的请求参数:
{ |
- is_speaking: (可选)表示用户当前是否正在讲话的布尔值。
- chunk_interval: (可选)处理音频块的间隔(音频帧数)。
- wav_name: (可选)音频流的名称。
- chunk_size: (可选)用于VAD和ASR的音频块大小(帧数)。
- encoder_chunk_look_back: (可选)流式ASR的编码器回看设置。
- decoder_chunk_look_back: (可选)流式ASR的解码器回看设置。
- hotword: (可选)用于ASR识别的热词。
- mode: (可选)操作模式。可选值:
"2pass"(双通识别)、"online"(流式)、"offline"(录音后处理)。
WebSocket API 功能说明
1. 实时语音识别(ASR)
客户端可以通过 WebSocket 发送音频流(以二进制形式传输)以获取实时语音识别结果。
- 音频格式: 16kHz 采样率,单声道,PCM格式
- 传输方式: 通过 WebSocket 二进制数据块发送音频。
请求示例:
- 发送音频块(以二进制格式发送,非JSON)。
- 发送控制参数:
{ |
响应示例:
{ |
text字段包含 ASR 模型识别的文本。is_final为true时表示该段音频已处理完成。
2. 调用大语言模型(LLM)
识别后的文本可以通过 WebSocket 调用大模型接口进行处理,生成进一步的语义分析或应答。
响应示例:
{ |
text字段包含大模型生成的文本。
3. 文本转语音(TTS)
大语言模型生成的文本可以通过TTS接口转换为语音,语音将以base64编码的音频块形式通过 WebSocket 发送。
请求示例:
在 WebSocket 处理过程中,系统会自动调用TTS生成语音,客户端不需要额外请求。
响应示例:
{ |
mode为"voice"表示该响应为TTS生成的音频数据。text字段为经过base64编码的音频块,客户端需解码为PCM或播放格式。
错误处理
当发生错误时,服务器将返回如下格式的错误信息:
{ |
WebSocket 使用流程
- 建立连接: 客户端连接到服务器。
- 发送音频流: 通过 WebSocket 发送音频块(以二进制格式),并可选发送JSON控制参数(如
is_speaking和mode)。 - ASR识别结果: 服务器返回语音识别结果文本。
- 调用大模型(可选): 识别文本发送给大模型接口,生成进一步的回答。
- TTS语音合成(可选): 大模型生成的文本转换为语音,流式传输回客户端。
- 处理结束: 当
is_final为true时,表示一次会话的结束。
示例请求流程
- 客户端通过 WebSocket 发送控制消息:
{ |
- 客户端开始发送音频块(通过二进制消息)到服务器。
- 服务器返回 ASR 识别结果:
{ |
- 服务器调用大语言模型,返回模型生成的应答:
{ |
- 服务器调用TTS接口,将文本转换为语音:
{ |
客户端可以解码 base64 音频数据并播放。
在线ASR响应示例 (WebSocket)
{ |
- mode: 用于ASR处理的操作模式。
- text: ASR模型识别的文本。
- wav_name: 当前音频流的名称。
- is_final: 布尔值,表示是否为最终结果。
离线ASR+CTT响应示例 (WebSocket)
{ |
- mode: 用于ASR处理的操作模式。
- text: ASR模型识别的文本。
- wav_name: 当前音频流的名称。
- is_final: 布尔值,表示是否为最终结果。
常见问题
- ConnectionClosed: 如果连接关闭,请检查网络问题或WebSocket处理是否正确。
- InvalidState: 确保WebSocket连接已正确打开并未中断。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Anthony's Blog!
评论