ที่ผ่านมา ข้อความเดิมในเสียงเดิมจะได้จังหวะที่ต่างกันเล็กน้อยทุกครั้งที่ส่งคำขอ งานเล่าเรื่องได้ประโยชน์จากความต่างนี้ แต่เมนูโทรศัพท์ ข้อความในแอปที่เล่นซ้ำเป็นพันครั้ง หรือประโยคที่ต้องสร้างใหม่ให้ตรงกับงานตัดต่อ ต้องการเสียงอ่านที่ใกล้เคียงกับที่ทีมอนุมัติไว้
วันนี้ Paxa TTS Flash v2 มีตัวควบคุมใหม่สองอย่าง Temperature กำหนดว่าการอ่านแต่ละคำขอจะต่างกันมากแค่ไหน ส่วนแท็กช่วงหยุดใส่ความเงียบตามความยาวที่กำหนดไว้ตรงจุดที่เขียน ทั้งสองอย่างใช้ได้ทั้งใน Console และผ่าน API
- Temperature 0 ครั้งที่ 1ฝอยทอง0:05
- Temperature 0 ครั้งที่ 2ฝอยทอง0:05
- Temperature 0.5 ครั้งที่ 1ฝอยทอง0:06
- Temperature 0.5 ครั้งที่ 2ฝอยทอง0:05
- Temperature 2 ครั้งที่ 1ฝอยทอง0:06
- Temperature 2 ครั้งที่ 2ฝอยทอง0:05
Temperature#
Temperature มีค่าตั้งแต่ 0 ถึง 2 ปรับได้ทีละ 0.1 ค่าเริ่มต้นคือ 0.5 ค่านี้เปลี่ยนจังหวะ ช่วงหยุด การหายใจ และทำนองของการอ่านในแต่ละคำขอ คำขอที่ไม่ได้ส่งค่านี้จะอ่านที่ 0.5 ซึ่งต่างกันน้อยกว่าคำขอก่อนหน้านี้
- ที่
0การอ่านต่างกันน้อยที่สุด ข้อความเดิมในเสียงเดิมจะได้จังหวะและทำนองเสียงใกล้เคียงกันที่สุดในแต่ละคำขอ และสองครั้งยังอาจต่างกันได้ - ที่
0.5ซึ่งเป็นค่าเริ่มต้น การอ่านจะต่างกันเล็กน้อยในแต่ละคำขอ การไม่ส่งฟิลด์นี้ถือเป็นคำขอเดียวกับการส่ง0.5 - ที่
2การอ่านจะต่างกันมากที่สุด
Temperature คู่กับคำกำกับ#
คำกำกับกำหนดอารมณ์ ส่วน Temperature กำหนดว่าการอ่านแบบนั้นจะต่างกันมากแค่ไหน กะเพรา อ่านประโยคที่มี [sad] และอีกประโยคที่มี [angry] ประโยคละสองครั้งที่ 0 และสองครั้งที่ 2
- [sad] ที่ Temperature 0 ครั้งที่ 1กะเพรา0:05
- [sad] ที่ Temperature 0 ครั้งที่ 2กะเพรา0:05
- [sad] ที่ Temperature 2 ครั้งที่ 1กะเพรา0:05
- [sad] ที่ Temperature 2 ครั้งที่ 2กะเพรา0:05
- [angry] ที่ Temperature 0 ครั้งที่ 1กะเพรา0:03
- [angry] ที่ Temperature 0 ครั้งที่ 2กะเพรา0:03
- [angry] ที่ Temperature 2 ครั้งที่ 1กะเพรา0:04
- [angry] ที่ Temperature 2 ครั้งที่ 2กะเพรา0:03
Temperature ต่ำเหมาะกับประโยคที่มีคำกำกับและเล่นซ้ำหลายครั้ง เช่น ข้อความในแอปหรือบทพูดของตัวละครในเกม ส่วน Temperature สูงช่วยให้ฉากเดียวได้หลายเทคไว้เลือก
ใน Console เครื่องมือ Speech มีแถบเลื่อน Temperature อยู่ใต้ Speed โดยมีป้าย More stable ที่ 0 และ More creative ที่ 2 ตรงกลางแสดง Default เมื่ออยู่ที่ 0.5 และเป็นปุ่ม Reset เมื่ออยู่ที่ค่าอื่น ลิงก์ที่แชร์หรือลิงก์ตรงจะเก็บค่านี้ไว้ด้วย
ใน API temperature เป็นฟิลด์ของ POST /v1/tts ของเอนด์พอยต์เสียงพูดที่เข้ากันได้กับ OpenAI และของเฟรม start ในการเชื่อมต่อแบบไลฟ์ ค่าบริการเท่ากันทุกค่า Temperature
curl -X POST https://api.paxalabs.com/v1/tts \
-H "Authorization: Bearer $PAXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs",
"voice": "khanomkrok",
"model": "paxa-tts-flash-v2",
"temperature": 0
}' \
--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: "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs",
voice: "khanomkrok",
model: "paxa-tts-flash-v2",
temperature: 0,
}),
});
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": "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs", "voice": "khanomkrok", "model": "paxa-tts-flash-v2", "temperature": 0},
)
response.raise_for_status()
with open("speech.mp3", "wb") as f:
f.write(response.content)Paxa TTS Flash v2 อ่านค่า Temperature ส่วน Paxa TTS Flash ใช้ความต่างแบบเดิมของตัวเอง และรับเฉพาะค่าที่ปัดแล้วได้ 0.5 ค่าอื่นจะได้คำตอบ 400 validation ก่อนคิดค่าบริการ คู่มือ Temperature มีรายละเอียดเรื่องเสียงที่ออกแบบเองและการลองใหม่ด้วย Idempotency-Key
แท็กช่วงหยุด#
แท็กช่วงหยุดเพิ่มความเงียบหลังคำที่อยู่ก่อนแท็ก เขียนความยาวแบบมีชื่อ ได้แก่ [short pause] [pause] หรือ [long pause] หรือกำหนดความยาวเอง เช่น [pause 300ms] ทุกเสียงของ Paxa TTS Flash v2 อ่านแท็กเหล่านี้ได้ ส่วน Paxa TTS Flash ไม่อ่านแท็กช่วงหยุด
- ไม่มีช่วงหยุดนมเย็น0:02
- [short pause]นมเย็น0:02
- [pause]นมเย็น0:02
- [long pause]นมเย็น0:02
- [pause 500ms]นมเย็น0:02
ช่วงหยุดแบบมีชื่อจะยาวเท่าใดขึ้นอยู่กับภาษาของคำที่อยู่ก่อนแท็ก
| ภาษา | [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]คือช่วงหยุดเดียวกัน ตัวเลขที่ไม่มีหน่วยนับเป็นมิลลิวินาที- ความยาวที่กำหนดเองจะปัดเป็นช่วงละ 10 ms ที่ใกล้ที่สุด ได้สูงสุด 500 ms ค่าที่ยาวกว่านั้น เช่น
[pause 1s]จะหยุดเพียง 500 ms - ช่วงหยุดจะบวกเพิ่มจากช่องว่างที่การอ่านเว้นไว้หลังคำนั้นอยู่แล้ว แท็กเดียวกันหลังจบประโยคจึงเงียบนานกว่าแท็กที่อยู่กลางประโยค
- ช่วงหยุดยาวเท่าเดิมทุกค่า Speed
แท็กช่วงหยุดคือข้อความ ตัวอักษรของแท็กนับรวมในความยาวและค่าบริการของคำขอเหมือนตัวอักษรอื่น คู่มือช่วงหยุด มีรายละเอียดที่เหลือ รวมถึงการเชื่อมต่อแบบไลฟ์
อัปเดตอื่นในรอบนี้#
[emphasis] อ่านเป็นคำกำกับแล้ว แบบเดียวกับ [whispering] หรือ [excited]
คำถามที่พบบ่อย#
Temperature เปลี่ยนค่าบริการไหม#
ค่าบริการเท่ากันทุกค่า Temperature ตั้งแต่ 0 ถึง 2
สองครั้งที่ 0 ใกล้เคียงกันแค่ไหน#
ใกล้เคียงกันที่สุดในทุกค่า ทั้งจังหวะ ช่วงหยุด และทำนองเสียง แต่ไม่รับประกันว่าจะตรงกัน
ช่วงหยุดยาวเกิน 500 ms ได้ไหม#
แท็กหนึ่งตัวหยุดได้นานสุด 500 ms แท็กที่ยาวกว่านั้นจะหยุดเพียง 500 ms และไม่ถูกปฏิเสธ