Paxa Labs

ใช้ Paxa กับ LiveKit Agents

ให้ voice agent บน LiveKit มีเสียงพูดภาษาไทย อังกฤษ และจีนกลาง และถอดเสียงด้วย Paxa ผ่าน OpenAI plugin ของ LiveKit

ดูเป็น Markdown

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

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

Terminal
pip install "livekit-agents[openai]"
export PAXA_API_KEY=pxa_your_key_here

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

Python
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",
)
  • ตั้ง 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

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

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

ในไฟล์เดียวกัน สร้างส่วนถอดเสียงแล้วส่งทั้งสองส่วนให้ session

Python
from livekit.agents import AgentSession, inference

paxa_stt = openai.STT(
    base_url="https://api.paxalabs.com/v1",
    api_key=os.environ["PAXA_API_KEY"],
    model="paxa-stt-lite-v1-preview",
    language="th",
)

session = AgentSession(
    stt=paxa_stt,
    # Any LLM LiveKit Agents supports.
    llm=inference.LLM("openai/gpt-4.1-mini"),
    tts=paxa_tts,
    vad=inference.VAD(),
)
  • ปลั๊กอินถอดเสียงทีละเทิร์นที่พูดจบแล้วเป็นไฟล์เดียว session จึงต้องมี VAD ไว้หาจุดสิ้นสุดของแต่ละเทิร์น
  • language ใช้ส่งคำใบ้ภาษา เช่น th หากตั้ง detect_language=True ปลั๊กอินจะไม่ส่งคำใบ้ และให้โมเดลตรวจภาษาเอง
  • Paxa STT Lite เป็นพรีวิวงานวิจัย

ชื่ออาร์กิวเมนต์อาจต่างกันในแต่ละเวอร์ชันของ LiveKit Agents