Aller au contenu principal
Leçon 7 sur 18 · API Temps Réel et Agents Vocaux

Formats supportés et langues

Leçon 7 sur 18 Mis à jour le 3 novembre 2026 Développeur
Sur cette page
  1. Formats supportés et langues
  2. Formats audio acceptés
  3. Langues supportées
  4. Gestion du multilingue
  5. Facturation
  6. Points clés à retenir

Mise à jour du 2 novembre 2026 — modèles audio. Plusieurs modèles de ce cours sont dépréciés : tts-1, tts-1-hd et gpt-4o-mini-tts s’arrêtent le 6 janvier 2027 (remplaçant indiqué : gpt-realtime-2.1-mini, que le guide TTS d’OpenAI déclare non pris en charge par /v1/audio/speech : la migration de la synthèse vocale passe par l’API Realtime) ; gpt-realtime, gpt-4o-realtime et les anciens modèles audio le 20 janvier 2027 (gpt-realtime-2.1, gpt-realtime-2.1-mini, gpt-audio-1.5) ; whisper-1, gpt-4o-transcribe et /v1/audio/translations le 26 février 2027 (gpt-transcribe, gpt-live-transcribe, v1/realtime/translations). Pour la voix full-duplex, GPT-Live 1 est disponible dans l’API depuis le 10 septembre 2026. Leçon corrigée le 3 novembre 2026 : exemples passés de whisper-1 à gpt-transcribe (paramètre languages), nombre de langues de Whisper corrigé (98 et non « plus de 50 », d’après le guide File transcription), méthode multilingue en deux passes remplacée par les indices de langues de gpt-transcribe, tarif sourcé. Sources : File transcription · GPT-Transcribe · Create transcription.

Formats supportés et langues

Les modèles de transcription d’OpenAI acceptent une large variété de formats audio et prennent en charge des dizaines de langues. Choisir le bon format d’entrée et configurer correctement la langue impacte directement la qualité de transcription et les coûts. Cette leçon détaille les options disponibles et les meilleures pratiques.

Formats audio acceptés

D’après sa référence, l’endpoint de transcription accepte les formats flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav et webm, avec un nom de fichier portant l’extension. Les plus courants :

Format Extension Compression Usage recommandé
MP3 .mp3 Lossy, bon ratio Podcasts, enregistrements vocaux
MP4 / M4A .mp4, .m4a AAC lossy Vidéos, enregistrements mobiles
WAV .wav Non compressé Enregistrements studio
WebM .webm Opus lossy Enregistrements navigateur
FLAC .flac Lossless Qualité maximale sans perte
OGG .ogg Vorbis/Opus Applications open source

La taille maximale par fichier est de 25 Mo. Pour un MP3 à 128 kbps, cela représente environ 25 minutes d’audio. Pour du WAV non compressé, c’est beaucoup moins.

Optimiser la taille des fichiers

from pydub import AudioSegment

def optimiser_pour_transcription(input_path: str, output_path: str):
    """Convertit un fichier audio en MP3 léger, suffisant pour la parole."""
    audio = AudioSegment.from_file(input_path)

    # Convertir en mono 16kHz (suffisant pour la parole)
    audio = audio.set_channels(1)
    audio = audio.set_frame_rate(16000)

    # Exporter en MP3 64kbps (bon compromis qualité/taille pour la voix)
    audio.export(output_path, format="mp3", bitrate="64k")

    return output_path

Langues supportées

whisper-1 couvre 98 langues, avec une précision qui varie selon la langue. gpt-transcribe détecte la langue seul ; si vous savez lesquelles attendre, indiquez-les dans languages : codes ISO 639-1 (fr, en, es…), certains codes ISO 639-3 (eng, spa, yue, cmn) et les variantes régionales du chinois (zh-cn, zh-tw, zh-hk). Un code non pris en charge ou mal formé fait rejeter la requête.

# Détection automatique (par défaut)
result = client.audio.transcriptions.create(
    model="gpt-transcribe",
    file=audio_file,
)
print(result.languages)  # langues reconnues avec assez de certitude

# Langues attendues
result = client.audio.transcriptions.create(
    model="gpt-transcribe",
    file=audio_file,
    languages=["fr"],
)

languages est une liste, propre à gpt-transcribe ; les anciens modèles prennent une seule langue dans language. N’envoyez jamais les deux.

Langues européennes courantes

Les codes ISO 639-1 les plus utilisés en Europe :

EUROPEAN_LANGUAGES = {
    "fr": "Français",
    "en": "Anglais",
    "de": "Allemand",
    "es": "Espagnol",
    "it": "Italien",
    "pt": "Portugais",
    "nl": "Néerlandais",
    "pl": "Polonais",
    "ro": "Roumain",
    "sv": "Suédois",
    "da": "Danois",
    "fi": "Finnois",
    "el": "Grec",
    "cs": "Tchèque",
    "hu": "Hongrois",
    "bg": "Bulgare",
    "hr": "Croate",
    "sk": "Slovaque",
    "sl": "Slovène",
    "et": "Estonien",
    "lv": "Letton",
    "lt": "Lituanien",
}

Gestion du multilingue

Une réunion internationale passe d’une langue à l’autre. gpt-transcribe est conçu pour ce cas : sa fiche cite les indices de plusieurs langues, l’audio multilingue et l’alternance de langues au sein d’une même phrase. Donnez-lui toutes les langues attendues, en un seul passage :

with open("reunion-internationale.mp3", "rb") as f:
    result = client.audio.transcriptions.create(
        model="gpt-transcribe",
        file=f,
        languages=["fr", "en", "de"],
    )

print(result.text)
print("Langues reconnues :", result.languages)

L’ancienne méthode en deux passes, qui détectait la langue dominante avec whisper-1 en verbose_json puis retranscrivait en la forçant, n’a plus lieu d’être : elle imposait une seule langue à tout l’enregistrement, et whisper-1 s’arrête le 26 février 2027.

Facturation

La transcription est facturée à la durée d’audio traitée : 0,0045 $ la minute avec gpt-transcribe, d’après sa fiche (novembre 2026). Le format du fichier n’influence donc pas le coût : seule la durée compte.

Pour réduire les coûts sur de grands volumes :

from pydub import AudioSegment
from pydub.silence import split_on_silence


def preprocess_for_cost(file_path: str) -> str:
    """Supprime les silences pour réduire la durée facturée."""
    audio = AudioSegment.from_file(file_path)

    # Supprimer les silences supérieurs à 1 seconde
    chunks = split_on_silence(
        audio,
        min_silence_len=1000,
        silence_thresh=-40,
        keep_silence=200  # Garder 200ms de silence pour la lisibilité
    )

    if not chunks:
        return file_path

    combined = chunks[0]
    for chunk in chunks[1:]:
        combined += chunk

    output_path = "/tmp/optimized_audio.mp3"
    combined.export(output_path, format="mp3", bitrate="64k")
    return output_path

Points clés à retenir

  • L’endpoint de transcription accepte FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV et WebM, avec une limite de 25 Mo par fichier
  • Avec gpt-transcribe, la liste languages indique les langues attendues ; la réponse renvoie les langues reconnues
  • Le MP3 mono 16 kHz à 64 kbps offre le meilleur compromis qualité/taille pour la voix
  • La facturation est à la minute d’audio : supprimer les silences réduit les coûts
  • Pour le multilingue, un seul passage avec toutes les langues attendues dans languages remplace l’ancienne méthode en deux passes