Paxa Labs

LiveKit Text to Speech ภาษาไทยสำหรับ Voice Agent

Voice Agent บน LiveKit ที่คุยกับผู้ใช้หลายภาษา ต้องมีเสียงที่อ่านประโยคซึ่งพูดปนกันได้ ชี้ OpenAI plugin ของ LiveKit มาที่ Paxa ด้วย base URL และคีย์ API แล้ว agent จะพูดภาษาไทย อังกฤษ และจีนกลางด้วยเสียงใดก็ได้ของ Paxa TTS Flash v2 ส่วนปลั๊กอินตัวเดียวกันก็เพิ่มการถอดเสียงของ Paxa ได้ด้วย

ปลั๊กอินเดียว ชี้มาที่ Paxa#

ออบเจกต์เสียงพูดและถอดเสียงสร้างจาก OpenAI plugin ของ LiveKit โดยตั้ง base URL คีย์ โมเดล และเสียงของ Paxa คำอธิบายอาร์กิวเมนต์แต่ละตัวนำมาจากคู่มือตั้งค่า

import os

from livekit.plugins import openai

paxa_tts = openai.TTS(
    base_url="https://api.paxalabs.com/v1",
    api_key=os.environ["PAXA_API_KEY"],
    model="paxa-tts-flash-v2",
    voice="khanomkrok",
    response_format="pcm",
)

ให้ agent มีเสียงพูด

  • ตั้ง model เป็น paxa-tts-flash-v2 หรือใช้ชื่อโมเดลของ OpenAI ต่อได้ ซึ่งทำงานบนโมเดลนี้ ปลั๊กอินจะขอผลลัพธ์แบบ event stream กับชื่อโมเดลส่วนใหญ่ และ Paxa ตอบกลับเป็นเสียงดิบ ซึ่งปลั๊กอินเล่นได้ทันทีที่ได้รับ
  • ตั้ง voice เป็นรหัสเสียงใดก็ได้จาก GET /v1/voices ที่มีโมเดลเป็น paxa-tts-flash-v2 ชื่อของเสียง OpenAI ก็ใช้ได้ (ชื่อของเสียงที่ใช้ได้)
  • ใช้ response_format="pcm" ตามตัวอย่าง ผลลัพธ์เป็นเสียงโมโน 16 บิตที่ 24 kHz ซึ่งเป็นอัตราที่ปลั๊กอินเล่นได้ทันทีโดยไม่ต้องถอดรหัส
  • ตั้ง speed ระหว่าง 0.5 ถึง 1.5 ค่าที่อยู่นอกช่วงนี้ได้คำตอบ 400

เพิ่มการถอดเสียง

  • ปลั๊กอินถอดเสียงทีละเทิร์นที่พูดจบแล้วเป็นไฟล์เดียว session จึงต้องมี VAD ไว้หาจุดสิ้นสุดของแต่ละเทิร์น
  • language ใช้ส่งคำใบ้ภาษา เช่น th หากตั้ง detect_language=True ปลั๊กอินจะไม่ส่งคำใบ้ และให้โมเดลตรวจภาษาเอง
  • Paxa STT Lite เป็นพรีวิวงานวิจัย

จากคีย์ถึง agent ที่พูดได้#

agent ยังใช้ LLM และโค้ด session เดิม Paxa รับหน้าที่ฝั่งเสียงพูด และฝั่งถอดเสียงเมื่อคุณเพิ่มเข้าไป

  1. ติดตั้งปลั๊กอิน

    ติดตั้ง livekit-agents พร้อม extra ชื่อ openai แล้วตั้ง PAXA_API_KEY เป็นคีย์จากแดชบอร์ด

  2. ชี้ TTS มาที่ Paxa

    สร้าง openai.TTS โดยตั้ง base_url เป็น https://api.paxalabs.com/v1 ตั้ง model เป็น paxa-tts-flash-v2 ใส่รหัสเสียงของ Paxa และตั้ง response_format เป็น pcm ซึ่งปลั๊กอินเล่นได้ทันทีโดยไม่ต้องถอดรหัส

  3. เพิ่มการถอดเสียง

    สร้าง openai.STT ด้วย base URL เดียวกันและโมเดล paxa-stt-lite-v1-preview แล้วส่งทั้งสองตัวให้ AgentSession พร้อม VAD ที่ใช้หาจุดจบของแต่ละเทิร์น

Paxa TTS Flash v2 ราคา $10 ต่อ 1 ล้านตัวอักษร Paxa STT Lite ราคา $0.50 ต่อชั่วโมงเสียง คิดตามความยาวจริงละเอียดถึงมิลลิวินาที

คำถามที่พบบ่อย#

LiveKit Agents คืออะไร

LiveKit อธิบายว่า Agents เป็นเฟรมเวิร์กแบบเรียลไทม์สำหรับ Agent ด้านเสียง วิดีโอ และ Physical AI เสียงใน Voice Agent จะผ่านขั้นตอนถอดเสียง LLM และแปลงข้อความเป็นเสียงตามลำดับ Paxa ให้บริการได้ทั้งขั้นตอนถอดเสียงและขั้นตอนแปลงข้อความเป็นเสียง

agent ใช้เสียงไหนได้บ้าง

agent ใช้ได้ทุกเสียงของ Paxa TTS Flash v2 ทั้ง 50 เสียง และทุกเสียงพูดได้ทั้งภาษาไทย อังกฤษ และจีนกลาง GET /v1/voices แสดงรหัสของทุกเสียง และฟังตัวอย่างได้ที่คลังเสียง ชื่อของเสียง OpenAI ก็ใช้ได้ และจะจับคู่กับเสียงของ Paxa

คำตอบภาษาไทยที่ยาวเริ่มพูดเมื่อไร

agent พูดคำตอบทีละประโยค ข้อความภาษาไทยที่ไม่มีเครื่องหมายวรรคตอนจะถูกนับเป็นประโยคเดียว คำตอบภาษาไทยที่ยาวจึงเริ่มพูดได้ก็ต่อเมื่อ LLM เขียนจบแล้ว

การถอดเสียงใน LiveKit ทำงานอย่างไร

openai.STT ส่งแต่ละเทิร์นที่พูดจบแล้วไปให้ Paxa เป็นไฟล์เดียว และ VAD ของ session เป็นตัวหาจุดจบของแต่ละเทิร์น ส่ง language เป็นคำใบ้ภาษา เช่น th หรือตั้ง detect_language เป็น True เพื่อให้โมเดลตรวจภาษาเอง Paxa STT Lite เป็นพรีวิวงานวิจัย

เริ่มต้นด้วยเครดิตฟรี

เข้าสู่ระบบด้วย Google, GitHub หรือ Hugging Face แล้วใช้เครดิตฟรี 100 เครดิตกับข้อความของคุณเอง