For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Transcription de fichiers

Convertissez la parole enregistrée en texte.

Utilisez la transcription de fichiers lorsque vous disposez d’un enregistrement terminé ou d’une requête audio de durée limitée. Envoyez l’audio pour recevoir une transcription finale, ou recevez le texte en streaming pendant que le modèle traite le fichier.

Commencez avec gpt-transcribe. Ce modèle est recommandé pour transcrire la parole enregistrée dans sa langue d’origine. Utilisez un modèle spécialisé uniquement si vous avez besoin d’identifier les locuteurs, d’obtenir des horodatages au niveau des mots, de produire des formats de sous-titres ou de traduire en anglais.

Les fichiers peuvent atteindre 25 Mo. Les formats d’entrée pris en charge sont mp3, mp4, mpeg, mpga, m4a, wav et webm.

Pour l’audio reçu en continu depuis un microphone, un appel ou un flux multimédia, utilisez la transcription en temps réel.

Démarrage rapide

Transcriptions

Envoyez le fichier audio à /v1/audio/transcriptions avec gpt-transcribe :

Transcrivez un fichier audio
from openai import OpenAI

client = OpenAI()
audio_file = open("audio.wav", "rb")

transcription = client.audio.transcriptions.create(
    model="gpt-transcribe", file=audio_file
)

print(transcription.text)

Le modèle renvoie la transcription et les langues détectées au format JSON :

{
  "text": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

Lorsque le modèle ne peut pas déterminer la langue de manière fiable, il renvoie "languages": []. Consultez la référence de l’API Audio pour connaître l’ensemble des champs de requête et de réponse.

Ajoutez du contexte à la transcription

Utilisez prompt, keywords et languages avec gpt-transcribe pour améliorer la transcription des termes spécialisés et des enregistrements audio multilingues :

Ajoutez du contexte et des indications de langue
from openai import OpenAI

client = OpenAI()

with open("meeting.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-transcribe",
        file=audio_file,
        prompt="A customer support call about a premium plan and account AC-42.",
        extra_body={
            "keywords": ["premium plan", "AC-42", "billing"],
            "languages": ["en", "fr"],
        },
    )

print(transcription.text)
  • Utilisez prompt pour fournir du contexte non structuré sur l’enregistrement.
  • Utilisez keywords pour indiquer les termes exacts que vous vous attendez à entendre.
  • Utilisez languages pour indiquer les langues attendues en entrée.

Les mots-clés sont des indications et ne doivent pas nécessairement figurer dans la transcription. Incluez uniquement des termes pertinents et vérifiez s’ils améliorent la précision sans faire apparaître de termes qui n’ont pas été prononcés.

Pour gpt-transcribe, languages remplace le champ au singulier language. N’envoyez pas les deux champs. Gardez chaque mot-clé sur une seule ligne, sans inclure <, >, de retour chariot ni de saut de ligne. L’API rejette la requête entière lorsqu’elle rencontre l’un de ces caractères ou lorsque prompt dépasse la limite de longueur du modèle.

Diarisation des locuteurs

Utilisez gpt-4o-transcribe-diarize uniquement si vous avez besoin de déterminer qui parle dans les différentes parties d’un enregistrement. Ce modèle spécialisé dans l’attribution de segments aux locuteurs n’est pas le modèle recommandé pour la transcription courante de fichiers.

Demandez le format de réponse diarized_json pour recevoir des segments accompagnés des métadonnées speaker, start et end. Pour un enregistrement audio de plus de 30 secondes, définissez chunking_strategy sur "auto" ou sur une configuration de détection de l’activité vocale.

Vous pouvez également fournir jusqu’à quatre courts extraits audio de référence avec known_speaker_names[] et known_speaker_references[] pour associer les segments à des locuteurs connus. Fournissez des extraits de référence de 2 à 10 secondes dans l’un des formats d’entrée pris en charge pour l’envoi du fichier audio principal ; encodez-les sous forme d’URL de données lorsque vous utilisez des données de formulaire multipart.

Effectuez la diarisation d’un enregistrement de réunion
import base64
from openai import OpenAI

client = OpenAI()


def to_data_url(path: str) -> str:
    with open(path, "rb") as fh:
        return "data:audio/wav;base64," + base64.b64encode(fh.read()).decode("utf-8")


with open("meeting.wav", "rb") as audio_file:
    transcript = client.audio.transcriptions.create(
        model="gpt-4o-transcribe-diarize",
        file=audio_file,
        response_format="diarized_json",
        chunking_strategy="auto",
        extra_body={
            "known_speaker_names": ["agent"],
            "known_speaker_references": [to_data_url("agent.wav")],
        },
    )

for segment in transcript.segments:
    print(segment.speaker, segment.text, segment.start, segment.end)

Lorsque stream=true, les réponses avec attribution des locuteurs émettent des événements transcript.text.segment à chaque segment terminé. Les événements transcript.text.delta incluent un champ segment_id, mais les deltas ne contiennent pas d’attributions partielles aux locuteurs. Le modèle attribue un locuteur uniquement lorsqu’il finalise le segment.

L’attribution des locuteurs est disponible via /v1/audio/transcriptions. Elle n’est pas prise en charge dans les sessions de transcription en temps réel.

Traductions

Pour traduire en anglais un enregistrement audio terminé, utilisez /v1/audio/translations avec whisper-1. Contrairement à la transcription, qui conserve la langue d’origine de l’enregistrement, ce point de terminaison renvoie du texte en anglais.

Traduisez un enregistrement audio
from openai import OpenAI

client = OpenAI()
audio_file = open("german.wav", "rb")

translation = client.audio.translations.create(
    model="whisper-1",
    file=audio_file,
)

print(translation.text)

Pour un enregistrement audio dans une autre langue, la réponse contient la traduction en anglais :

Hello, my name is Wolfgang and I come from Germany. Where are you heading today?

Ce point de terminaison prend uniquement en charge la traduction vers l’anglais.

Langues prises en charge

Utilisez languages avec gpt-transcribe lorsque vous connaissez les langues attendues en entrée. Les formats de codes de langue pris en charge comprennent :

  • Les codes ISO 639-1, tels que en, es et fr.
  • Certains codes ISO 639-3, tels que eng, spa, yue et cmn.
  • Les codes régionaux pour zh, tels que zh-cn, zh-tw et zh-hk.

L’API rejette les codes de langue non pris en charge ou mal formatés. La réponse indique également toutes les langues que le modèle peut détecter de manière fiable.

Pour whisper-1, consultez la liste des langues de Whisper. Whisper prend en charge 98 langues, mais la précision varie selon la langue. Les modèles existants qui acceptent une seule indication de langue utilisent language au lieu de languages.

Horodatages

Utilisez whisper-1 si vous avez besoin d’horodatages au niveau des mots ou des segments. Le paramètre timestamp_granularities[] renvoie des données d’horodatage structurées pour le sous-titrage et le montage vidéo.

Options d’horodatage
from openai import OpenAI

client = OpenAI()
audio_file = open("speech.wav", "rb")

transcription = client.audio.transcriptions.create(
    file=audio_file,
    model="whisper-1",
    response_format="verbose_json",
    timestamp_granularities=["word"],
)

print(transcription.words)

Le paramètre timestamp_granularities[] est uniquement pris en charge par whisper-1.

Enregistrements plus longs

L’API Transcriptions accepte les fichiers jusqu’à 25 Mo. Pour les enregistrements plus volumineux, utilisez un format audio compressé ou découpez le fichier en morceaux de 25 Mo maximum. Évitez de couper au milieu d’une phrase, car cela peut supprimer du contexte et réduire la précision.

Pour cela, vous pouvez notamment utiliser le package Python open source PyDub afin de découper l’audio :

from pydub import AudioSegment

song = AudioSegment.from_wav("good_morning.wav")

# PyDub handles time in milliseconds
ten_minutes = 10 * 60 * 1000

first_10_minutes = song[:ten_minutes]

first_10_minutes.export("good_morning_10.wav", format="wav")

OpenAI ne fournit aucune garantie quant à la facilité d’utilisation ou à la sécurité de logiciels tiers tels que PyDub.

Conception de prompts

Utilisez un prompt pour améliorer la reconnaissance des noms, des acronymes, de la mise en forme ou du vocabulaire propre à l’enregistrement. Avec gpt-transcribe, combinez le prompt avec les paramètres keywords et languages présentés dans la section Ajoutez du contexte à la transcription.

Les intégrations existantes de gpt-4o-transcribe et gpt-4o-mini-transcribe prennent également en charge les prompts. gpt-4o-transcribe-diarize ne prend pas en charge les prompts.

Les prompts sont notamment utiles dans les cas suivants :

  • Transcription correcte des noms de produits, des termes techniques et des acronymes.
  • Reprise du contexte d’un segment précédent d’un enregistrement long.
  • Conservation de la ponctuation, des majuscules et des mots de remplissage.
  • Choix du système d’écriture à privilégier pour une langue.

Avec whisper-1, les prompts sont limités à 224 tokens et offrent moins de contrôle qu’avec le modèle de transcription recommandé. Consultez Amélioration de la fiabilité si votre workflow nécessite Whisper.

Transcriptions en streaming

La transcription de fichiers permet de recevoir du texte partiel en streaming pendant que le modèle traite un enregistrement terminé. Aucune session Realtime n’est nécessaire.

Transcription en streaming d’un enregistrement audio terminé

Définissez stream=true avec gpt-transcribe. L’API Transcriptions renvoie des événements de transcription à mesure que le modèle transcrit chaque partie de l’enregistrement.

Recevez les transcriptions en streaming
from openai import OpenAI

client = OpenAI()
audio_file = open("speech.wav", "rb")

stream = client.audio.transcriptions.create(
    model="gpt-transcribe",
    file=audio_file,
    stream=True,
)

for event in stream:
    print(event)

Le modèle émet des événements transcript.text.delta à mesure qu’il transcrit l’audio, puis renvoie la transcription complète dans un événement final transcript.text.done. Pour une transcription avec identification des locuteurs utilisant response_format="diarized_json", le modèle de diarisation émet également un événement transcript.text.segment chaque fois qu’il finalise un segment.

Avec gpt-transcribe, l’événement final inclut également les langues détectées :

{
  "type": "transcript.text.done",
  "text": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

Les intégrations existantes utilisant gpt-4o-transcribe, gpt-4o-mini-transcribe et gpt-4o-transcribe-diarize prennent également en charge la transcription de fichiers en streaming. whisper-1 ne la prend pas en charge.

Transcription en streaming d’un enregistrement audio en cours

Pour de l’audio en direct provenant d’un microphone, d’un appel ou d’un flux multimédia, consultez le guide Transcription en temps réel plutôt que la procédure de streaming de fichiers ci-dessus. Ce guide présente le fonctionnement actuel des sessions de transcription et la procédure recommandée pour le temps réel avec gpt-live-transcribe.

Amélioration de la fiabilité

Si vous utilisez whisper-1 pour les horodatages, les sous-titres ou la traduction, ces techniques peuvent améliorer la reconnaissance des mots rares et des acronymes. Pour de nouveaux usages de transcription généraliste, commencez plutôt par gpt-transcribe et utilisez le contexte de transcription.