DocumentationOuvrir Moon AI
Parcourir la documentation

Audio (voix et transcription)

Référence de POST /v1/audio/speech, qui lit un texte à voix haute, et de POST /v1/audio/transcriptions, qui transcrit un enregistrement, au format d’OpenAI.

Sur cette page

Deux points d’accès au format de l’API Audio d’OpenAI : l’un transforme un texte en voix, l’autre un enregistrement en texte. Le son envoyé est lu en mémoire et n’est jamais écrit sur nos serveurs. Moon Blur ne s’applique ni au texte lu ni à l’audio (X-Moon-Blur: not_applied).

Lire un texte à voix hauteLien vers la section Lire un texte à voix haute

HTTP
POST https://api.realmoon.ai/v1/audio/speech
  • Authentification : clé sk-moon-… avec la portée inference (voir Authentification).
  • Corps : JSON, 256 Ko au plus.
  • Réponse : le fichier audio lui-même.

ParamètresLien vers la section Paramètres

ParamètreTypeObligatoireDescription
modelchaîneouiUn modèle de type speech de GET /v1/models?type=speech.
inputchaîneouiLe texte à lire, 4 096 caractères au plus. Découpez un texte plus long en plusieurs requêtes.
voicechaînenonIdentifiant d’une voix du modèle : lettres, chiffres, espaces et _ . : ( ) + -, 128 caractères au plus. Vide : la voix par défaut du modèle (default_voice dans /v1/models).
response_formatchaînenonmp3 (par défaut). Les voix Gemini acceptent aussi wav et pcm (response_formats dans /v1/models).
instructionschaînenonStyle de lecture (ton, rythme), 500 caractères au plus. Voix Gemini seulement.
speednombrenonSeule la valeur 1 est acceptée.
languagechaînenonAccepté, sans effet.

Tout autre paramètre est refusé avec 400 unknown_parameter.

ExempleLien vers la section Exemple

cURL
curl https://api.realmoon.ai/v1/audio/speech \
  -H "Authorization: Bearer $MOONAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "mistralai/voxtral-mini-tts-2603", "voice": "fr_marie_neutral", "input": "Bonjour et bienvenue."}' \
  -o bonjour.mp3
Python
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.realmoon.ai/v1", api_key=os.environ["MOONAI_API_KEY"])

with client.audio.speech.with_streaming_response.create(
    model="mistralai/voxtral-mini-tts-2603",
    voice="fr_marie_neutral",
    input="Bonjour et bienvenue.",
) as response:
    print("Crédits :", response.headers.get("x-moon-credits"))
    response.stream_to_file("bonjour.mp3")
JavaScript
import fs from 'node:fs';
import OpenAI from 'openai';

const client = new OpenAI({ baseURL: 'https://api.realmoon.ai/v1', apiKey: process.env.MOONAI_API_KEY });

const speech = await client.audio.speech.create({
  model: 'mistralai/voxtral-mini-tts-2603',
  voice: 'fr_marie_neutral',
  input: 'Bonjour et bienvenue.',
});
fs.writeFileSync('bonjour.mp3', Buffer.from(await speech.arrayBuffer()));

RéponseLien vers la section Réponse

Le corps de la réponse est le fichier audio :

response_formatContent-TypeContenu
mp3audio/mpegMP3
wavaudio/wavWAV, 16 bits, 24 kHz, mono
pcmaudio/pcmPCM brut, 16 bits, 24 kHz, mono
En-têteValeur
X-Moon-CreditsCrédits facturés pour la requête.
X-Moon-Request-IdIdentifiant de la requête, pour /v1/generation.
X-Moon-Prompt-Storagenone.
X-Moon-Blurnot_applied.

Modèles de voixLien vers la section Modèles de voix

Liste au 5 novembre 2026 ; la liste à jour, avec les prix, vient de GET /v1/models?type=speech.

ModèleVoix par défautFormats
mistralai/voxtral-mini-tts-2603fr_marie_neutralmp3
mistralai/voxtral-mini-tts-3-0aucunemp3
microsoft/mai-voice-2.1-flashfr-FR-Soleil:MAI-Voice-2.1-Flashmp3
microsoft/mai-voice-2.1aucunemp3
elevenlabs/eleven-flash-v2.5, eleven-multilingual-v2, eleven-v3aucunemp3
fish-audio/s2.1-pro, deepgram/aura-2, qwen/qwen-audio-3.0-tts-flash, hexgrad/kokoro-82maucunemp3
google/gemini-3.8-flash-lite-tts, google/gemini-3.8-flash-ttsSulafatmp3, wav, pcm

CoûtsLien vers la section Coûts

La plupart des voix sont facturées au caractère du texte lu (billing: per_character). Les voix Gemini sont facturées sur le texte envoyé et sur la durée du son réellement produit. La requête retient le prix du texte avant l’appel ; une requête qui échoue ou que notre délai coupe ne coûte rien.

ErreursLien vers la section Erreurs

HTTPcodeSignification
400missing_required_parametermodel ou input absent.
400unknown_parameterParamètre inconnu.
400unsupported_valueresponse_format non proposé par le modèle.
400unsupported_parameterspeed différent de 1, instructions sur une voix qui n’est pas Gemini, ou voix, langue ou format refusés par le modèle (avec une indication).
400string_above_max_lengthTexte de plus de 4 096 caractères.
400nullvoice mal formé, instructions de plus de 500 caractères, corps JSON invalide.
404model_not_foundModèle inconnu ou qui ne sert pas ce point d’accès.
413request_too_largeCorps de plus de 256 Ko.
429too_many_concurrentDéjà 8 lectures en cours pour ce workspace.
429upstream_rate_limitedLe modèle est surchargé : réessayez après Retry-After (10 secondes).
502, 504upstream_error, upstream_timeoutLe modèle a échoué, n’a pas produit de son, ou n’a pas répondu à temps.

Transcrire un enregistrementLien vers la section Transcrire un enregistrement

HTTP
POST https://api.realmoon.ai/v1/audio/transcriptions
  • Authentification : clé sk-moon-… avec la portée inference.
  • Corps : multipart/form-data seulement, avec l’en-tête Content-Length. Le fichier va dans le champ file.
  • Réponse : la transcription, en JSON ou en texte.

ParamètresLien vers la section Paramètres

ChampTypeObligatoireDescription
filefichierouiL’enregistrement : wav, mp3, flac, m4a (ou mp4), ogg, webm ou aac. 25 Mo et 20 minutes au plus.
modelchaîneouiUn modèle de type transcription de GET /v1/models?type=transcription.
languagechaînenonCode de langue ISO 639-1 (fr, en…). Améliore la transcription.
promptchaînenonContexte ou vocabulaire attendu (noms propres, sigles), 1 000 caractères au plus.
response_formatchaînenonjson (par défaut), text ou verbose_json.
temperature, timestamp_granularities[]nonAcceptés, sans effet.

Tout autre champ est refusé avec 400 unknown_parameter. Un enregistrement de plus de 20 minutes est refusé (400 audio_too_long) : découpez-le en morceaux. La durée d’un fichier compressé est comptée au moins d’après sa taille.

ExempleLien vers la section Exemple

cURL
curl https://api.realmoon.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $MOONAI_API_KEY" \
  -F model=mistralai/voxtral-mini-transcribe \
  -F language=fr \
  -F file=@reunion.m4a
Python
with open("reunion.m4a", "rb") as audio:
    transcript = client.audio.transcriptions.create(
        model="mistralai/voxtral-mini-transcribe",
        file=audio,
        language="fr",
    )
print(transcript.text)
JavaScript
const transcript = await client.audio.transcriptions.create({
  model: 'mistralai/voxtral-mini-transcribe',
  file: fs.createReadStream('reunion.m4a'),
  language: 'fr',
});
console.log(transcript.text);

RéponseLien vers la section Réponse

response_format: json
{
  "text": "Bonjour à tous, on commence par le point budget.",
  "usage": { "type": "duration", "seconds": 312.4, "credits": 0 }
}

La valeur de credits est fictive.

ChampTypeDescription
textchaîneLe texte transcrit.
usage.typechaîneToujours duration.
usage.secondsnombreDurée de l’audio prise en compte, en secondes.
usage.creditsentierCrédits facturés.
taskchaîneAvec verbose_json : transcribe.
languagechaîne ou nullAvec verbose_json : la langue détectée ou demandée.
durationnombre ou nullAvec verbose_json : la durée en secondes.

Avec response_format: "text", la réponse est le texte seul, en text/plain. Dans tous les cas, l’en-tête X-Moon-Credits donne les crédits facturés, et X-Moon-Request-Id l’identifiant de la requête.

Modèles de transcriptionLien vers la section Modèles de transcription

Liste au 5 novembre 2026 ; la liste à jour, avec les prix à la minute, vient de GET /v1/models?type=transcription.

  • mistralai/voxtral-mini-transcribe, mistralai/voxtral-mini-transcribe-3-0, mistralai/voxtral-small-transcribe-3-0
  • openai/whisper-large-v3-turbo, openai/whisper-large-v3, openai/gpt-4o-mini-transcribe, openai/gpt-4o-transcribe
  • elevenlabs/scribe-v2, deepgram/nova-3, assemblyai/universal-3-6-pro
  • nvidia/parakeet-tdt-0.6b-v3, qwen/qwen3-asr-1.7b

CoûtsLien vers la section Coûts

La transcription est facturée au coût réel annoncé par le fournisseur, selon la durée de l’audio (à défaut, au prix de la liste). Avant l’appel, la requête retient au moins le prix d’une minute, avec une marge. Une transcription qui échoue ne coûte rien.

ErreursLien vers la section Erreurs

HTTPcodeSignification
400invalid_content_typeRequête envoyée autrement qu’en multipart/form-data.
400missing_required_parametermodel ou file absent.
400unknown_parameterChamp inconnu.
400unsupported_valueresponse_format inconnu.
400unsupported_formatFormat audio non reconnu.
400audio_too_longEnregistrement de plus de 20 minutes.
400unsupported_parameterLangue ou format refusés par le modèle (avec une indication).
400nulllanguage mal formé, prompt de plus de 1 000 caractères, fichier vide, champ de fichier inattendu.
404model_not_foundModèle inconnu ou qui ne sert pas ce point d’accès.
411length_requiredEnvoi sans en-tête Content-Length.
413file_too_large, request_too_largeFichier de plus de 25 Mo, ou corps trop volumineux.
429too_many_concurrentDéjà 4 transcriptions en cours pour ce workspace.
429upstream_rate_limitedLe modèle est surchargé : réessayez après Retry-After (10 secondes).
502, 504upstream_error, upstream_timeoutLe modèle a échoué ou n’a pas répondu à temps.

Les erreurs de clé, de solde et de plafonds, communes aux deux points d’accès, sont dans Erreurs.

LimitesLien vers la section Limites

LimiteVoixTranscription
Taille4 096 caractères, corps de 256 Kofichier de 25 Mo, 20 minutes d’audio
Requêtes en cours par workspace84
Attente de la réponse du modèle85 secondes au plus85 secondes au plus

Voir aussiLien vers la section Voir aussi

  • Modèles : les champs default_voice, response_formats et max_file_mb.
  • Confidentialité : ce que Moon AI garde des requêtes audio.

Moon AI

Moon AI en action

0:00

À découvrir

Captures de chat.realmoon.ai du 29 octobre 2026, avec des données fictives.

Moon AI

Vos préférences

Aucun suivi publicitaire.

Ce site ne dépose aucun cookie publicitaire ni cookie de mesure d’audience : notre serveur compte les visites sans cookie. Votre thème et la fermeture de l’information sur les cookies sont mémorisés sur cet appareil.

L’application Moon AI possède ses propres réglages de confidentialité.