跳到主要内容

🗣️ 泰语文本转语音 V3(Kaitom 声音)

⚠️ ALPHA 版本

⚠️ Alpha 版本说明: 此 API 目前处于 alpha 测试阶段。服务可能会出现间歇性可用性问题。生产环境请使用 TTS V2(稳定版)。V3 在 alpha 测试期间免费使用至 2026 年 5 月 31 日

1 IC 每 400 字符(Alpha 期间免费至 2026-05-31)
v3.0⚠️ ALPHA🎙️ 语音

欢迎使用 泰语文本转语音 API V3,全新推出的 Kaitom 声音(น้องไข่ต้ม 第 3 版)。新一代版本通过先进的文本规范化、声音克隆支持以及自动泰英语言处理,显著提升了语音的自然度。

iApp 文本转语音 API V3 - Kaitom 声音

V3 新功能

  • 智能文本规范化 - 自动处理数字、日期、货币和特殊字符
  • 自动语言检测 - 无需指定语言模式,V3 自动处理泰英混合
  • 延长字符限制 - 每次请求最多支持 10,000 字符
  • 简化的 JSON API - 使用清晰的 JSON 请求体替代表单数据
  • 高质量音频 - 24 kHz WAV 输出,适用于专业应用

试用演示 — 默认声音 (Kaitom)

试用 AI 演示

登录或创建免费账户来使用此 AI 服务演示并探索我们强大的 API。

注册即可获得 100 积分 (IC) 免费赠送!

优惠截止至 2025 年 12 月 31 日

V3 automatically handles Thai-English mixed text. No language mode selection needed.

0.5x1.0x1.5x

Natural range: 0.8 – 1.2. Default 1.0.

试用演示 — 声音克隆(泰语)

🎁 免费至 2026 年 5 月 31 日 ⚠️ ALPHA

上传 8–12 秒清晰的泰语语音片段,并提供其逐字对应的文本,模型将以该声音说出您的泰语文本。声音克隆目前仅支持泰语

试用 AI 演示

登录或创建免费账户来使用此 AI 服务演示并探索我们强大的 API。

⚠️ Voice Cloning Demo (Thai-only, Alpha): Clone any Thai voice from a short reference clip. FREE to use until 31 May 2026.

📋 How to use this demo

  1. Step 1: Record yourself (max 10 seconds) speaking any short Thai sentence — OR upload an existing Thai audio clip.
  2. Step 2: Type the exact Thai words you spoke into the "Reference Transcript" box. (Word-for-word — not a description.)
  3. Step 3: Type the new Thai text you want the cloned voice to say.
  4. Step 4: Click Generate Cloned Voice.
00 / 10s

💡 Speak a natural Thai sentence such as: "สวัสดีครับ ผมชื่อไข่ต้ม วันนี้อากาศดีมาก". Recording will stop automatically at 10 seconds.

— or upload a file —

⚠️ This must match your recording word-for-word. Do not write a description like "เสียงผู้ชายพูดทักทาย" — write the actual sentence you spoke. The clone quality depends on this matching the audio exactly.

0.5x1.0x1.5x

Natural range: 0.8 – 1.2. Default 1.0.

入门

  1. 先决条件

    • 艾艾普科技 (iApp Technology) 的 API 密钥
    • 泰语和/或英语文本输入
    • 最大文本长度: 10,000 字符
    • 支持的输出格式: WAV (24 kHz)
  2. 快速入门

    • 快速处理,输出高质量
    • 改进的自然语音生成
    • 自动支持泰英混合文本
    • 无需选择语言模式
  3. 核心功能

    • 新一代语音合成引擎
    • 智能文本规范化(数字、日期、货币)
    • 自动泰英语言处理
    • 支持表情符号和特殊字符
    • 延长至 10,000 字符限制
  4. 安全与合规

    • 符合 GDPR 和 PDPA 规范
    • 处理后不保留任何数据
如何获取 API 密钥?

请访问 API 密钥管理 页面查看现有 API 密钥或申请新密钥。

历史版本

API 端点

端点方法Content-Type描述价格 (Alpha)
/v3/store/audio/ttsPOSTapplication/json默认声音 (Kaitom) — 泰英混合文本1 IC 每 400 字符 (Alpha 期间免费至 2026-05-31)
/v3/store/audio/tts/clonePOSTmultipart/form-data声音克隆 — 用自定义声音合成泰语文本1 IC 每 400 字符 (Alpha 期间免费至 2026-05-31)
/v3/store/audio/tts/detectPOSTmultipart/form-dataAI 水印检测 — 验证音频片段是否由 V3 生成免费

快速示例

默认声音 — 示例请求

curl -X POST 'https://api.iapp.co.th/v3/store/audio/tts' \
--header 'apikey: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"text": "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3", "speed": 1.0}' \
--output 'output.pcm'

声音克隆 — 示例请求

curl -X POST 'https://api.iapp.co.th/v3/store/audio/tts/clone' \
--header 'apikey: YOUR_API_KEY' \
--form 'text=สวัสดีครับ วันนี้ทดสอบการโคลนเสียง' \
--form 'speed=1.0' \
--form 'ref_text=ฮัลโหล สวัสดีครับ ผมชื่อไข่ต้ม' \
--form 'ref_audio=@reference.wav' \
--output 'output.pcm'

AI 水印检测 — 示例请求

curl -X POST 'https://api.iapp.co.th/v3/store/audio/tts/detect' \
--header 'apikey: YOUR_API_KEY' \
--form 'audio=@suspect.wav'

返回 JSON:

{ "is_ai_generated": true, "confidence": 1.0 }

示例响应

响应主体为 原始 16-bit 小端 PCM, 单声道, 24 kHz, 以 application/octet-stream 流式传输。请用 WAV 头部封装以播放或保存为 .wav:

ffmpeg -f s16le -ar 24000 -ac 1 -i output.pcm output.wav

API 参考

1. 默认声音端点 (Kaitom)

  • 端点: POST https://api.iapp.co.th/v3/store/audio/tts
  • Content-Type: application/json
  • Headers: apikey(必填)

请求体

字段类型必填默认值说明
textstring每次请求最多约 1,000 个泰文字符。更长的文本将由服务器自动分块
speedfloat1.0自然区间 0.81.2。值越小越慢
{
"text": "สวัสดีครับ ยินดีต้อนรับสู่ iApp",
"speed": 1.0
}

2. 声音克隆端点 (仅限泰语)

  • 端点: POST https://api.iapp.co.th/v3/store/audio/tts/clone
  • Content-Type: multipart/form-data
  • Headers: apikey(必填)

表单字段

字段类型必填默认值说明
textstring要合成的泰语文本
speedfloat1.0语速
ref_textstringref_audio 的逐字泰语文字稿(不是描述)
ref_audiofileWAV 或 MP3, 8–12 秒 干净的单声道泰语语音

约束:

  1. 参考片段必须 ≤ 15 秒。超过部分将被静默截断;若 ref_text 描述了被截断的部分,输出会加速并失真。
  2. ref_text 必须与 ref_audio 中所说的内容逐字一致。
  3. 声音克隆请求在服务器端串行处理。在并发负载下会出现排队延迟。
  4. 声音克隆目前仅支持泰语

响应 (TTS + 克隆端点)

  • Content-Type: application/octet-stream
  • 主体: 原始 16-bit 小端 PCM, 单声道, 24 kHz, 以字节流方式传输
  • 计算时长: duration_seconds = byte_length / 48000
  • 要保存为可播放文件, 请用 WAV 头部封装, 或使用 ffmpeg -f s16le -ar 24000 -ac 1 -i out.pcm out.wav

3. AI 水印检测端点

验证给定的音频片段是否由泰语 TTS V3 生成。默认声音和声音克隆端点产生的每一份输出都嵌入了不可听的 AudioSeal 水印;此端点将其读取出来。

  • 端点: POST https://api.iapp.co.th/v3/store/audio/tts/detect
  • Content-Type: multipart/form-data
  • Headers: apikey(必填)

表单字段

字段类型必填说明
audiofileWAV(任意采样率, 推荐单声道)或原始 PCM (.pcm, 视为 24 kHz 单声道 int16)

响应

  • Content-Type: application/json
  • 主体:
{
"is_ai_generated": true,
"confidence": 1.0
}
字段类型说明
is_ai_generatedbooleanconfidence > 0.5 时为 true
confidencefloat音频含有 V3 水印的概率 (0..1)

水印特性

  • 不可听 — 嵌入残差约 −30 dBFS, 听众无法感知
  • 稳健 抵抗 MP3 / OPUS 重编码、格式转换 (PCM ↔ WAV ↔ MP3) 以及重采样
  • 不稳健 抵抗神经编解码器重编码或有意的对抗性移除 — 应将其视为 Responsible AI 信号, 而非防篡改的 DRM
  • 实测置信度: TTS V3 输出返回约 1.0; 干净的人声参考音频返回接近 0(在我们的测试中误报率 < 0.001)
  • 目的: 让外部内容真实性工具和滥用监测系统能够识别 V3 生成的合成语音, 缓解声音克隆功能的滥用

curl 示例

curl -X POST 'https://api.iapp.co.th/v3/store/audio/tts/detect' \
--header 'apikey: YOUR_API_KEY' \
--form 'audio=@suspect.wav'

Python 示例

import requests

with open("suspect.wav", "rb") as f:
files = {"audio": ("suspect.wav", f, "audio/wav")}
r = requests.post(
"https://api.iapp.co.th/v3/store/audio/tts/detect",
headers={"apikey": "YOUR_API_KEY"},
files=files,
timeout=30,
)
r.raise_for_status()
print(r.json()) # {"is_ai_generated": True, "confidence": 1.0}

JavaScript (Fetch) 示例

const form = new FormData();
form.append("audio", file); // File 或 Blob

const resp = await fetch(
"https://api.iapp.co.th/v3/store/audio/tts/detect",
{
method: "POST",
headers: { "apikey": "YOUR_API_KEY" },
body: form,
}
);
const result = await resp.json();
// { is_ai_generated: true, confidence: 1.0 }

代码示例

Python

import requests
import json

url = "https://api.iapp.co.th/v3/store/audio/tts"
headers = {
"apikey": "YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"text": "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3 มาพร้อมเสียงที่เป็นธรรมชาติมากขึ้น"
}

response = requests.post(url, headers=headers, json=data)
with open("output.wav", "wb") as f:
f.write(response.content)
print("音频已保存到 output.wav")

JavaScript (Node.js)

const axios = require("axios")
const fs = require("fs")

const url = "https://api.iapp.co.th/v3/store/audio/tts"
const config = {
headers: {
"apikey": "YOUR_API_KEY",
"Content-Type": "application/json"
},
responseType: "arraybuffer"
}
const data = {
text: "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3 มาพร้อมเสียงที่เป็นธรรมชาติมากขึ้น"
}

axios.post(url, data, config)
.then((response) => {
fs.writeFileSync("output.wav", response.data)
console.log("音频已保存到 output.wav")
})
.catch((error) => console.error(error))

JavaScript (Fetch API)

端点输出 原始 PCM。播放前请封装 WAV 头部:

async function playThaiTTS(text) {
const resp = await fetch("https://api.iapp.co.th/v3/store/audio/tts", {
method: "POST",
headers: {
"apikey": "YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ text, speed: 1.0 })
});
if (!resp.ok) throw new Error(`TTS failed: ${resp.status}`);
const pcm = new Uint8Array(await resp.arrayBuffer());
const wav = pcmToWav(pcm, 24000, 1);
const url = URL.createObjectURL(new Blob([wav], { type: "audio/wav" }));
new Audio(url).play();
}

function pcmToWav(pcm, sampleRate, channels) {
const byteRate = sampleRate * channels * 2;
const buf = new ArrayBuffer(44 + pcm.byteLength);
const v = new DataView(buf);
const write = (o, s) => [...s].forEach((c, i) => v.setUint8(o + i, c.charCodeAt(0)));
write(0, "RIFF"); v.setUint32(4, 36 + pcm.byteLength, true);
write(8, "WAVE"); write(12, "fmt ");
v.setUint32(16, 16, true); v.setUint16(20, 1, true);
v.setUint16(22, channels, true); v.setUint32(24, sampleRate, true);
v.setUint32(28, byteRate, true); v.setUint16(32, channels * 2, true);
v.setUint16(34, 16, true); write(36, "data");
v.setUint32(40, pcm.byteLength, true);
new Uint8Array(buf, 44).set(pcm);
return buf;
}

Python — 声音克隆

import requests, wave

with open("reference.wav", "rb") as f:
files = {"ref_audio": ("reference.wav", f, "audio/wav")}
data = {
"text": "สวัสดีครับ วันนี้ทดสอบการโคลนเสียง",
"speed": "1.0",
"ref_text": "ฮัลโหล สวัสดีครับ ผมชื่อไข่ต้ม",
}
r = requests.post(
"https://api.iapp.co.th/v3/store/audio/tts/clone",
headers={"apikey": "YOUR_API_KEY"},
data=data, files=files, stream=True, timeout=60,
)
r.raise_for_status()

with wave.open("cloned.wav", "wb") as wf:
wf.setnchannels(1); wf.setsampwidth(2); wf.setframerate(24000)
for chunk in r.iter_content(chunk_size=None):
if chunk:
wf.writeframes(chunk)
print("已保存到 cloned.wav")

PHP

<?php
$curl = curl_init();

$data = json_encode([
"text" => "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3 มาพร้อมเสียงที่เป็นธรรมชาติมากขึ้น"
]);

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/audio/tts',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY',
'Content-Type: application/json'
),
));

$response = curl_exec($curl);
curl_close($curl);

file_put_contents("output.wav", $response);
echo "音频已保存到 output.wav";
?>

Swift

import Foundation

let url = URL(string: "https://api.iapp.co.th/v3/store/audio/tts")!
var request = URLRequest(url: url, timeoutInterval: Double.infinity)
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"

let body: [String: Any] = [
"text": "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3"
]
request.httpBody = try? JSONSerialization.data(withJSONObject: body)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
// 保存或播放音频数据
try? data.write(to: URL(fileURLWithPath: "output.wav"))
print("音频已保存到 output.wav")
}
task.resume()

Kotlin

val client = OkHttpClient()
val mediaType = "application/json".toMediaType()
val body = """{"text": "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3"}""".toRequestBody(mediaType)

val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/audio/tts")
.post(body)
.addHeader("apikey", "YOUR_API_KEY")
.addHeader("Content-Type", "application/json")
.build()

val response = client.newCall(request).execute()
// 处理音频响应

Java

OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType,
"{\"text\": \"สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3\"}");

Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/audio/tts")
.method("POST", body)
.addHeader("apikey", "YOUR_API_KEY")
.addHeader("Content-Type", "application/json")
.build();

Response response = client.newCall(request).execute();
// 处理音频响应

Dart

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'dart:io';

void main() async {
var url = Uri.parse('https://api.iapp.co.th/v3/store/audio/tts');
var headers = {
'apikey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
};
var body = jsonEncode({
'text': 'สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3'
});

var response = await http.post(url, headers: headers, body: body);

if (response.statusCode == 200) {
File('output.wav').writeAsBytesSync(response.bodyBytes);
print('音频已保存到 output.wav');
} else {
print('Error: ${response.statusCode}');
}
}

Go

package main

import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
)

func main() {
url := "https://api.iapp.co.th/v3/store/audio/tts"

data := map[string]string{
"text": "สวัสดีครับ น้องไข่ต้ม เวอร์ชั่น 3",
}
jsonData, _ := json.Marshal(data)

req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("apikey", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()

audioData, _ := io.ReadAll(resp.Body)
os.WriteFile("output.wav", audioData, 0644)
}

功能与特性

智能文本规范化

V3 自动规范化各种文本元素:

类型输入输出(朗读)
数字1,234.56"หนึ่งพันสองร้อยสามสิบสี่จุดห้าหก"
日期27/01/2569"วันที่ยี่สิบเจ็ดมกราคมสองพันห้าร้อยหกสิบเก้า"
货币฿1,500"หนึ่งพันห้าร้อยบาท"
时间14:30"สิบสี่นาฬิกาสามสิบนาที"
百分比25%"ยี่สิบห้าเปอร์เซ็นต์"

自动语言处理

V3 自动检测并处理泰英混合文本, 无需选择语言模式:

Hello and Welcome! ยินดีต้อนรับสู่ iApp Technology

错误代码

状态码描述解决方法
400Bad Request - JSON 格式错误检查 JSON 语法
402余额不足充值
413Payload 过大文本超过 10,000 字符
429超出请求频率限制检查 API 密钥限额
503服务不可用临时问题, 稍后重试

迁移指南

从 V2 迁移到 V3

方面V2V3
Content-Typemultipart/form-dataapplication/json
请求体表单数据JSON 主体
语言模式必填 (TH / TH_MIX_EN)自动检测
最大字符数无限制10,000
音质标准 WAV24 kHz WAV
端点/v3/store/speech/text-to-speech/kaitom/v3/store/audio/tts

V2 请求(旧):

curl -X POST 'https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom' \
--header 'apikey: YOUR_API_KEY' \
--form 'text="สวัสดีครับ"' \
--form 'language="TH"'

V3 请求(新):

curl -X POST 'https://api.iapp.co.th/v3/store/audio/tts' \
--header 'apikey: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"text": "สวัสดีครับ"}'

从 V1 迁移到 V3

方面V1V3
方法GETPOST
请求查询参数JSON 主体
声音选项Kaitom V1, CeeKaitom V3
输出格式MP3/WAVWAV (24 kHz)
端点/v3/store/speech/text-to-speech/kaitom/v1/v3/store/audio/tts

限制

  • 支持泰语和英语(默认声音);声音克隆仅支持泰语
  • 默认声音: Kaitom V3(男声)。声音克隆可使用任何参考声音
  • 单次请求建议长度: 约 1,000 个泰文字符(更长的文本将被自动分块, 增加延迟)
  • 输出: 原始 16-bit PCM 单声道 @ 24 kHz(客户端封装为 WAV)
  • 声音克隆参考音频: ≤ 15 秒, 推荐 8–12 秒清晰单声道语音
  • 速率限制: 每个 API 密钥 100 请求/秒

最佳实践

  1. 使用恰当的标点符号 以获得自然的停顿与语调
  2. 保持句子的口语化 以获得最自然的输出
  3. 先用小段文本测试 再处理长文本
  4. 预先音译品牌名或缩写 至泰文以确保特定发音(例如发送 ไอแอป 而不是 iApp
  5. 监控字符数量 以保持在 10,000 字符限制内

Responsible AI

默认声音声音克隆 端点产生的每一份音频, 都嵌入了不可听的 AudioSeal(Meta 出品, MIT 许可)神经网络水印。借助下游内容真实性工具 — 以及上面的 /v3/store/audio/tts/detect 端点 — 可以识别由 V3 生成的合成语音, 缓解声音克隆的滥用。

水印特点:

  • 不可听(残差约 −30 dBFS)
  • 稳健 抵抗 MP3 / OPUS 重编码、格式转换和重采样
  • 不稳健 抵抗神经编解码器重编码或有意的对抗性移除 — 应作为 Responsible AI 信号, 而非防篡改的 DRM

如果您运营发布用户生成音频的平台, 我们建议定期通过 /v3/store/audio/tts/detect 检查上传的片段, 作为合成媒体审核的众多信号之一。

价格

AI API 服务名称端点价格 (Alpha)私有部署
泰语 TTS V3 (Kaitom 声音)/v3/store/audio/tts1 IC 每 400 字符 (Alpha 期间免费至 2026-05-31)联系我们
泰语声音克隆 V3/v3/store/audio/tts/clone1 IC 每 400 字符 (Alpha 期间免费至 2026-05-31)联系我们
AI 水印检测/v3/store/audio/tts/detect免费联系我们

另请参阅