xAI đã ra mắt Grok Voice cùng với Grok 4.3. Điểm đáng chú ý cho developer: bạn có thể thử miễn phí trên Bảng điều khiển xAI, không tính phí theo phút hoặc token cho tác nhân giọng nói, text-to-speech, speech-to-text và Custom Voices. Phần có thể phát sinh chi phí là token Grok 4.3 khi tác nhân cần suy luận, nhưng phần này cũng có hạn mức miễn phí trên console để thử nghiệm.
Bài viết này hướng dẫn cách chạy Grok Voice end-to-end: lấy API key, chọn hoặc nhân bản giọng nói, mở phiên WebSocket, thêm function calling, gọi TTS REST API và kiểm thử toàn bộ luồng bằng Apidog trước khi đưa vào sản phẩm.
Nếu bạn cần phần rộng hơn về Grok 4.3 API, xem Grok 4.3 API guide. Nếu muốn so sánh trực tiếp với bộ sản phẩm của OpenAI, xem Grok Voice vs GPT-Realtime.
Tóm tắt nhanh
- Grok Voice miễn phí trên Bảng điều khiển xAI (
console.x.ai) cho TTS, STT, tác nhân giọng nói và Custom Voices. - Mô hình chính:
grok-voice-think-fast-1.0. - xAI công bố thời gian nhận âm thanh đầu tiên dưới 1 giây và nhanh hơn khoảng 5 lần so với đối thủ gần nhất.
- Có hơn 80 giọng nói cài đặt sẵn trên 28 ngôn ngữ.
- Có 5 nhân cách tác nhân giọng nói tích hợp: Eve, Ara, Rex, Sal, Leo.
- Custom Voices có thể nhân bản từ khoảng 1 phút giọng nói, sẵn sàng trong dưới 2 phút.
- WebSocket endpoint:
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
- REST API dùng cho TTS, STT và Custom Voices.
- Có thể dùng Apidog để script, phát lại và debug phiên WebSocket.
Grok Voice miễn phí những gì?
Truy cập miễn phí đi qua Bảng điều khiển xAI. Sau khi đăng nhập tại console.x.ai và tạo API key, bạn có thể gọi các nhóm API giọng nói sau mà không bị tính phí theo phút hoặc token.
Các thành phần chính:
- Tác nhân giọng nói thời gian thực: hội thoại hai chiều qua WebSocket, có server-side voice activity detection, turn-taking và hỗ trợ tool/function calling.
- Text-to-Speech: hơn 80 giọng nói cài đặt sẵn trên 28 ngôn ngữ, đầu ra MP3 hoặc μ-law.
- Speech-to-Text: chuyển ngữ streaming hoặc batch trên hơn 25 ngôn ngữ đầu vào, có timestamp cấp từ và nhận dạng người nói.
-
Custom Voices: nhân bản giọng nói từ mẫu ngắn, trả về
voice_iddùng lại được cho TTS và tác nhân giọng nói.
Lưu ý: khi tác nhân cần suy luận bằng Grok 4.3 bên trong, token suy luận sẽ tính vào tín dụng console. Hạn mức miễn phí đủ để prototype và kiểm thử luồng end-to-end.
Bước 1: Tạo API key trên xAI Console
Đăng nhập vào:
console.x.ai
Tại trang API Keys, tạo key mới và bật phạm vi cần thiết, ví dụ:
voicechat
Sau đó export key vào môi trường local:
export XAI_API_KEY="xai-..."
Với ứng dụng browser, không gửi API key gốc xuống client. Thay vào đó, tạo mã thông báo tạm thời từ server, ví dụ qua endpoint:
/v1/realtime/sessions
Token tạm thời có thời hạn ngắn, phù hợp để browser kết nối WebSocket trực tiếp mà không làm lộ key chính.
Bước 2: Chọn giọng nói
Bạn có hai cách triển khai.
Cách 1: Dùng giọng nói cài đặt sẵn
Tác nhân giọng nói có 5 nhân cách tích hợp:
| Giọng | Đặc điểm | Phù hợp cho |
|---|---|---|
eve |
Nữ, năng động | Hỗ trợ khách hàng thân thiện |
ara |
Nữ, ấm áp | Hỗ trợ chung |
rex |
Nam, tự tin | Sales, tư vấn |
sal |
Trung tính, mượt | Tường thuật, nội dung dài |
leo |
Nam, uy quyền | Quy trình trang trọng, compliance |
Với TTS REST API, danh sách preset lớn hơn: hơn 80 giọng trên 28 ngôn ngữ. Bạn truyền giọng qua tham số voice.
Cách 2: Tạo Custom Voice
Chuẩn bị file WAV khoảng 60 giây, một người nói, âm thanh rõ, không nhạc nền.
Ví dụ tạo voice clone:
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"
Response sẽ trả về voice_id. ID này có thể dùng lại cho:
- TTS endpoint
- Tác nhân giọng nói WebSocket
Clip tham chiếu tối đa 120 giây, nhưng âm thanh sạch và nhất quán quan trọng hơn độ dài.
Bước 3: Mở phiên Grok Voice qua WebSocket
Tác nhân giọng nói chạy qua một phiên WebSocket duy nhất:
- Mở kết nối.
- Gửi cấu hình phiên bằng
session.update. - Stream audio input.
- Nhận audio output từ server.
Ví dụ Node.js tối thiểu:
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.error("Assistant finished speaking");
}
});
Audio người dùng được gửi bằng event:
input_audio_buffer.append
Payload thường là PCM16 base64. Server trả âm thanh qua:
response.audio.delta
Khi lượt nói kết thúc, server gửi:
response.audio.done
PCM16 24 kHz là lựa chọn an toàn cho app web hoặc desktop. Nếu tích hợp với điện thoại, dùng μ-law.
Bước 4: Gửi audio input vào WebSocket
Một frame audio có thể được gửi như sau:
function sendAudioFrame(base64Pcm16) {
ws.send(
JSON.stringify({
type: "input_audio_buffer.append",
audio: base64Pcm16,
})
);
}
Khi muốn yêu cầu model phản hồi, gửi:
ws.send(
JSON.stringify({
type: "response.create",
})
);
Trong app thực tế, bạn thường lấy audio từ microphone, encode sang PCM16, chia thành frame nhỏ rồi gửi liên tục qua WebSocket.
Bước 5: Thêm function calling
Grok Voice hỗ trợ tool/function calling. Bạn khai báo tool trong session.update.
Ví dụ tool tra cứu đơn hàng:
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"],
},
},
],
},
})
);
Khi model muốn gọi tool, nó phát event:
response.function_call_arguments.done
Luồng xử lý phía server/app của bạn:
- Parse tên function và arguments.
- Gọi API nội bộ của bạn.
- Gửi kết quả lại bằng
conversation.item.create. - Dùng item loại
function_call_output. - Model tiếp tục hội thoại và đọc câu trả lời.
Ví dụ khung xử lý:
ws.on("message", async (raw) => {
const event = JSON.parse(raw.toString());
if (event.type === "response.function_call_arguments.done") {
const args = JSON.parse(event.arguments);
const result = await lookupOrder(args.order_id);
ws.send(
JSON.stringify({
type: "conversation.item.create",
item: {
type: "function_call_output",
call_id: event.call_id,
output: JSON.stringify(result),
},
})
);
ws.send(
JSON.stringify({
type: "response.create",
})
);
}
});
Ngoài custom tools, Grok Voice cũng có tool tích hợp web_search, hữu ích khi cần câu trả lời dựa trên dữ liệu mới mà không tự xây lớp retrieval.
Bước 6: Gọi TTS REST API nếu không cần tác nhân
Nếu chỉ cần chuyển văn bản thành âm thanh, không cần WebSocket. Gọi REST endpoint TTS:
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
Định dạng đầu ra:
-
mp3: chất lượng cao, phù hợp app/web/media. -
mulaw: 8 kHz, phù hợp hệ thống điện thoại.
Endpoint này đồng bộ: request vào, nhận byte âm thanh trả về, không cần streaming session.
Bước 7: Kiểm thử luồng trong Apidog
Debug WebSocket bằng terminal khá khó vì hội thoại có trạng thái. Cách thực tế hơn là script toàn bộ phiên và phát lại nhiều lần.
Quy trình kiểm thử:
- Tạo request WebSocket mới với URL:
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
- Lưu
XAI_API_KEYvào environment. - Thêm header:
Authorization: Bearer {{XAI_API_KEY}}
-
Tạo script gồm các message JSON:
session.updateinput_audio_buffer.appendresponse.create
Chạy trên một kết nối duy nhất.
Ghi lại toàn bộ server events thành cây sự kiện.
Chạy lại với giọng khác hoặc instructions khác để so sánh hành vi.
Bạn có thể tải Apidog, tạo request WebSocket và lưu các biến môi trường trong cùng một project. Bộ sưu tập tương tự cũng có thể chứa các endpoint REST cho TTS và STT.
Để đọc thêm về mẫu kiểm thử API có trạng thái, xem công cụ kiểm thử API cho kỹ sư QA.
Giới hạn tầng miễn phí
Bảng điều khiển xAI cho phép dùng các tính năng giọng nói mà không tính phí theo phút hoặc token, nhưng vẫn có một số giới hạn vận hành:
- Rate limit: console áp dụng giới hạn request mỗi phút theo endpoint để chống lạm dụng. Phù hợp cho build, demo và prototype; không nên xem là quota sản xuất.
- Custom Voice quota: mỗi tài khoản giữ được số lượng hữu hạn voice clone cùng lúc. Có thể xóa voice cũ để tạo voice mới.
- Token suy luận: khi tác nhân cần Grok 4.3 suy luận, token sẽ tính vào tín dụng console. Prototype có thể dùng tín dụng miễn phí; production cần gói trả phí.
Nếu gặp rate limit, hãy batch request, giảm tần suất gọi hoặc chuyển lên tầng trả phí. Hành vi API không đổi, chỉ giới hạn thay đổi.
Checklist chọn giọng trước khi release
Trước khi đưa vào production, chạy cùng một tập câu qua nhiều giọng preset. Một checklist ngắn:
- Một lời chào hai câu.
- Một câu xác nhận ngắn, ví dụ: “Đã hiểu, mọi thứ đã xong.”
- Một câu dài có số, ngày, dấu phẩy.
- Một câu ở ngữ cảnh bình tĩnh.
- Một câu ở ngữ cảnh khẩn cấp.
- Một câu có tên riêng hoặc thuật ngữ sản phẩm.
Mục tiêu là nghe xem giọng có giữ đúng tông, ngắt nghỉ tự nhiên và đọc số/ngày tháng ổn định không. Các preset của Grok xử lý tốt hơn nhiều công cụ TTS mà chúng tôi đã đánh giá, nhưng bạn vẫn nên kiểm tra với nội dung thực tế của sản phẩm.
Câu hỏi thường gặp
API có thực sự miễn phí không?
Các tính năng giọng nói gồm TTS, STT, tác nhân giọng nói và Custom Voices không bị tính phí theo phút hoặc token trên console. Tuy nhiên, phần suy luận Grok 4.3 bên trong sẽ tính vào tín dụng console.
Có cần tài khoản X không?
Có. Đăng nhập Bảng điều khiển xAI sử dụng tài khoản X.
Có dùng được từ browser không?
Có. Không đưa API key gốc vào browser. Hãy tạo token tạm thời ở server qua /v1/realtime/sessions, gửi token ngắn hạn xuống client và dùng token đó để mở WebSocket.
Chất lượng âm thanh như thế nào?
TTS hỗ trợ MP3 chất lượng cao hoặc μ-law 8 kHz. Tác nhân giọng nói chạy PCM16 24 kHz nội bộ. Chất lượng ở mức tương đương các công cụ TTS thương mại lớn; điểm khác biệt chính là độ trễ.
Có tích hợp được với điện thoại không?
Có. Đầu ra μ-law là định dạng phổ biến cho SIP và PSTN bridge. Bạn vẫn cần nhà cung cấp SIP riêng; xAI chưa cung cấp SIP gateway riêng.
Custom Voice có phụ thuộc vào độ dài mẫu không?
Có, nhưng chất lượng mẫu quan trọng hơn độ dài. Một mẫu 60 giây sạch, ghi trong phòng yên tĩnh thường tốt hơn mẫu 120 giây nhưng nhiều nhiễu. voice_id sau khi tạo có thể dùng lại cho TTS và tác nhân giọng nói.
Có dùng được cho nhân vật AI trong game không?
Có. TTS đủ nhanh cho nhiều trường hợp runtime generation, và Custom Voices giúp mỗi nhân vật có giọng riêng. Với câu thoại dài, nên chia nhỏ để giảm độ trễ cảm nhận.
Tóm lại
Grok Voice là một lựa chọn thực tế để prototype tác nhân giọng nói thời gian thực: có WebSocket API, TTS REST API, STT, Custom Voices và tầng miễn phí trên xAI Console. Cách triển khai nhanh nhất là:
- Tạo
XAI_API_KEY. - Chọn preset voice hoặc tạo
voice_id. - Mở WebSocket với
grok-voice-think-fast-1.0. - Gửi
session.update. - Stream audio input.
- Nhận
response.audio.delta. - Kiểm thử lại toàn bộ phiên trong Apidog trước khi tích hợp vào sản phẩm.
Khi bạn cần tích hợp sâu hơn với Grok 4.3, xem hướng dẫn API Grok 4.3. Nếu muốn so sánh song song với OpenAI, xem Grok Voice vs GPT-Realtime.


Top comments (0)