xAI เปิดตัว Grok Voice พร้อม Grok 4.3 จุดสำคัญสำหรับนักพัฒนาคือสามารถทดลองผ่าน xAI Console ได้ฟรี: ไม่มีค่าใช้จ่ายต่อนาที ไม่มีค่าใช้จ่ายต่อโทเค็นสำหรับ TTS, STT, เอเจนต์เสียง และ Custom Voices ค่าใช้จ่ายที่เกี่ยวข้องมีเฉพาะการใช้โทเค็นของ Grok 4.3 เมื่อเอเจนต์ต้องประมวลผล ซึ่งคอนโซลมีเครดิตฟรีสำหรับทดสอบอยู่แล้ว
คู่มือนี้สรุปขั้นตอนใช้งาน Grok Voice แบบลงมือทำ: ขอ API key, เลือกหรือโคลนเสียง, เปิดเซสชัน WebSocket, เพิ่ม function calling, เรียก TTS ผ่าน REST และทดสอบ workflow ทั้งหมดด้วย Apidog ก่อนนำไปใส่ในแอปจริง
หากต้องการคู่มือ Grok 4.3 API แบบกว้างขึ้น ดู คู่มือ API ของ Grok 4.3 หรือถ้าต้องการเทียบกับสแต็กของ OpenAI ดู Grok Voice vs GPT-Realtime
TL;DR
- Grok Voice ใช้งานฟรีผ่าน xAI Console (
console.x.ai) สำหรับ TTS, STT, Voice Agent และ Custom Voices - โมเดลหลักคือ
grok-voice-think-fast-1.0 - xAI ระบุว่า time-to-first-audio อยู่ภายใน 1 วินาที และเร็วกว่าคู่แข่งใกล้เคียงประมาณ 5 เท่า
- มีเสียง preset มากกว่า 80 เสียงใน 28 ภาษา
- มี voice agent persona ในตัว 5 แบบ: Eve, Ara, Rex, Sal, Leo
- โคลนเสียงจากตัวอย่างเสียงประมาณ 1 นาที และพร้อมใช้ภายใน ไม่ถึง 2 นาที
- WebSocket endpoint:
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
- REST endpoint ใช้สำหรับ TTS, STT และ Custom Voices
- ใช้ Apidog เพื่อจัดการ WebSocket session, replay payload และ debug event ได้ง่ายขึ้น
Grok Voice ให้อะไรฟรีบ้าง
เริ่มจาก xAI Console:
- เข้า
console.x.ai - ลงชื่อเข้าใช้
- สร้าง API key
- ใช้ key นั้นเรียก Voice API
สิ่งที่ใช้งานได้โดยไม่มีค่าใช้จ่ายของฟีเจอร์เสียงโดยตรง:
- Voice Agent: สนทนาแบบ speech-to-speech ผ่าน WebSocket พร้อม tool calling, server-side VAD และ turn detection
- Text-to-Speech: สร้างเสียงจากข้อความ รองรับเสียง preset มากกว่า 80 เสียงใน 28 ภาษา และ output เป็น MP3 หรือ μ-law
- Speech-to-Text: ถอดเสียงแบบ streaming และ batch รองรับ 25 ภาษาอินพุต พร้อม word-level timestamp และ speaker diarization
-
Custom Voices: อัปโหลดตัวอย่างเสียงเพื่อสร้าง
voice_idแล้วใช้กับ TTS หรือ voice agent
ข้อควรจำ: ค่าใช้จ่ายที่นับจริงคือโทเค็นของ Grok 4.3 เมื่อเอเจนต์ต้อง reasoning อยู่เบื้องหลัง แต่เครดิตฟรีในคอนโซลเพียงพอสำหรับการ prototype และทดสอบ end-to-end
ขั้นตอนที่ 1: สร้าง API key
ไปที่ console.x.ai แล้วสร้าง key จากหน้า API Keys โดยเปิด scope ที่ต้องใช้ เช่น voice และ chat
จากนั้น export key ในเครื่อง local:
export XAI_API_KEY="xai-..."
ถ้าสร้างแอปฝั่ง browser อย่าใส่ API key หลักไว้ใน client ให้สร้าง ephemeral token แทน ผ่าน console หรือ endpoint:
/v1/realtime/sessions
ephemeral token มีอายุสั้นและมี scope จำกัด เหมาะสำหรับส่งให้ browser ใช้เปิด WebSocket โดยไม่เปิดเผย key หลัก
ขั้นตอนที่ 2: เลือกเสียง
คุณมี 2 ทางเลือกหลัก
ใช้เสียง preset
Voice Agent มี persona ในตัว 5 แบบ:
- Eve: ผู้หญิง พลังงานดี เหมาะกับ support flow ที่ต้องการความสดใส
- Ara: ผู้หญิง โทนอุ่น เป็นค่าเริ่มต้นที่เหมาะกับ assistant ทั่วไป
- Rex: ผู้ชาย มั่นใจ เหมาะกับ sales script
- Sal: โทนกลาง นุ่ม เหมาะกับ narration หรือ long-form reading
- Leo: ผู้ชาย โทนทางการ เหมาะกับงาน compliance หรือ workflow ที่ต้องเป็นทางการ
สำหรับ TTS API มี preset voice มากกว่า 80 เสียงใน 28 ภาษา เรียกใช้ผ่าน parameter voice
โคลนเสียงเอง
เตรียมไฟล์ WAV ที่เป็นเสียงพูดชัดเจนจากผู้พูดคนเดียว ความยาวประมาณ 1 นาที แล้วอัปโหลดไปยัง Custom Voices API:
curl https://api.x.ai/v1/custom-voices \
-H "Authorization: Bearer $XAI_API_KEY" \
-F "name=narrator-jane" \
-F "language=en" \
-F "audio=@sample.wav"
API จะคืนค่า voice_id ซึ่งใช้ต่อได้ทั้งกับ TTS และ Voice Agent
แนวทางบันทึกเสียง:
- ใช้ห้องเงียบ
- ใช้ไมค์เดียว
- ไม่มีเพลงหรือเสียงพื้นหลัง
- ให้คนพูดคนเดียว
- ไม่จำเป็นต้องยาวสุด 120 วินาทีเสมอไป เสียงที่สะอาดสำคัญกว่าความยาว
ขั้นตอนที่ 3: เปิด WebSocket session ให้ Grok พูด
Voice Agent ทำงานผ่าน WebSocket session เดียว:
- เปิด connection
- ส่ง
session.update - stream เสียงผู้ใช้เข้าไป
- รับเสียงตอบกลับเป็น event
ตัวอย่าง Node.js:
import WebSocket from "ws";
const ws = new WebSocket(
"wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0",
{
headers: {
Authorization: `Bearer ${process.env.XAI_API_KEY}`,
},
}
);
ws.on("open", () => {
ws.send(JSON.stringify({
type: "session.update",
session: {
voice: "ara",
instructions: "You are a friendly support agent. Keep replies under two sentences.",
input_audio_format: "pcm16",
output_audio_format: "pcm16",
turn_detection: { type: "server_vad" },
},
}));
});
ws.on("message", (raw) => {
const event = JSON.parse(raw.toString());
if (event.type === "response.audio.delta") {
process.stdout.write(Buffer.from(event.delta, "base64"));
}
if (event.type === "response.audio.done") {
console.log("Audio response completed");
}
});
เสียงจากผู้ใช้จะส่งเป็น event:
input_audio_buffer.append
โดย payload เป็น PCM16 frame ที่ encode เป็น base64
ฝั่ง server จะส่งเสียงตอบกลับผ่าน:
response.audio.delta
และส่งสัญญาณจบด้วย:
response.audio.done
สำหรับแอป browser หรือ desktop ให้เริ่มจาก PCM16 ที่ 24 kHz ก่อน ถ้าต่อเข้าระบบโทรศัพท์ค่อยเปลี่ยนเป็น μ-law
ขั้นตอนที่ 4: เพิ่ม tool calling
Voice Agent รองรับ function calling ทำให้โมเดลเรียก API ของคุณระหว่างสนทนาได้ เช่น เช็กสถานะคำสั่งซื้อ
ประกาศ tool ใน session.update:
ws.send(JSON.stringify({
type: "session.update",
session: {
tools: [
{
type: "function",
name: "lookup_order",
description: "Look up the status of a customer order by order number.",
parameters: {
type: "object",
properties: {
order_id: { type: "string" },
},
required: ["order_id"],
},
},
],
},
}));
เมื่อโมเดลต้องการเรียก tool จะส่ง event:
response.function_call_arguments.done
flow ที่ควร implement:
- รับ arguments จาก event
- เรียก API หรือ function ฝั่งคุณ
- ส่งผลลัพธ์กลับเป็น
conversation.item.create - ใช้ item type เป็น
function_call_output - ให้โมเดลพูดคำตอบต่อจากผลลัพธ์นั้น
นอกจากนี้ยังมี tool ในตัวอย่าง web_search สำหรับดึงข้อมูลล่าสุดโดยไม่ต้องสร้าง retrieval layer เอง
ขั้นตอนที่ 5: ใช้ TTS แบบไม่ต้องเปิด Voice Agent
ถ้าคุณต้องการแค่สร้างเสียงจากข้อความ เช่น notification, onboarding voice, podcast intro หรือ in-app narration ให้ใช้ REST endpoint แทน WebSocket:
curl https://api.x.ai/v1/tts \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-tts-1",
"voice": "ara",
"input": "Welcome back to your account. Your last login was Tuesday at 3pm.",
"format": "mp3"
}' \
--output greeting.mp3
รูปแบบ output ที่ใช้บ่อย:
-
mp3: เสียงคุณภาพสูง -
mulaw: 8 kHz เหมาะกับระบบโทรศัพท์
TTS endpoint เป็น synchronous request: ส่งข้อความแล้วรับไฟล์เสียงกลับมา ไม่ต้องเปิด streaming session
ขั้นตอนที่ 6: ทดสอบ workflow ใน Apidog
WebSocket debug จาก terminal ทำได้ยาก เพราะ session มี state และ event หลายชนิด วิธีที่ใช้งานได้ดีคือเก็บ request และ message script ไว้ใน collection
workflow แนะนำ:
- สร้าง WebSocket request สำหรับ URL:
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
ตั้ง Bearer token จาก environment variable เช่น
XAI_API_KEYเตรียม message script ตามลำดับ:
session.update
input_audio_buffer.append
response.create
replay script กับ connection เดิม
เก็บ server events ทั้งหมดไว้ดูเป็น tree
เปรียบเทียบผลลัพธ์เมื่อเปลี่ยน
voice,instructionsหรือturn_detection
ดาวน์โหลดได้ที่ ดาวน์โหลด Apidog แล้วสร้าง WebSocket request ใหม่ จากนั้นเก็บ XAI_API_KEY เป็น environment variable
collection เดียวกันสามารถใช้กับ REST endpoint ของ TTS และ STT ได้ด้วย ทำให้เก็บ voice workflow ทั้งหมดไว้ในโปรเจกต์เดียวกัน หากต้องการแนวทางเพิ่มเติมเกี่ยวกับการทดสอบ API ที่มี state ดู เครื่องมือทดสอบ API สำหรับวิศวกร QA
ข้อจำกัดของระดับฟรี
ฟีเจอร์เสียงไม่มีค่าใช้จ่ายต่อนาทีหรือต่อโทเค็นโดยตรง แต่ยังมีข้อจำกัดที่ต้องออกแบบเผื่อไว้:
- Rate limits: คอนโซลมีขีดจำกัดการเรียกใช้งานต่อนาทีเพื่อป้องกันการใช้งานผิดรูปแบบ เหมาะกับ prototype และ demo แต่ไม่ใช่ production quota
- Custom voice quota: บัญชีหนึ่งเก็บ custom voice ได้จำกัด หากเต็มต้องลบเสียงเก่าเพื่อสร้างใหม่
- Reasoning tokens: เมื่อ Voice Agent ใช้ Grok 4.3 ประมวลผลอยู่เบื้องหลัง จะนับจากเครดิตคอนโซล เครดิตฟรีเหมาะกับการทดลอง แต่ production ต้องใช้แผนแบบชำระเงิน
ถ้าเจอ error จาก rate limit ให้ลดความถี่, batch request หรือย้ายไป tier แบบชำระเงิน พฤติกรรม API ไม่เปลี่ยน เปลี่ยนเฉพาะ quota และ limit
วิธีทดสอบคุณภาพเสียงก่อนใช้งานจริง
ก่อนเลือกเสียงสำหรับ production ให้ทดสอบเสียง preset หลายตัวด้วย script เดียวกัน เพื่อเทียบน้ำเสียงและความชัดเจน
ชุดข้อความทดสอบขั้นต่ำ:
- คำทักทาย 2 ประโยค
- วลียืนยัน เช่น “เข้าใจแล้ว, เรียบร้อย”
- ประโยคยาวที่มีตัวเลข วันที่ และ comma
- ข้อความที่มีชื่อเฉพาะหรือคำเทคนิค
- ข้อความที่ต้องพูดเร็ว เช่น alert หรือ urgent message
แนวทางที่ใช้ได้จริง:
- ใช้ข้อความเดียวกันกับ 3 โทน: สงบ, ปกติ, เร่งด่วน
- สร้างเสียงด้วย preset อย่างน้อย 3 ตัว
- ฟัง latency และ naturalness
- ตรวจ pronunciation ของตัวเลข วันที่ และชื่อเฉพาะ
- เก็บไฟล์ผลลัพธ์ไว้เทียบก่อนเปลี่ยน voice หรือ prompt
แม้เสียง preset ของ Grok จะจัดการ intonation ได้ดี แต่ควรตรวจด้วย use case จริงก่อนเปิด production
คำถามที่พบบ่อย
API ฟรีจริงหรือมีข้อจำกัดซ่อนอยู่?
ฟีเจอร์เสียง เช่น TTS, STT, Voice Agent และ Custom Voices ไม่มีค่าใช้จ่ายต่อนาทีหรือต่อโทเค็นบนคอนโซล แต่ reasoning ของ Grok 4.3 ที่อยู่เบื้องหลังจะใช้เครดิตคอนโซล เครดิตฟรีเพียงพอสำหรับ prototype
ต้องมีบัญชี X หรือไม่?
ต้องมี เพราะการลงชื่อเข้าใช้ xAI Console ใช้บัญชี X
ใช้ Grok Voice จาก browser ได้ไหม?
ได้ แต่ไม่ควรส่ง API key หลักไปที่ browser ให้ server สร้าง ephemeral token ผ่าน /v1/realtime/sessions แล้วส่ง token อายุสั้นให้ client เปิด WebSocket
คุณภาพเสียงเป็นแบบไหน?
TTS ให้ output เป็น MP3 คุณภาพสูง หรือ 8 kHz μ-law สำหรับระบบโทรศัพท์ ส่วน Voice Agent ใช้ PCM16 ที่ 24 kHz ภายใน คุณภาพอยู่ในระดับเดียวกับ TTS เชิงพาณิชย์หลัก ๆ และจุดเด่นคือ latency
ใช้กับระบบโทรศัพท์ได้ไหม?
ได้ เพราะ μ-law เป็นรูปแบบมาตรฐานสำหรับ SIP และ PSTN bridge แต่คุณยังต้องมี SIP provider เอง ปัจจุบัน xAI ไม่ได้ให้ SIP gateway
คุณภาพการโคลนเสียงขึ้นกับอะไร?
ขึ้นกับคุณภาพเสียงอ้างอิงมากกว่าความยาว ตัวอย่าง 60 วินาทีที่ชัดในห้องเงียบดีกว่า 120 วินาทีที่มี noise เมื่อได้ voice_id แล้ว สามารถใช้กับทั้ง TTS และ Voice Agent โดยไม่ต้อง clone ใหม่
ใช้กับตัวละคร AI ในเกมได้ไหม?
ได้ TTS endpoint เร็วพอสำหรับ runtime generation และ Custom Voices ทำให้แต่ละตัวละครมีเสียงของตัวเองได้ ควรระวัง latency ในประโยคยาว ๆ และแบ่งข้อความเป็น chunk สั้น ๆ
สรุป
Grok Voice เป็นทางเลือกที่น่าสนใจสำหรับสร้าง voice agent แบบ real-time เพราะเริ่มทดลองได้ฟรีผ่าน xAI Console, มี latency ต่ำ, ใช้ WebSocket ได้ตรงไปตรงมา และรองรับ Custom Voices
วิธีเริ่มที่เร็วที่สุด:
- สร้าง
XAI_API_KEY - ทดลอง voice preset เช่น
ara - เปิด WebSocket session
- ส่ง
session.update - stream เสียงเข้าและรับ
response.audio.delta - ทดสอบซ้ำใน Apidog เพื่อ replay และ debug event
เมื่อพร้อมเชื่อมกับ Grok 4.3 แบบเต็ม ดู คู่มือ API ของ Grok 4.3 และถ้าต้องการเปรียบเทียบกับ OpenAI ดู Grok Voice vs GPT-Realtime


Top comments (0)