xAI a lancé Grok Voice avec Grok 4.3. Pour les développeurs, le point important est direct : l’accès vocal est gratuit depuis la console xAI. Pas de frais par minute, pas de frais par jeton pour la synthèse vocale, la reconnaissance vocale, l’agent vocal ou le clonage de voix personnalisées. Le seul coût potentiel vient des jetons Grok 4.3 utilisés lorsque l’agent raisonne, avec une allocation gratuite disponible sur la console pour prototyper.
Ce guide montre comment tester Grok Voice gratuitement : création de clé API, choix ou clonage de voix, session WebSocket, appel TTS REST, puis validation du flux complet avec Apidog avant intégration produit.
Si vous voulez approfondir l’API Grok 4.3, consultez aussi le guide de l’API Grok 4.3. Pour une comparaison avec la pile OpenAI, voir Grok Voice vs GPT-Realtime.
En bref
- Grok Voice est gratuit sur la console xAI (
console.x.ai) pour les fonctionnalités vocales : TTS, STT, agent vocal et voix personnalisées. - Modèle principal :
grok-voice-think-fast-1.0. - Temps de première réponse audio : moins d’1 seconde ; xAI affirme qu’il est environ 5 fois plus rapide que le concurrent le plus proche.
- Plus de 80 voix prédéfinies dans 28 langues.
- 5 personnalités d’agent vocal intégrées : Eve, Ara, Rex, Sal, Leo.
- Clonage de voix personnalisées à partir d’environ 1 minute de parole.
- Voix personnalisée prête en moins de 2 minutes.
- Point d’accès WebSocket :
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
- Les points d’accès REST TTS, STT et voix personnalisées utilisent une interface API unifiée.
- Vous pouvez utiliser Apidog pour rejouer une session WebSocket sans réenregistrer l’audio.
Ce que Grok Voice vous donne gratuitement
La console xAI est le point d’entrée. Connectez-vous à console.x.ai, générez une clé API, puis appelez les interfaces vocales sans frais propres aux fonctionnalités vocales.
Vous pouvez tester :
- Agent vocal : conversation en temps réel, utilisation d’outils, détection d’activité vocale côté serveur et gestion des tours de parole.
- Synthèse vocale (TTS) : génération audio depuis du texte, avec plus de 80 voix prédéfinies dans 28 langues.
- Reconnaissance vocale (STT) : transcription en streaming ou par lots, avec horodatage au niveau du mot et diarisation.
-
Voix personnalisées : clonage d’une voix depuis un court échantillon audio, puis utilisation via un
voice_id.
Le compteur payant concerne uniquement les jetons Grok 4.3 lorsque l’agent doit raisonner sur une requête. Pour un prototype, le crédit gratuit de la console permet de valider un flux de bout en bout.
Étape 1 : créer une clé API xAI
Connectez-vous à console.x.ai avec votre compte X.
Dans API Keys, créez une clé avec les scopes nécessaires, notamment :
voicechat
Exportez ensuite la clé dans votre environnement local :
export XAI_API_KEY="xai-..."
Pour vérifier que la variable est disponible :
echo $XAI_API_KEY
Pour une application navigateur, ne placez jamais cette clé dans le frontend. Utilisez plutôt un jeton éphémère généré côté serveur via /v1/realtime/sessions. Ce jeton expire rapidement et peut être transmis au navigateur sans exposer la clé parente.
Étape 2 : choisir une voix
Vous avez deux options : utiliser une voix prédéfinie ou créer une voix personnalisée.
Option A : utiliser une voix prédéfinie
L’agent vocal propose cinq personas :
| Voix | Profil | Cas d’usage typique |
|---|---|---|
eve |
féminine, énergique | support client dynamique |
ara |
féminine, chaleureuse | assistance générale |
rex |
masculin, confiant | vente, qualification |
sal |
neutre, douce | narration, lectures longues |
leo |
masculin, autoritaire | conformité, flux formels |
Pour commencer, utilisez ara : c’est un bon choix par défaut pour un assistant généraliste.
Option B : cloner une voix personnalisée
Préparez un fichier WAV avec :
- environ 60 secondes de parole ;
- un seul locuteur ;
- aucun bruit de fond ;
- pas de musique ;
- une diction stable.
Exemple d’appel :
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"
La réponse renvoie un voice_id. Conservez-le : il peut être utilisé à la fois avec le point d’accès TTS et avec l’agent vocal.
La durée maximale du clip de référence est de 120 secondes, mais un échantillon propre de 60 secondes vaut mieux qu’un enregistrement plus long et bruité.
Étape 3 : ouvrir une session WebSocket avec Grok Voice
L’agent vocal fonctionne via une seule connexion WebSocket.
URL :
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
Installez d’abord le client WebSocket Node.js :
npm install ws
Créez ensuite un fichier voice-client.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") {
const audioBuffer = Buffer.from(event.delta, "base64");
process.stdout.write(audioBuffer);
}
if (event.type === "response.audio.done") {
console.error("Tour audio terminé");
}
if (event.type === "error") {
console.error(event);
}
});
Lancez le client :
node voice-client.js
Pour envoyer l’audio utilisateur, vous devez transmettre des trames PCM16 encodées en base64 via input_audio_buffer.append.
Structure typique :
ws.send(JSON.stringify({
type: "input_audio_buffer.append",
audio: base64Pcm16Chunk,
}));
Puis demandez une réponse :
ws.send(JSON.stringify({
type: "response.create",
}));
Le serveur répond avec des événements comme :
-
response.audio.delta: morceau audio encodé en base64 ; -
response.audio.done: fin de la réponse audio ; -
response.function_call_arguments.done: appel d’outil demandé ; -
error: erreur de session ou de format.
Pour les applications navigateur et desktop, utilisez PCM16 à 24 kHz. Pour la téléphonie, utilisez μ-law.
Étape 4 : ajouter des outils à l’agent vocal
Grok Voice peut appeler vos fonctions pendant la conversation. C’est utile pour :
- vérifier une commande ;
- consulter un compte utilisateur ;
- créer un ticket ;
- récupérer une information métier ;
- interroger une base documentaire.
Déclarez d’abord l’outil dans la session :
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"],
},
},
],
},
}));
Quand le modèle veut appeler cet outil, il émet un événement du type :
response.function_call_arguments.done
Votre application doit alors :
- lire les arguments fournis par le modèle ;
- exécuter la fonction côté serveur ;
- renvoyer le résultat dans la conversation ;
- laisser le modèle formuler la réponse vocale.
Exemple de sortie d’outil :
ws.send(JSON.stringify({
type: "conversation.item.create",
item: {
type: "function_call_output",
call_id: callId,
output: JSON.stringify({
status: "shipped",
estimated_delivery: "Friday",
}),
},
}));
Un outil web_search intégré est également disponible. Il peut être utile lorsque la réponse doit s’appuyer sur des données récentes sans implémenter votre propre couche de récupération.
Étape 5 : utiliser le TTS sans session WebSocket
Si vous avez seulement besoin de convertir du texte en audio, utilisez le point d’accès REST TTS.
Exemple :
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
Formats disponibles :
-
mp3: haute fidélité ; -
mulaw: 8 kHz, adapté à la téléphonie.
Ce point d’accès est synchrone : vous envoyez du texte et récupérez directement des octets audio. Aucun WebSocket n’est nécessaire.
Étape 6 : tester le flux complet dans Apidog
Les sessions WebSocket sont difficiles à tester uniquement depuis le terminal, car chaque échange dépend du contexte. Une approche plus robuste consiste à enregistrer et rejouer les messages dans un client d’API.
Flux de test recommandé :
- Créez une requête WebSocket avec l’URL :
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
- Ajoutez l’en-tête d’autorisation :
Authorization: Bearer {{XAI_API_KEY}}
Stockez
XAI_API_KEYdans les variables d’environnement Apidog.Préparez une séquence de messages :
{
"type": "session.update",
"session": {
"voice": "ara",
"instructions": "You are a concise support agent.",
"input_audio_format": "pcm16",
"output_audio_format": "pcm16",
"turn_detection": {
"type": "server_vad"
}
}
}
Puis :
{
"type": "input_audio_buffer.append",
"audio": "BASE64_PCM16_AUDIO_CHUNK"
}
Puis :
{
"type": "response.create"
}
Capturez les événements serveur dans l’arborescence de réponse.
Rejouez la même séquence avec plusieurs voix (
ara,eve,rex) pour comparer la latence, le ton et la stabilité.
Téléchargez Apidog, créez une requête WebSocket, puis collez votre clé dans les variables d’environnement. Vous pouvez garder dans le même projet vos tests WebSocket, vos appels TTS REST et vos appels STT REST.
Pour d’autres modèles de test d’API contextuelles, consultez Outil de test d’API pour les ingénieurs QA.
Limites du niveau gratuit
La console fournit un accès complet aux fonctionnalités vocales sans frais par minute ou par jeton. Les limites à prévoir concernent surtout l’usage et l’exploitation.
Limites de débit
La console applique des plafonds de requêtes par minute par point d’accès afin d’éviter les abus. Ils conviennent au développement, aux tests et aux démos, mais ne doivent pas être considérés comme un quota de production.
Quota de voix personnalisées
Un compte peut contenir un nombre limité de voix personnalisées à un instant donné. Pour libérer un emplacement, supprimez une voix existante puis recréez-en une autre.
Jetons de raisonnement
Lorsque l’agent vocal utilise Grok 4.3 pour raisonner, cette consommation est déduite du crédit console. Le crédit gratuit suffit pour prototyper, mais un usage de production nécessitera un plan adapté.
Si vous atteignez les limites de débit, regroupez les requêtes, réduisez la fréquence d’appel ou passez à un niveau payant. Le comportement de l’API reste le même ; seule la limite change.
Comparer les voix avant production
Avant de choisir une voix, testez la même phrase avec plusieurs préréglages.
Utilisez au minimum :
- une salutation de deux phrases ;
- une confirmation courte : « Compris, tout est prêt » ;
- une phrase longue avec un nombre, une date et une virgule ;
- une phrase urgente ;
- une phrase calme ;
- une phrase contenant un terme métier.
Exemple de script de test :
Bonjour, je suis votre assistant. Je peux vous aider à vérifier votre commande ou mettre à jour vos informations de compte.
Compris, tout est prêt.
Votre commande numéro 48291, passée le mardi 14 mai, est actuellement en cours de préparation.
Écoutez ensuite :
- l’intonation ;
- les pauses ;
- la prononciation des chiffres ;
- la gestion des virgules ;
- la stabilité sur les phrases longues ;
- la cohérence avec votre marque.
Le test que nous utilisons consiste à faire lire la même invite avec trois intentions : calme, normale, urgente. Les voix prédéfinies de Grok gèrent bien ces variations, mais l’audit reste indispensable avant production.
FAQ
L’API est-elle vraiment gratuite ?
Les fonctionnalités vocales — TTS, STT, agent vocal et voix personnalisées — n’ont pas de frais par minute ou par jeton sur la console xAI. Le raisonnement sous-jacent avec Grok 4.3 consomme le crédit console.
Ai-je besoin d’un compte X ?
Oui. La connexion à la console xAI utilise un compte X.
Puis-je utiliser Grok Voice dans un navigateur ?
Oui, mais utilisez un jeton éphémère.
Architecture recommandée :
- votre serveur crée un jeton via
/v1/realtime/sessions; - le serveur transmet ce jeton court au navigateur ;
- le navigateur ouvre la connexion WebSocket ;
- la clé API principale reste côté serveur.
Quelle qualité audio puis-je attendre ?
La sortie TTS peut être générée en MP3 haute fidélité ou en μ-law 8 kHz. L’agent vocal utilise PCM16 à 24 kHz en interne. La qualité est comparable à celle des principaux moteurs TTS commerciaux ; la latence est le facteur différenciant.
Grok Voice fonctionne-t-il avec la téléphonie ?
Oui. Le format μ-law est adapté aux passerelles SIP et RTC. Vous devez toutefois utiliser votre propre fournisseur SIP ; xAI ne fournit pas aujourd’hui sa propre passerelle SIP.
Comment améliorer la qualité d’un clone vocal ?
La qualité dépend surtout de l’audio de référence.
Bonnes pratiques :
- enregistrer dans une pièce calme ;
- utiliser un micro stable ;
- éviter la réverbération ;
- parler naturellement ;
- ne pas ajouter de musique ;
- garder un seul locuteur ;
- privilégier 60 secondes propres plutôt que 120 secondes bruitées.
Le voice_id obtenu peut être utilisé avec le TTS et avec l’agent vocal sans reclonage.
Puis-je utiliser Grok Voice pour des personnages IA dans un jeu ?
Oui. Le point d’accès TTS peut convenir à une génération rapide de répliques, et les voix personnalisées permettent de donner une voix distincte à chaque personnage. Pour les longues lignes de dialogue, surveillez la latence et envisagez une génération fragmentée.
Pour conclure
Grok Voice fournit un chemin simple pour prototyper un agent vocal temps réel : clé API, choix de voix, session WebSocket, puis test reproductible dans Apidog. La partie vocale est gratuite sur la console xAI, et les voix personnalisées réduisent la friction pour créer des expériences vocales propres à un produit.
Le meilleur point de départ est de créer une session WebSocket, tester trois voix prédéfinies, rejouer le même scénario dans Apidog, puis mesurer la latence et la qualité perçue.
Pour intégrer ensuite le raisonnement Grok 4.3, consultez le guide de l’API Grok 4.3. Pour comparer avec OpenAI, lisez Grok Voice vs GPT-Realtime.


Top comments (0)