Construire avec CometAPIBesoin d'une seule API pour plusieurs modèles ?Testez le workflow dans Playground, puis créez une clé API lorsque le modèle et le coût correspondent à votre cas d'usage.
Qu'est-ce que Grok Voice 3.0 et comment l'utiliser ?
Se connecter à Grok Voice 3.0 avec Python, générer une réponse vocale, envoyer de l’audio, ajouter des outils et résoudre les problèmes courants de l’API en temps réel.
Deon GoodwinÉquipe de recherche sur les modèles IA et API
Grok Voice 3.0 est le modèle de conversion vocale en temps réel de xAI, publié le 14 octobre 2026. Son nom de modèle API est grok-voice-3.0 ; au 3 novembre 2026, grok-voice-latest pointe vers cette version. L’annonce de lancement indique des sessions vocales à 0,08 $ par minute (4,80 $ par heure). Il combine conversation, gestion des interruptions et utilisation d’outils pour les assistants vocaux et le support client. Avec du Python de base, une clé API xAI et la bibliothèque websockets, vous pouvez envoyer une invite et enregistrer une réponse parlée. Commencez avec l’exemple ci-dessous, puis ajoutez de l’audio enregistré, du streaming micro en direct et des outils métier à mesure que votre application grandit.
Revu pour la clarté, l'attribution des sources et la terminologie API actuelle.
Points clés
Grok Voice 3.0 échange la parole et le texte en temps réel. Votre application envoie et reçoit des événements de session via WebSocket tout au long de la conversation.
Votre premier test peut être un simple tour texte-vers-audio. Une réponse lisible confirme que l’authentification et la génération audio fonctionnent avant d’ajouter un microphone.
L’entrée audio nécessite un format correspondant et une limite de tour claire. Votre application peut soumettre de l’audio PCM enregistré avec fin de tour manuelle ou diffuser l’audio du microphone avec détection vocale côté serveur.
Votre application contrôle les actions métier. Elle valide les arguments de fonction et les autorisations utilisateur, exécute l’action approuvée et renvoie le résultat pour que l’agent vocal poursuive.
Les clients navigateur et mobile utilisent des identifiants de courte durée. Votre serveur conserve la clé API permanente et émet des jetons temporaires pour les connexions client.
Qu’est-ce que Grok Voice 3.0 ?
Grok Voice 3.0 est un modèle de conversation vocale en temps réel développé par xAI, opérant sous la marque SpaceX Super Intelligence. Il accepte des entrées parlées ou textuelles et peut renvoyer de l’audio et du texte au sein d’une session en cours. Le modèle est optimisé pour les cas d’usage d’agents vocaux, plutôt que de servir de remplacement direct des modèles Grok uniquement textuels.
Les assistants vocaux traditionnels enchaînent souvent la reconnaissance vocale, un modèle de langue et la synthèse vocale. Grok Voice expose à la place une session de parole à parole avec un comportement conversationnel intégré et un support des outils. Cette architecture peut simplifier la couche d’orchestration du développeur, bien que les applications aient toujours besoin de capture audio, transport, autorisation, intégrations métier et supervision.
La définition du modèle Grok Voice 3.0 identifie le texte et l’audio comme ses modalités d’entrée et de sortie. Pour ce tutoriel, le premier point de contrôle utile est une réponse lisible depuis un script Python côté serveur.
Principales fonctionnalités et capacités de Grok Voice 3.0
Mener une conversation en direct : échanger parole et texte via WebSocket tout au long d’une session.
Gérer les interruptions : utiliser la détection vocale côté serveur et arrêter la lecture en file d’attente lorsque l’appelant commence à parler.
Utiliser des outils métier : connecter vos propres fonctions pour des tâches telles que la consultation de commandes et la planification.
Ce sont des résultats de benchmarks publiés, sans garantie pour votre déploiement. Testez vos propres accents, conditions de bruit, outils et parcours d’escalade avant d’utiliser l’agent avec des clients.
De quoi avez-vous besoin avant d’appeler l’API Grok Voice 3.0 ?
Créez un compte ou connectez-vous dans la console xAI, générez une clé API et vérifiez que votre compte dispose de l’accès et de crédits d’utilisation disponibles. Utilisez un terminal local ou un serveur de confiance pour l’exemple Python.
Python 3.11 ou version ultérieure et pip disponibles dans le même environnement.
Une clé API xAI valide stockée comme XAI_API_KEY.
Une connexion réseau permettant des connexions WebSocket sécurisées sortantes.
Un lecteur multimédia pour ouvrir le fichier WAV généré.
Générez une clé dans la console xAI. Stockez-la dans une variable d’environnement plutôt que de la coder en dur dans l’application.
Définissez la clé API pour le terminal Bash actuel.
export XAI_API_KEY="your_xai_api_key"
Sous Windows PowerShell :
Définissez la clé API pour la session PowerShell actuelle.
$env:XAI_API_KEY="your_xai_api_key"
Installez le client WebSocket dans votre environnement Python.
python -m pip install "websockets>=14,<18"
Exécutez les commandes restantes dans la même session de terminal. Si vous utilisez un environnement virtuel, activez-le avant d’installer le paquet.
Comment utiliser l’API Grok Voice 3.0 avec Python
L’API Realtime native utilise une connexion WebSocket. Contrairement aux complétions de chat textuelles ordinaires, elle échange des événements de session en cours et diffuse des segments audio pendant qu’une conversation est en cours.
Étape 1 : Sélectionner un modèle fixe et configurer la session
L’API accepte un nom de modèle versionné dans l’URL WebSocket. L’exemple utilise grok-voice-3.0 afin que la version demandée soit explicite. Un événement session.update définit la voix, le format audio et la gestion manuelle des tours ; attendez session.updated avant de soumettre l’invite.
Étape 2 : Envoyer du texte et récupérer la réponse parlée
Enregistrez le script suivant sous grok_voice_demo.py. Il soumet une invite textuelle, collecte des segments audio encodés en base64 et écrit un fichier WAV mono, 24 kHz, PCM 16 bits. Il s’arrête également en cas d’erreurs API, d’achèvement non réussi ou de réponse ne produisant aucun audio.
Créez une réponse parlée à partir d’une invite textuelle et enregistrez-la en tant que fichier WAV.
Étape 3 : Exécuter le script et vérifier le résultat
Exécutez l’exemple vocal Python.
python grok_voice_demo.py
Après une réponse réussie, le terminal affiche Saved grok_response.wav. Ouvrez ce fichier dans un lecteur multimédia et vérifiez que vous entendez une réponse complète à vitesse normale. Un fichier manquant ou illisible est une raison d’inspecter les événements retournés et la configuration audio avant d’ajouter davantage de fonctionnalités.
La référence des événements en temps réel décrit l’accusé de réception de session et le cycle de vie de la réponse utilisés ici. Le script attend la fin du tour avant d’écrire le fichier ; une application vocale interactive devrait lire les segments audio au fur et à mesure de leur arrivée.
Comment envoyer de l’audio à Grok Voice 3.0 ?
Audio enregistré avec fin de tour manuelle
Cet exemple utilise un fichier WAV mono, 24 kHz, PCM 16 bits. Grok Voice 3.0 prend également en charge d’autres taux d’échantillonnage PCM, μ-law, A-law et Opus. Le format effectif doit correspondre à la configuration session.update. Remplacez uniquement le bloc conversation.item.create dans le script précédent par l’extrait ci-dessous. Conservez l’appel response.create suivant et la boucle de réception existante.
Remplacez le bloc de message texte par un téléversement d’audio enregistré dans main().
with wave.open("request.wav", "rb") as source:
if (
source.getnchannels() != 1
or source.getsampwidth() != 2
or source.getframerate() != SAMPLE_RATE
or source.getcomptype() != "NONE"
):
raise ValueError("Use mono, 24 kHz, 16-bit PCM WAV audio.")
pcm = source.readframes(source.getnframes())
if len(pcm) < SAMPLE_RATE * 2 // 10:
raise ValueError("Use a spoken recording longer than 100 ms.")
for offset in range(0, len(pcm), 4800):
await ws.send(json.dumps({
"type": "input_audio_buffer.append",
"audio": base64.b64encode(pcm[offset:offset + 4800]).decode("ascii"),
}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
while (await receive_event(ws)).get("type") != "input_audio_buffer.committed":
pass
Indentez ce remplacement au même niveau que le bloc de message texte original, à l’intérieur du contexte WebSocket. Il envoie des échantillons PCM bruts depuis le fichier WAV, et non l’en-tête du conteneur WAV. Le premier script sélectionne explicitement la gestion de tour manuelle, donc la validation du buffer puis la demande de réponse sont des actions distinctes.
Capture micro en direct et lecture immédiate
Pour une conversation interactive, capturez l’audio en continu, convertissez-le au format d’entrée configuré et envoyez de courts segments tandis qu’une boucle de réception séparée gère les réponses. Sélectionnez server_vad pour la détection automatique des tours au lieu du mode manuel utilisé dans l’exemple de fichier enregistré. Évitez d’ajouter un second response.create lorsque le serveur crée déjà la réponse.
En cas d’interruption, arrêtez rapidement la lecture de l’audio de l’assistant en file d’attente. L’annulation réseau seule ne retire pas le son déjà mis en mémoire tampon par votre application. Gardez la file de lecture petite et suivez la quantité d’audio réellement entendue par l’auditeur afin que votre application maintienne un état de conversation cohérent.
Comment ajouter des outils à un agent Grok Voice 3.0 ?
Les applications peuvent exposer des outils tels que la consultation de commandes, la planification ou la vérification de compte. L’agent peut interpréter une demande parlée complexe, appeler une fonction autorisée et utiliser le résultat pour continuer. Cela est particulièrement utile lorsqu’un client demande plusieurs changements liés dans un seul appel.
L’API prend en charge les fonctions personnalisées et les outils gérés par le serveur. Pour une fonction personnalisée, votre application implémente l’action ; définir un outil ne connecte pas à lui seul le modèle à votre base de données.
Déclarez le nom de la fonction, la description et le schéma JSON des arguments dans session.tools.
Gérez response.function_call_arguments.done, analysez les arguments et validez l’autorisation de l’appelant avant d’exécuter la fonction.
Renvoyez le résultat sous forme d’événement conversation.item.create avec item.type défini sur function_call_output et le call_id correspondant.
Envoyez response.create après que les résultats de fonction requis ont été soumis. Si plusieurs appels arrivent ensemble, renvoyez tous leurs résultats avant de demander au modèle de continuer.
Commencez par un outil en lecture seule, tel que la vérification du statut de livraison d’une commande. Pour les actions qui modifient des réservations, émettent des remboursements ou passent des commandes, appliquez des contrôles d’identité, des confirmations et une protection contre les demandes en double dans l’application.
Comment utiliser Grok Voice 3.0 dans des applications navigateur et mobile
Utilisez des identifiants éphémères pour les connexions côté client. Votre serveur demande un jeton de courte durée avec sa clé API permanente et transmet le jeton au client. Authentifiez les requêtes vers votre propre point de terminaison de jeton et appliquez des limites d’usage afin qu’il ne devienne pas une passerelle sans restriction.
Maintenez le consentement micro, les contrôles d’enregistrement et l’état de connexion visibles dans l’interface. Gérez explicitement la perte de connexion : arrêtez la lecture obsolète, informez l’utilisateur que la connexion est en cours de rétablissement et évitez de rejouer des actions qui ont peut-être déjà abouti.
Comment dépanner les erreurs courantes de l’API Grok Voice 3.0
Échec d’authentification : confirmez que XAI_API_KEY est défini dans le terminal exécutant le script et que la clé appartient à un compte disposant de l’accès. Ne collez pas la clé dans les journaux ou messages de support.
Arguments inattendus de la bibliothèque cliente : vérifiez que pip a installé la version de websockets demandée dans l’environnement Python utilisé pour exécuter le script.
Aucune sortie audio : inspectez les événements d’erreur et response.done, confirmez que session.updated a accusé réception de la configuration et vérifiez qu’une réponse a été demandée pour le tour manuel.
Lecture déformée : comparez les octets effectifs avec le codec configuré, le taux d’échantillonnage, le nombre de canaux et l’en-tête WAV. Renommer un fichier MP3 en WAV ne le convertit pas.
Timeout : vérifiez l’accès réseau et l’état du service, puis inspectez le dernier événement réussi. Réessayez une connexion échouée séparément de toute action métier qui a pu déjà s’exécuter.
Quel budget prévoir pour les appels à l’API Grok Voice 3.0 ?
L’usage vocal et les intégrations personnalisées peuvent générer des frais distincts. Pour ce tutoriel, les tarifs publiés pertinents sont la session en temps réel et les entrées texte ; les produits de transcription autonome et de génération de parole sont des services distincts.
Session parole-à-parole : 0,08 $ par minute, soit 4,80 $ par heure.
Entrée texte pendant une session vocale : 0,004 $ par entrée texte.
Par exemple, 500 minutes facturables correspondent à 40 $ de frais de base pour la voix. Cette estimation exclut les entrées texte, les outils optionnels, la téléphonie et votre propre infrastructure. Commencez par de courtes sessions de test et fermez les connexions inactives lorsque la conversation se termine.
Conclusion
Commencez par un tour complet de l’API Grok Voice 3.0 : connectez-vous, configurez la session, soumettez une invite, recevez l’audio et lisez le résultat. Une fois ce parcours validé, ajoutez la parole enregistrée, puis construisez la capture micro et la lecture en streaming autour de cela. Introduisez des outils métier uniquement après que les parcours de conversation et de gestion des erreurs sont fiables.