中文、英语和泰语的 AI 陪伴与角色扮演

为 AI 陪伴或角色扮演角色配上中文、英语或泰语的声音。每段对话一个 WebSocket,被打断时发送 cancel 帧。固定的音色 ID 让角色始终保持自己的声音。

可以试试的想法

晚间开场

คืนนี้เป็นยังไงบ้าง เล่าให้ฟังหน่อยสิ เราอยากรู้จริง ๆ นะ

Nom Yenpaxa-tts-flash-v2在语音页面打开
记得昨天的事

เมื่อวานที่เล่าเรื่องงานให้ฟัง วันนี้ดีขึ้นบ้างไหม

Nom Yenpaxa-tts-flash-v2在语音页面打开
情景中的角色

อย่าเพิ่งเดินออกไปสิ ฉันยังพูดไม่จบเลยนะ กลับมานั่งลงก่อน

Nom Yenpaxa-tts-flash-v2在语音页面打开
道晚安

หลับให้สบายนะ พรุ่งนี้ตื่นมาค่อยเล่าให้ฟังต่อก็ได้

Nom Yenpaxa-tts-flash-v2在语音页面打开

每张卡片播放的都是 Nom Yen 按卡片脚本原文生成的真实音频。在语音页面打开后,可以让它说任何内容。

AI 陪伴如何学会说话

AI 陪伴是一场没有任务终点的对话,这改变了语音层要做的事。客服机器人说的是几种写好脚本的结果。AI 陪伴则要把模型写出的任何内容说出来,整晚不停,用的还是用户认定属于某个人的声音。问一个人为什么不再打开它,答案很少与文字有关。往往是某天声音有点不对劲,或者对方想说话时它还在说个不停。这份分量落在两件事上。第一是声音从不漂移,固定的音色库 ID 天然就能做到。第二是打断。人和 AI 陪伴聊天时会插话,一个对着没人在听的段落继续朗读的 AI 陪伴,会立刻失去像人的感觉。泰国是以聊天为先的市场,LINE 的月活跃用户达 5,600 万,占人口的 78.2%。泰语的 AI 陪伴通常是一款学会了说话的聊天产品。

来源:DataReportal (2026)(在新标签页中打开)

  1. 对话开始时打开连接

    一个 WebSocket 承载整个会话。开始时发送一次模型、音色和格式,之后每一轮都是已预热连接上的一个文本帧。

  2. 一次发送一句

    模型写完一句就发送一句。回复的其余部分还在生成时,音频就开始返回。中途被打断的一轮,要付费的也只有那一句。

  3. 对方一开口就取消

    cancel 帧会停止正在朗读的这一段,并丢弃缓冲中剩余的内容。会话保持打开,下一个文本帧开始下一轮。

一个连接,多轮对话,一次打断

ws /v1/tts/live
-> {"type":"start","model":"paxa-tts-flash-v2","voice":"sanaechan"}
<- {"type":"started","connection":"c_8f21","voice":"sanaechan"}
-> {"type":"text","text":"คืนนี้เป็นยังไงบ้าง"}
<- {"type":"charged","seq":1,"chars":19,"credits":0.19}
<- [二进制音频帧]
<- {"type":"flushed","seq":1}
-> {"type":"text","text":"เล่าให้ฟังหน่อยสิ เราอยากรู้จริง ๆ นะ"}
<- {"type":"charged","seq":2,"chars":37,"credits":0.37}
<- [二进制音频帧]
   # 用户开始说话
-> {"type":"cancel"}
<- {"type":"cancelled","seq":2}
-> {"type":"text","text":"ได้ ๆ ฟังอยู่"}

第 2 段保留回执中报告的 0.37 积分,也就是相对连接累计总额的差额。它后面没有排队的内容,同一个连接无需重连就能承接下一轮。

AI 陪伴的语音费用

AI 陪伴的语音费用
对话回复数字符费用
一个晚上202,400$0.02
一位活跃用户,一个月1,200144,000$1.44
1,000 位活跃用户,一个月约 $1,440

按每 1,000 个字符 10 积分计算,每条回复 120 个字符,每天 40 条回复。计费以实际说出的字符为准。

一个角色的一生

第 1 周

选定音色

您试听整个音色库,选中一个。这个选择是配置里的一个 slug,之后再没有人需要考虑它。

第 3 个月

语气定型

您看过真实对话后,把角色从客气调成亲近。这只是改了提示词:它写作时用的人称代词和语气词变了,读它们的音色没变。

第 9 个月

有人对它产生了感情

声音还是对方初次遇见的那个,因为稳定音色的 slug 永远返回同一个声音。这里没有任何东西会退化或过期,也不会因为服务商改了什么而需要重录。

第 18 个月

加入第二个角色

另一个 slug,另一份提示词。第一个角色完全不受影响,只和它聊天的用户察觉不到任何变化。

这条时间线上的每一步都用不到情感标签。随时间改变角色的,是文字和选角。

面向开发者

TypeScript 和 Python 示例打开实时连接,文字一到就发送,并读回回执和音频帧。选项请求展示 voice、model 和 format,一个角色设定一次,就能用上它的整个生命周期。

完整 API 参考
// Runs on Bun as-is; on Node, `import WebSocket from "ws"` accepts
// the same constructor options. Browsers cannot send this header, and
// API keys never ship to browsers anyway.
const socket = new WebSocket("wss://api.paxalabs.com/v1/tts/live", {
  headers: { Authorization: `Bearer ${process.env.PAXA_API_KEY}` },
});
socket.binaryType = "arraybuffer";

socket.onopen = () => {
  socket.send(JSON.stringify({
    type: "start",
    model: "paxa-tts-flash-v2",
    voice: "khanomkrok",
    timestamps: "word",
  }));
  // Send text whenever it becomes available, token by token if you like.
  socket.send(JSON.stringify({ type: "text", text: "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs" }));
  socket.send(JSON.stringify({ type: "flush" }));
  socket.send(JSON.stringify({ type: "end" }));
};

socket.onmessage = (event) => {
  if (typeof event.data === "string") {
    const message = JSON.parse(event.data);
    if (message.type === "done") socket.close();
    return;
  }
  player.feed(new Uint8Array(event.data)); // binary frames are audio
};

试听音色

50 个正式音色中的几个,均通过 API 使用公开的音色 ID 生成。全部音色可在文本转语音页面试听。

  • Mochav1 + v2在语音页面打开
  • Tom Yumv1 + v2闺蜜
  • Tao Huayv1 + v2剧情女主
  • Khanom Krokv1 + v2男声主音色

泰语承载关系的方式不同

泰语在词语本身中标明关系。说话人如何称呼自己和对方,以及句末用哪个语气词,在任何语调介入之前就确定了两个人的相对位置。Paxa TTS Flash v2 从拼写中读出这一切,所以角色有多亲近由提示词决定,再由声音演绎出来。

常见问题

六个月后,角色的声音还会一样吗?

会。音色是音色库里固定的 ID,同一个 ID 每次请求都返回同一个声音。角色的声音不依赖任何需要您自己保存的样本。

用户打断时,它怎么停下来?

在实时连接上发送 cancel 帧。正在朗读的句子停止,排队的剩余内容被丢弃且不计费,同一个连接继续承接下一轮。

AI 陪伴能听起来开心或难过吗?

可以。Paxa TTS Flash v2 的每个音色都接受写在回复里方括号中的指示,例如 [happy] 或 [sad]。一句泰语的亲疏仍取决于书写时用的人称代词和语气词,以及您选用的音色。

能给每个角色扮演角色配一个独立的音色吗?

可以。每个角色可以用音色库中的 50 个音色之一,也可以用文字描述为它设计一个音色;按套餐不同,每个账户可保存 1 到 50 个设计音色。我们不提供声音克隆。

一个活跃的 AI 陪伴要花多少钱?

一位每天收到 40 条语音回复的用户,每月约 $1.44。语音按字符计费。聊得少的月份花得少,完全沉默的月份不产生费用。

从免费积分开始

使用 Google、GitHub 或 Hugging Face 登录,即可用 100 一次性免费积分处理您自己的文本。