Aller au contenu principal

Traduction automatique

Traduction automatique

L’API Whisper ne se limite pas à la transcription : elle propose un endpoint dédié à la traduction audio. Vous envoyez un fichier audio dans n’importe quelle langue supportée, et Whisper produit une transcription directement en anglais. C’est un outil puissant pour internationaliser des contenus audio sans passer par une étape intermédiaire.

L’endpoint de traduction

La traduction utilise l’endpoint /v1/audio/translations au lieu de /v1/audio/transcriptions. La syntaxe est quasiment identique :

from openai import OpenAI

client = OpenAI()

# Traduire un fichier audio français → anglais
with open("reunion_fr.mp3", "rb") as audio_file:
    translation = client.audio.translations.create(
        model="whisper-1",
        file=audio_file
    )

print(translation.text)
# → "Welcome to today's meeting. We will discuss Q4 results."

La traduction est toujours vers l’anglais. C’est une limitation actuelle de l’API : il n’est pas possible de traduire vers une autre langue cible directement.

Transcription vs traduction : quand utiliser quoi ?

Cas d'usage Endpoint Résultat
Sous-titrer un podcast FR transcriptions Texte en français
Sous-titrer un podcast FR en anglais translations Texte en anglais
Analyser un appel client DE translations Texte en anglais pour analyse
Archiver un entretien ES transcriptions (language="es") Texte en espagnol

Pipeline de traduction multilingue

Pour traduire vers une langue autre que l’anglais, combinez Whisper avec la Responses API :

async def translate_audio(file_path: str, target_language: str) -> str:
    """Traduit un fichier audio vers n'importe quelle langue."""
    # Étape 1 : Whisper traduit en anglais
    with open(file_path, "rb") as f:
        english_text = client.audio.translations.create(
            model="whisper-1",
            file=f
        ).text

    # Étape 2 : GPT traduit de l'anglais vers la langue cible
    response = client.responses.create(
        model="gpt-4o-mini",
        input=[{
            "role": "user",
            "content": f"Traduisez ce texte en {target_language}. "
                       f"Gardez le même ton et le même style.\n\n{english_text}"
        }]
    )

    return response.output_text

# Utilisation
texte_allemand = await translate_audio("reunion_fr.mp3", "allemand")

Optimiser la qualité du pipeline

Pour une traduction de meilleure qualité, passez d’abord par la transcription dans la langue source, puis traduisez avec le contexte :

async def translate_audio_hq(file_path: str, source_lang: str, target_lang: str) -> dict:
    """Pipeline de traduction haute qualité en deux passes."""
    # Passe 1 : transcription fidèle dans la langue source
    with open(file_path, "rb") as f:
        original = client.audio.transcriptions.create(
            model="whisper-1",
            file=f,
            language=source_lang,
            response_format="verbose_json"
        )

    # Passe 2 : traduction par GPT avec contexte
    response = client.responses.create(
        model="gpt-4o-mini",
        input=[
            {"role": "system", "content": (
                f"Vous êtes un traducteur professionnel {source_lang}{target_lang}. "
                "Produisez une traduction naturelle et idiomatique."
            )},
            {"role": "user", "content": original.text}
        ]
    )

    return {
        "source_language": source_lang,
        "target_language": target_lang,
        "original_text": original.text,
        "translated_text": response.output_text,
        "audio_duration": original.duration
    }

Traduction en temps réel avec la Realtime API

Pour une traduction en direct (interprétation simultanée), vous pouvez combiner la Realtime API avec des instructions de traduction :

await ws.send(json.dumps({
    "type": "session.update",
    "session": {
        "modalities": ["text", "audio"],
        "instructions": (
            "Vous êtes un interprète simultané français-anglais. "
            "L'utilisateur parle en français. "
            "Traduisez immédiatement en anglais à voix haute. "
            "Ne commentez pas, ne résumez pas, traduisez fidèlement."
        ),
        "voice": "echo",
        "input_audio_transcription": {"model": "whisper-1"}
    }
}))

Cette approche utilise la Realtime API pour la conversation temps réel, avec Whisper intégré pour la transcription de l’entrée audio. Le modèle reçoit la transcription et génère la traduction vocalement.

Points clés à retenir

  • L’endpoint /v1/audio/translations traduit l’audio de n’importe quelle langue vers l’anglais
  • Pour d’autres langues cibles, combinez Whisper avec la Responses API dans un pipeline en deux étapes
  • La transcription dans la langue source puis traduction par GPT donne une meilleure qualité que la traduction directe
  • La Realtime API peut servir d’interprète simultané avec les bonnes instructions système
  • La facturation de la traduction est identique à celle de la transcription : à la minute d’audio