DEV Community

Cover image for วิธีใช้ Grok Voice ฟรี: ตั้งค่า Console, โคลนเสียง, และสร้าง Voice Agent แบบเรียลไทม์
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

วิธีใช้ Grok Voice ฟรี: ตั้งค่า Console, โคลนเสียง, และสร้าง Voice Agent แบบเรียลไทม์

xAI เปิดตัว Grok Voice พร้อม Grok 4.3 จุดสำคัญสำหรับนักพัฒนาคือสามารถทดลองผ่าน xAI Console ได้ฟรี: ไม่มีค่าใช้จ่ายต่อนาที ไม่มีค่าใช้จ่ายต่อโทเค็นสำหรับ TTS, STT, เอเจนต์เสียง และ Custom Voices ค่าใช้จ่ายที่เกี่ยวข้องมีเฉพาะการใช้โทเค็นของ Grok 4.3 เมื่อเอเจนต์ต้องประมวลผล ซึ่งคอนโซลมีเครดิตฟรีสำหรับทดสอบอยู่แล้ว

ลองใช้ Apidog วันนี้

คู่มือนี้สรุปขั้นตอนใช้งาน 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
Enter fullscreen mode Exit fullscreen mode
  • REST endpoint ใช้สำหรับ TTS, STT และ Custom Voices
  • ใช้ Apidog เพื่อจัดการ WebSocket session, replay payload และ debug event ได้ง่ายขึ้น

Grok Voice ให้อะไรฟรีบ้าง

เริ่มจาก xAI Console:

  1. เข้า console.x.ai
  2. ลงชื่อเข้าใช้
  3. สร้าง API key
  4. ใช้ key นั้นเรียก Voice API

xAI Console

สิ่งที่ใช้งานได้โดยไม่มีค่าใช้จ่ายของฟีเจอร์เสียงโดยตรง:

  • 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-..."
Enter fullscreen mode Exit fullscreen mode

ถ้าสร้างแอปฝั่ง browser อย่าใส่ API key หลักไว้ใน client ให้สร้าง ephemeral token แทน ผ่าน console หรือ endpoint:

/v1/realtime/sessions
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

API จะคืนค่า voice_id ซึ่งใช้ต่อได้ทั้งกับ TTS และ Voice Agent

แนวทางบันทึกเสียง:

  • ใช้ห้องเงียบ
  • ใช้ไมค์เดียว
  • ไม่มีเพลงหรือเสียงพื้นหลัง
  • ให้คนพูดคนเดียว
  • ไม่จำเป็นต้องยาวสุด 120 วินาทีเสมอไป เสียงที่สะอาดสำคัญกว่าความยาว

ขั้นตอนที่ 3: เปิด WebSocket session ให้ Grok พูด

Voice Agent ทำงานผ่าน WebSocket session เดียว:

  1. เปิด connection
  2. ส่ง session.update
  3. stream เสียงผู้ใช้เข้าไป
  4. รับเสียงตอบกลับเป็น 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");
  }
});
Enter fullscreen mode Exit fullscreen mode

เสียงจากผู้ใช้จะส่งเป็น event:

input_audio_buffer.append
Enter fullscreen mode Exit fullscreen mode

โดย payload เป็น PCM16 frame ที่ encode เป็น base64

ฝั่ง server จะส่งเสียงตอบกลับผ่าน:

response.audio.delta
Enter fullscreen mode Exit fullscreen mode

และส่งสัญญาณจบด้วย:

response.audio.done
Enter fullscreen mode Exit fullscreen mode

สำหรับแอป 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"],
        },
      },
    ],
  },
}));
Enter fullscreen mode Exit fullscreen mode

เมื่อโมเดลต้องการเรียก tool จะส่ง event:

response.function_call_arguments.done
Enter fullscreen mode Exit fullscreen mode

flow ที่ควร implement:

  1. รับ arguments จาก event
  2. เรียก API หรือ function ฝั่งคุณ
  3. ส่งผลลัพธ์กลับเป็น conversation.item.create
  4. ใช้ item type เป็น function_call_output
  5. ให้โมเดลพูดคำตอบต่อจากผลลัพธ์นั้น

นอกจากนี้ยังมี 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
Enter fullscreen mode Exit fullscreen mode

รูปแบบ output ที่ใช้บ่อย:

  • mp3: เสียงคุณภาพสูง
  • mulaw: 8 kHz เหมาะกับระบบโทรศัพท์

TTS endpoint เป็น synchronous request: ส่งข้อความแล้วรับไฟล์เสียงกลับมา ไม่ต้องเปิด streaming session

ขั้นตอนที่ 6: ทดสอบ workflow ใน Apidog

WebSocket debug จาก terminal ทำได้ยาก เพราะ session มี state และ event หลายชนิด วิธีที่ใช้งานได้ดีคือเก็บ request และ message script ไว้ใน collection

Apidog WebSocket Testing

workflow แนะนำ:

  1. สร้าง WebSocket request สำหรับ URL:
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
Enter fullscreen mode Exit fullscreen mode
  1. ตั้ง Bearer token จาก environment variable เช่น XAI_API_KEY

  2. เตรียม message script ตามลำดับ:

session.update
input_audio_buffer.append
response.create
Enter fullscreen mode Exit fullscreen mode
  1. replay script กับ connection เดิม

  2. เก็บ server events ทั้งหมดไว้ดูเป็น tree

  3. เปรียบเทียบผลลัพธ์เมื่อเปลี่ยน 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

แนวทางที่ใช้ได้จริง:

  1. ใช้ข้อความเดียวกันกับ 3 โทน: สงบ, ปกติ, เร่งด่วน
  2. สร้างเสียงด้วย preset อย่างน้อย 3 ตัว
  3. ฟัง latency และ naturalness
  4. ตรวจ pronunciation ของตัวเลข วันที่ และชื่อเฉพาะ
  5. เก็บไฟล์ผลลัพธ์ไว้เทียบก่อนเปลี่ยน 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

วิธีเริ่มที่เร็วที่สุด:

  1. สร้าง XAI_API_KEY
  2. ทดลอง voice preset เช่น ara
  3. เปิด WebSocket session
  4. ส่ง session.update
  5. stream เสียงเข้าและรับ response.audio.delta
  6. ทดสอบซ้ำใน Apidog เพื่อ replay และ debug event

เมื่อพร้อมเชื่อมกับ Grok 4.3 แบบเต็ม ดู คู่มือ API ของ Grok 4.3 และถ้าต้องการเปรียบเทียบกับ OpenAI ดู Grok Voice vs GPT-Realtime

Top comments (0)