xAI : Grok Voice 3.0
xAI's flagship realtime speech-to-speech voice agent over WebSockets, with reasoning on by default, low-latency turn-taking, interruptions and tool use such as web search.
Modèles variantes
Il s’agit d’ID de modèles natifs acceptés par l’auteur ou le fournisseur pour la même famille de modèles canonique.
Pinned Grok Voice 3.0 release, selected via the model query param on /v1/realtime.
Alias that xAI points at its current flagship voice model, grok-voice-3.0 since 2026-10-14.
Fournisseurs
Plusieurs fournisseurs peuvent héberger le même modèle. Choisissez-en un lorsque vous avez besoin d’un backend fixe, ou laissez le routage choisir parmi eux.
Langues prises en charge
en
ar-EG
ar-SA
ar-AE
bn
zh
fr
de
hi
id
it
ja
ko
pt-BR
pt-PT
ru
es-MX
es-ES
tr
vi
Fonctionnalités
Bidirectional realtime speech-to-speech over WebSocket.
speech_to_speech
Natural conversational turn-taking.
turn_taking
Integrated tool calling (e.g. web search) during conversation.
tool_use
Optional transcription of input audio, biased by a language hint and key terms.
input_transcription
Reasoning is on by default and can be turned off per session with reasoning.effort none.
reasoning_effort
Code
Voix à voix temps réel avec l’OpenAI SDK
Envoie question.pcm (PCM mono 16 bits à 24 kHz) en un seul tour via le protocole OpenAI Realtime et enregistre la réponse parlée dans reply.pcm.
import { once } from "node:events";
import { readFile, writeFile } from "node:fs/promises";
import OpenAI from "openai";
import { OpenAIRealtimeWS } from "openai/realtime/ws";
const client = new OpenAI({
apiKey: process.env.ALLMODELS_API_KEY,
baseURL: "https://api.allmodels.io/oai"
});
const realtime = new OpenAIRealtimeWS({ model: "grok-voice-3.0" }, client);
const reply = [];
realtime.on("response.output_audio.delta", ({ delta }) => reply.push(Buffer.from(delta, "base64")));
realtime.on("response.done", async () => {
await writeFile("reply.pcm", Buffer.concat(reply));
realtime.close();
});
realtime.on("error", console.error);
if (realtime.socket.readyState !== 1) await once(realtime.socket, "open");
const format = { type: "audio/pcm", rate: 24000 };
realtime.send({
type: "session.update",
session: {
voice: "eve",
output_modalities: ["audio"],
turn_detection: { type: null },
audio: { input: { format }, output: { format } }
}
});
realtime.send({ type: "input_audio_buffer.append", audio: (await readFile("question.pcm")).toString("base64") });
realtime.send({ type: "input_audio_buffer.commit" });
realtime.send({ type: "response.create" });
