Audio
MarkdownSynthèse vocale (TTS) et reconnaissance vocale (STT) au format OpenAI Audio.
Guide complet
https://api.ailoot.ai/v1/audio/speech# Synthèse vocale
curl https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "qwen-audio-3.0-tts-plus", "input": "Bonjour ! Voici un exemple de synthèse vocale.", "voice": "longanlingxin"}' \
--output speech.mp3
# Reconnaissance
curl https://api.ailoot.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-F model=qwen-asr \
-F file=@meeting.wav# Reconnaissance vocale
with open("meeting.wav", "rb") as f:
tr = client.audio.transcriptions.create(model="qwen-asr", file=f)
print(tr.text){
"text": "Bonjour, chers collègues. Commençons par le bilan de la semaine…"
}Autorisation
- Authorizationheaderobligatoire
Clé au format
Bearer sk-…. Les en-têtes suivants conviennent également :x-api-keyoux-goog-api-key.
Synthèse vocale : corps de la requête
- modelstringobligatoire
Modèle de synthèse vocale :
gemini-3.8-flash-tts,qwen-audio-3.0-tts-plus,speech-2.8-turbo,gemini-3.8-flash-lite-tts,speech-2.8-hd,gemini-3.1-flash-tts-preview,speech-2.6-turbo,speech-2.6-hd,speech-02-turbo,speech-02-hd. - inputstringobligatoire
Texte à lire. Pour les modèles MiniMax, moins de 10 000 caractères ; pour
qwen-audio-3.0-tts-plus— jusqu’à 600. - voicestring
Voix. Obligatoire pour les modèles MiniMax (
speech-2.8-hdet les autresspeech-…) : identifiant de voix MiniMax (lettres latines, chiffres,_et-, jusqu’à 128 caractères). Pourqwen-audio-3.0-tts-pluspar défautlonganlingxin, pour les modèles Gemini TTS :Kore. - response_formatstringfacultatif
MiniMax : uniquement
mp3;qwen-audio-3.0-tts-plus—mp3,wavoupcm; Gemini TTS :wavoujson(lien vers le fichier).
La réponse est un fichier audio (pour MiniMax : audio/mpeg). La facturation se fait par caractère de texte ou par token, comme indiqué dans le catalogue.
Reconnaissance vocale
https://api.ailoot.ai/v1/audio/transcriptions- filefileobligatoire
Fichier audio WAV au format
multipart/form-data.qwen-asr,qwen-asr-latestetqwen-audio-3.0-asr-flash: WAV PCM complet, non compressé, jusqu’à 5 minutes ; fichier d’environ 7,5 Mo au maximum (en base64, jusqu’à 10 Mo).asr-1.0: WAV PCM jusqu’à 500 secondes et 50 Mo.gemini-3.5-transcribe: WAV jusqu’à 64 Mo. - modelstringobligatoire
Modèle de reconnaissance vocale :
gemini-3.5-transcribe,qwen-audio-3.0-asr-flash,asr-1.0. - response_formatstringfacultatif
Uniquement
json(ou ne renseignez pas ce paramètre).
Le champ language n’est pas utilisé par ces modèles. Réponse : {"text": "…"}. La facturation dépend de la durée de l’enregistrement (secondes, minutes ou heures : chaque modèle a sa propre unité).
Voix en temps réel
Pour qwen-audio-3.0-realtime-plus ouvrez un WebSocket wss://api.ailoot.ai/v1/realtime?model=qwen-audio-3.0-realtime-plus avec l’en-tête Authorization: Bearer <API_KEY>. Transmettez la clé depuis le serveur : les clés passées dans la chaîne de requête ne sont pas acceptées. Attendez session.created avec le modèle choisi, puis envoyez les paramètres, le message et response.create. Voici trois trames textuelles JSON successives pour obtenir une réponse textuelle dans une session audio :
{"type":"session.update","session":{"modalities":["text"],"turn_detection":null,"max_history_turns":20,"instructions":"Soyez bref."}}{"type":"conversation.item.create","item":{"type":"message","role":"user","content":[{"type":"input_text","text":"Dites oui."}]}}{"type":"response.create"}Lisez les événements de réponse jusqu’à response.done et ses données finales de consommation (usage) ; les erreurs sont transmises par l’événement error. La facturation repose sur les tokens de texte et d’audio de chaque réponse confirmée. Entrée audio : événement input_audio_buffer.append avec audio — base64 PCM16 mono 16 kHz ; puis input_audio_buffer.commit et response.create. La sortie audio est en PCM16 mono 24 kHz. Les trames binaires ne sont pas acceptées dans cette session.
Événements clients pris en charge : session.update, input_audio_buffer.append/commit/clear, response.create/cancel, conversation.item.create/retrieve/delete. Les éléments de conversation se limitent aux messages et au texte ; les outils d’appel de fonctions, la recherche web et voiceprint ne sont pas pris en charge. Limites de la session : 600 secondes, 20 réponses, 20 tours de conversation dans l’historique, 2000 octets pour instructions et 8000 octets de texte client. Le délai d’inactivité dépend de la configuration (60 secondes par défaut).