跳到主要内容

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

1 IC每400字符
v2.0 活跃🎙️ 语音🆕 2025年3月

欢迎使用泰语文本转语音 API V2,该版本拥有改进的 Kaitom 声音 (น้องไข่ต้ม เวอร์ชั่น 2)。此版本通过基于 POST 的 API 提供了增强的自然度和更好的泰语-英语混合语言支持。

iApp Text to Speech API V2

试用演示

入门

  1. 先决条件

    • 艾艾普科技 (iApp Technology) 的 API 密钥
    • 泰语和/或英语文本输入
    • 最大文本长度:无特定限制
    • 支持的输出格式:WAV
  2. 快速入门

    • 快速处理(小于 1 秒)
    • 改进的自然语音生成
    • 增强的泰语-英语混合文本支持
  3. 主要功能

    • 改进的自然语音合成(V2 引擎)
    • 卓越的混合语言支持(泰语-英语)
    • 语言模式选择(TH 或 TH_MIX_EN)
    • 表情符号支持
    • 数字、日期和货币价值转换
    • 快速处理时间
  4. 安全与合规

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

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

V1 可用

正在寻找具有 Kaitom V1 或 Cee 声音的旧版基于 GET 的 API?请参阅 文本转语音 V1

API 端点

端点方法描述费用
/v3/store/speech/text-to-speech/kaitom
旧版: /thai-tts-kaitom2/tts
POST带有 Kaitom 声音 V2 的泰语 TTS每 400 个字符 1 IC

快速示例

示例请求

curl --location 'https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom' \
--header 'apikey: YOUR_API_KEY' \
--form 'text="สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ"' \
--form 'language="TH"'

示例响应

音频文件输出(WAV 格式)。 您可以预览如下输出音频文件:

纯泰语:

泰语混合英语:

API 参考

文本转语音 V2 端点

  • 端点: POST https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom
  • 必填参数:
    • apikey:您的 API 密钥(请求头)
    • text:要转换为语音的文本(表单数据)
  • 可选参数:
    • language:语言模式(表单数据)
      • TH:仅泰语(纯泰语文本)
      • TH_MIX_EN:泰语混合英语(默认)

代码示例

Python

import requests

url = "https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom"
headers = {"apikey": "YOUR_API_KEY"}
data = {
"text": "สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ",
"language": "TH"
}

response = requests.post(url, headers=headers, data=data)
with open("output.wav", "wb") as f:
f.write(response.content)

JavaScript (Node.js)

const axios = require("axios")
const fs = require("fs")
const FormData = require("form-data")

let formData = new FormData()
formData.append("text", "สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ")
formData.append("language", "TH")

let config = {
method: "post",
url: "https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom",
headers: {
apikey: "YOUR_API_KEY",
...formData.getHeaders(),
},
data: formData,
responseType: "arraybuffer",
}

axios(config)
.then((response) => {
fs.writeFileSync("output.wav", response.data)
})
.catch((error) => console.log(error))

PHP

<?php
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom',
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 => array(
'text' => 'สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ',
'language' => 'TH'
),
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
));

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

file_put_contents("output.wav", $response);
?>

Swift

let parameters = [
[
"key": "language",
"value": "TH",
"type": "text"
],
[
"key": "text",
"value": "สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ",
"type": "text"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body


var request = URLRequest(url: URL(string: "https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom")!,timeoutInterval: Double.infinity)
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("language","TH")
.addFormDataPart("text","สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ")
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom")
.post(body)
.addHeader("apikey", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()

Java

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("language","TH")
.addFormDataPart("text","สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ")
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/speech/text-to-speech/kaitom")
.method("POST", body)
.addHeader("apikey", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();

Dart

var headers = {
'apikey': 'YOUR_API_KEY'
};
var data = FormData.fromMap({
'language': 'TH',
'text': 'สวัสดีครับ น้องไข่ต้ม มาแล้วฮะ'
});

var dio = Dio();
var response = await dio.request(
'https://uat-api.iapp.co.th/v3/store/speech/text-to-speech/kaitom',
options: Options(
method: 'POST',
headers: headers,
),
data: data,
);

if (response.statusCode == 200) {
print(json.encode(response.data));
}
else {
print(response.statusMessage);
}

功能与能力

核心功能

  • 改进的自然语音生成(V2 引擎)
  • 卓越的混合泰语-英语文本支持
  • 语言模式选择
  • 表情符号转换
  • 数字和日期格式化
  • 快速处理

语言模式

  • TH(仅泰语): 纯泰语文本处理,以获得最佳泰语发音
  • TH_MIX_EN(默认): 混合泰语-英语支持,用于双语内容

限制与最佳实践

限制

  • 仅支持泰语和英语
  • 单一声音选项:Kaitom V2(男声)
  • 仅支持 speaker_id 0
  • 输出格式:仅 WAV

最佳实践

  • 使用适当的标点符号来获得自然的停顿
  • 选择合适的语言模式:
    • 纯泰语文本使用 TH
    • 混合泰语-英语内容使用 TH_MIX_EN
  • 保持句子自然和对话式
  • 先用小文本片段进行测试

准确性与性能

总体准确性

  • 增强的自然语音质量(V2 引擎)
  • 改进的泰语和英语发音
  • 更好地处理混合语言内容
  • 正确处理数字和特殊字符

处理速度

  • 每次请求小于 1 秒
  • 文本长度不影响性能一致性

V2 有何新变化

相较于 V1 的改进

  • ✨ 增强的语音自然度
  • 🗣️ 更好的泰语-英语混合语言支持
  • 🎵 改进的发音准确性
  • ⚡ 同样快速的处理速度
  • 📊 语言模式选择,优化输出

从 V1 迁移

如果您正在使用 V1,以下是主要变化:

方面V1 (GET)V2 (POST)
方法GETPOST
文本参数查询参数表单数据
语言模式不可用THTH_MIX_EN
输出格式MP3WAV
端点/kaitom/v1/kaitom

定价

AI API 服务名称端点每字符 IC本地部署
泰语文本转语音 V2 (TTS)iapp_text_to_speech_v2_kaitom1 IC/400 字符联系我们

另请参阅