面向实时对话的语音合成

语音智能体如果等整段回复写完才开口,来电者只能在沉默中等待。在模型写作的同时把文本发送给 Paxa TTS Flash v2,其余部分还在生成时,音频就已经开始传回。

电话线上的两个智能体#

一个订票智能体和一个外卖配送智能体,由 Saku 和 Kaprao 朗读。台词里写进了停顿和语气变化,并按您在这里看到的原样发送。

从这段描述开始设计您的音色:语音助手

  • 您好,这里是订票热线。请问今天有什么可以帮您?Saku · AI 助手0:04
  • [嗯] 明天上午飞清迈的航班有两班,一班七点,一班九点半。Saku · AI 助手0:05
  • [温暖地] 好了,座位已经订好,确认信息正在发送到您的手机。Saku · AI 助手0:05
  • 骑手刚刚取到您的餐。[开心地] 大约十分钟后就能送到您家门口。Kaprao · 随和0:05

paxa-tts-flash-v2 · 记录于 2026年10月28日 · 未经编辑

同一个智能体,三种语言#

Saku 用中文、英语和泰语接听订票热线。文字按其书写系统对应的语言朗读,因此智能体可以在两轮对话之间从泰语切换到英语,无需重新连接。

中文

您好,这里是订票热线。请问今天有什么可以帮您?

saku · paxa-tts-flash-v2

英语

Hi, you've reached the booking line. How can I help you today?

saku · paxa-tts-flash-v2

泰语

สวัสดีค่ะ ฝ่ายจองตั๋วยินดีให้บริการค่ะ วันนี้ให้ช่วยเรื่องอะไรดีคะ

saku · paxa-tts-flash-v2

一次实时会话,逐帧拆解#

计费按连接累计。总额等于一次 POST /v1/tts 调用的费用,其文本包含该连接所有已计费的内容,0.1 积分的单次请求最低收费只计一次。

  1. 打开连接并发送 start

    连接 WS /v1/tts/live,在升级请求的请求头中携带 API 密钥。第一帧是 start,指定模型和音色,并可为整个连接设置音频格式、时间戳、语速和语言。服务器回复 started,并附上连接 ID。

  2. 边写边发送文本

    每个 text 帧都会追加到缓冲区。遇到换行、句末标点,或缓冲区达到长度阈值时,服务器开始合成;flush 帧会立即合成缓冲区中的内容。每次合成称为一段。泰语没有句末标点,泰语客户端在每轮结束时发送 flush。在边界处仍未闭合的指令会等到闭合后再合成,超过长度阈值仍未闭合的指令按普通文本朗读。每段开头会带上上一段结束时的指令,这些指令计入 max_chars。

  3. 播放每段音频

    每段以 charged 事件开始,报告该段的积分和连接的累计总额。随后是会话格式的二进制音频帧,该段送达后服务器发送 flushed。设置了时间戳时,timing 事件会带上该段的时间跨度。

  4. 来电者插话时发送 cancel

    来电者打断智能体时,发送 cancel。正在播放的那一段停止,缓冲区中的文本被丢弃,服务器回复 cancelled,连接保持打开,等待下一轮。停止的那一段保留其收据报告的费用,被丢弃的文本从未计费。

  5. 结束会话

    发送 end,合成剩余的文本。服务器发送 done,附上该连接的总字符数和总积分,然后关闭连接。失败以 error 事件送达,可恢复的错误不会断开连接。连接保持打开期间,会占用套餐的一个并发语音名额。

适用场景#

文本分段到达时,使用实时 WebSocket。每条回复在发送前已经完整时,把 POST /v1/tts 的 stream 设为 true,音频会在合成过程中传回。

更多场景#

每个页面都用 Paxa TTS Flash v2 的音色演绎一种不同的场景。

常见问题#

该用实时 WebSocket 还是流式请求?

每条回复的文本在发送前已经完整时,使用 stream 设为 true 的 POST /v1/tts。文本分段到达时,例如语言模型的 token 流,或希望一个连接承载整段对话时,使用 WS /v1/tts/live。

来电者插话时会怎样?

发送 cancel 帧。正在播放的那一段停止并保留费用,缓冲区中的文本被丢弃且不计费,下一个 text 帧会在同一个连接上开始新的一段。每帧只发一句,插话的费用就只限于正在播放的那一句。

实时连接如何计费?

按字符累计计费,费率与 POST /v1/tts 相同。0.1 积分的最低收费每个连接只计一次,计在第一段已计费的内容上;每段的 charged 事件都会报告该段积分和累计总额。开启时间戳后,整个连接按更高的费率计费。

能获取词级时间戳吗?

可以。在 POST /v1/tts 或 start 帧中把 timestamps 设为“word”,每个词都会带上以秒为单位的开始和结束时间。“sentence”和“utterance”给出更长的时间跨度。在实时连接上,每段的时间从该段音频的开头算起。时间戳的费率高于普通语音。

能配合 OpenAI SDK 使用吗?

可以,适用于逐条回复。POST /v1/audio/speech 接受 OpenAI 的请求格式,默认流式返回音频。把 SDK 的 base URL 指向 Paxa API,并用 Paxa 的密钥认证。

开启您的第一次实时会话。 新账户自带 100 免费积分。先在控制台里挑选音色,再创建 API 密钥并打开连接。

免费开始