毫秒级低延迟WebSocket实时生成
本文档将帮助您了解您应当如何使用Reecho的毫秒级低延迟WebSocket实时生成方案;通过该方案,不论目标文本长度如何,均可将语音生成延迟控制在700ms
左右。
:::info[]
前提条件
请您于Reecho创作中心的 开发者中心 - 配额与限制 - 配额
中查看您是否拥有毫秒级低延迟并发
配额,如果没有配额请点击需要更多配额
并与销售团队洽谈以获取毫秒级低延迟实时生成的配额与报价详情。
:::
打开Turbo通道
低延迟实时生成需要在WebSocket通道中完成,首先您需要通过请求相关接口来打开Turbo生成通道。
POST https://v1.reecho.ai/api/tts/turbo/channel
JSON Body
{
"voiceId": "<需要在通道中使用的角色ID>"
}
需要注意的是,Turbo一旦打开便不能切换角色,并且只能使用在开启通道时选择的角色,并且仅限v2.1角色可使用。
JSON Response
{
"status": 200,
"data": {
"turboChannelId": "<通道ID>",
"wsUrl": "<WebSocketUrl>",
"cancelAfter": 60
}
}
按照cancelAfter
所述,您需要在60秒内连接wsUrl
所给出的WebSocket地址,否则通道会自动取消,届时您需要重新打开Turbo通道。
连接通道进行生成
连接通道后,如果没有问题,您将会收到一条200消息。
JSON Message
{
"type": "connected",
"data": {
"status": 200,
"message": "OK, selected voiceId is <在通道中使用的角色ID>."
}
}
//如果您收到了 Waiting for Turbo Channel to be ready. 请在稍后(~1s)重连该通道。
//如果您收到了 404 Not Found,则代表您尝试连接的Websocket地址不存在,请重新获取。
您可使用您的客户端发送一条JSON消息以开始生成。
JSON Message
{
"type": "synthesis_request",
"data": {
"text": "测试",
"promptId": "default",
"temperature": 0.96,
"top_k": 256,
"top_p": 0.93,
"break_clone": false,
"sharpen": false
}
}
您可以使用选择的角色中存在的风格的promptId
来选择使用其他风格。
如果您发送的synthesis_request
请求没有问题,后端则会立即开始生成任务并在可用时立即发送audio_chunk
消息
JSON Message
{
"type": "audio_chunk",
"data": {
"hex": "00112233",
"pcm": {
"sample_rate": 24000,
"channels": 1,
"bit_depth": 16
}
}
}
其中hex
为PCM音频数据的16进制hex编码,pcm
为PCM音频数据的参数信息。如果您收到了空的hex
,则代表该段音频生成已经结束了。
在每段音频生成结束后您将收到如下所示的消息。
{
"type": "audio_generated",
"data": {
"status": 200,
"id": "<音频ID>",
"audioUrl": "<音频储存Url>"
}
}
在有音频进行生成时您也可以照常发送synthesis_request
,所有生成请求将被排队并按请求顺序生成。
连接保持
在websocket链接成功建立后,请每间隔一段时间发送
JSON Message
{
"type": "ping"
}
服务端会立即响应
JSON Message
{
"type": "pong",
"data": {
"status": 200,
"message": "Pong"
}
}
如果连接长时间无数据收发(~1分钟),连接可能会被释放以回收资源,如不希望连接被回收可定时发送ping
消息。
关闭通道
在无任何客户端连接后60秒
,通道将自动关闭。您也可以发送下方所示的消息来立即关闭通道。
JSON Message
{
"type": "close_channel"
}
并且在通道关闭时,您将收到下方所示的消息。
JSON Message
{
"type": "close",
"data": {
"status": 500,
"message": "Turbo Channel Closed"
}
}
通道关闭后所有连接将被立即关闭,占用的并发将被立即释放。
使用HTTP API管理Turbo通道
GET https://v1.reecho.ai/api/tts/turbo/channel
该请求将列出目前账户中活动的所有Turbo通道。响应如下。
JSON Response
{
"status": 200,
"message": "OK",
"data": [
{
"id": "<通道ID>",
"wsUrl": "<WebSocketUrl>",
"voiceId": "<通道开启时请求的角色ID>"
}
]
}
DELETE https://v1.reecho.ai/api/tts/turbo/channel/:id
该请求将关闭:id
所传递的通道。