เพิ่มช่วงหยุด
แท็กช่วงหยุดเพิ่มความเงียบตรงตำแหน่งที่เขียนไว้ในคำขอ Paxa TTS Flash v2 เลือกได้สามความยาวตามภาษา หรือกำหนดความยาวเองได้สูงสุด 500 ms พร้อมรายละเอียดตำแหน่งของช่วงหยุด ความเร็ว การคิดค่าบริการ และการเชื่อมต่อแบบไลฟ์
บน Paxa TTS Flash v2 แท็กช่วงหยุดใน text ของ POST /v1/tts จะเพิ่มความเงียบหลังคำที่อยู่ก่อนแท็ก เขียนความยาวแบบมีชื่อ ได้แก่ [short pause] [pause] หรือ [long pause] หรือกำหนดความยาวเอง เช่น [pause 300ms] ทุกเสียงอ่านแท็กเหล่านี้ได้ และ API ตรวจทุกแท็กก่อนคิดค่าบริการ
curl -X POST https://api.paxalabs.com/v1/tts \
-H "Authorization: Bearer $PAXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "ยืนยันคำสั่งซื้อเรียบร้อยแล้วครับ [pause 300ms] พัสดุจะถึงภายในวันศุกร์ [long pause] มีคำถามโทรหาเราได้ตลอดครับ",
"voice": "khanomkrok",
"model": "paxa-tts-flash-v2"
}' \
--output speech.mp3import { writeFile } from "node:fs/promises";
const response = await fetch("https://api.paxalabs.com/v1/tts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PAXA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "ยืนยันคำสั่งซื้อเรียบร้อยแล้วครับ [pause 300ms] พัสดุจะถึงภายในวันศุกร์ [long pause] มีคำถามโทรหาเราได้ตลอดครับ",
voice: "khanomkrok",
model: "paxa-tts-flash-v2",
}),
});
if (!response.ok) throw new Error(`TTS failed: ${response.status}`);
await writeFile("speech.mp3", Buffer.from(await response.arrayBuffer()));import os
import requests
response = requests.post(
"https://api.paxalabs.com/v1/tts",
headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"},
json={"text": "ยืนยันคำสั่งซื้อเรียบร้อยแล้วครับ [pause 300ms] พัสดุจะถึงภายในวันศุกร์ [long pause] มีคำถามโทรหาเราได้ตลอดครับ", "voice": "khanomkrok", "model": "paxa-tts-flash-v2"},
)
response.raise_for_status()
with open("speech.mp3", "wb") as f:
f.write(response.content)ความยาวแบบมีชื่อ#
ช่วงหยุดแบบมีชื่อจะยาวเท่าใดขึ้นอยู่กับภาษาของคำที่อยู่ก่อนแท็ก
| ภาษา | [short pause] | [pause] | [long pause] |
|---|---|---|---|
| ไทย | 130 ms | 180 ms | 460 ms |
| จีน | 100 ms | 140 ms | 360 ms |
| อังกฤษและภาษาอื่นทั้งหมด | 120 ms | 170 ms | 460 ms |
กำหนดความยาวเอง#
[pause 300ms][pause 0.3s]และ[pause:300]คือช่วงหยุดเดียวกัน ตัวเลขที่ไม่มีหน่วยนับเป็นมิลลิวินาที ส่วนs,sec,second,secondsนับเป็นวินาที- ใช้เลขไทยและตัวเลขเต็มความกว้างได้ด้วย
[pause ๓๐๐ms]คือ[pause 300ms] - ความยาวปัดเป็นช่วงละ 10 ms ที่ใกล้ที่สุด
- ช่วงหยุดที่กำหนดเองยาวได้สูงสุด 500 ms หากยาวกว่านั้น เช่น
[pause 1s]หรือ[pause:600]จะหยุดเพียง 500 ms
ตำแหน่งของช่วงหยุด#
ช่วงหยุดจะบวกความยาวของตัวเองเข้ากับช่องว่างที่การอ่านเว้นไว้อยู่แล้วหลังคำที่อยู่ก่อนแท็ก ท้ายประโยคมีช่องว่างยาวกว่าระหว่างคำ [pause] หลังจบประโยคจึงเงียบนานกว่า [pause] กลางประโยค
ช่วงหยุดกับความเร็ว#
แท็กช่วงหยุดยาวเท่าเดิมทุกค่า speed ความเร็วเปลี่ยนเฉพาะช่องว่างที่การอ่านเว้นเอง แล้วแท็กจะบวกความยาวเท่าเดิมเข้าไป
การคิดค่าบริการ#
แท็กช่วงหยุดนับเป็นข้อความ ทุกตัวอักษรของแท็ก รวมวงเล็บ นับรวมในความยาวและค่าบริการของคำขอ ตัวอย่างด้านบนยาว 111 ตัวอักษร คิดเป็น 1.11 เครดิต ข้อความที่มีแต่แท็กช่วงหยุดจะได้คำตอบ 422 unspeakable_text โดยยังไม่คิดค่าบริการ
ช่วงหยุดบนการเชื่อมต่อแบบไลฟ์#
บนการเชื่อมต่อแบบไลฟ์ แท็กช่วงหยุดอ่านเหมือนในคำขอปกติ แท็กที่ถูกแบ่งข้ามเฟรมจะอ่านรวมเป็นแท็กเดียว
Paxa TTS Flash#
Paxa TTS Flash (paxa-tts-flash-v1) ไม่อ่านแท็กช่วงหยุด เสียงทดลองของรุ่นนี้จะตอบ tag_invalid เพราะ [pause] ไม่อยู่ในรายการแท็กอารมณ์ ส่วนเสียง v1 อื่นทั้งหมดจะอ่านแท็กออกมาเป็นข้อความ
หมายเหตุ
เอนด์พอยต์ที่เข้ากันได้กับ OpenAI อ่านแท็กช่วงหยุดใน input ตามกฎเดียวกัน