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

Transcription de fichiers audio

Convertissez la parole enregistrée en texte.

Utilisez la transcription de fichiers si vous disposez d’un enregistrement terminé ou si votre requête porte sur un extrait audio de durée délimitée. Envoyez l’audio pour recevoir la transcription finale ou obtenez le texte au fur et à mesure que le modèle traite le fichier.

Commencez par gpt-transcribe. C’est le modèle recommandé pour transcrire la parole dans la langue de l’enregistrement. Les exemples spécialisés ci-dessous utilisent des modèles obsolètes pour identifier les locuteurs, horodater les mots et produire différents formats de sous-titres.

whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-transcribe-diarize et /v1/audio/translations sont obsolètes et seront mis hors service le 26 février 2027. Consultez l’avis de retrait et choisissez un workflow de transcription actuel. Les exemples spécialisés ci-dessous décrivent les fonctionnalités disponibles pour les intégrations existantes jusqu’à cette date.

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

Si vous recevez encore de l’audio 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 :

Transcription d’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 façon fiable, il renvoie "languages": []. Consultez la référence de l’API Audio pour connaître tous les champs de la requête et de la réponse.

Ajout de contexte à la transcription

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

Ajout de contexte et d’indications sur les langues
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 décrire librement le contexte de l’enregistrement.
  • Utilisez keywords pour indiquer les termes exacts que vous vous attendez à entendre.
  • Utilisez languages pour indiquer les langues attendues dans l’enregistrement.

Les mots-clés servent d’indices. Leur présence dans la transcription n’est pas obligatoire. Indiquez uniquement des termes pertinents et vérifiez qu’ils améliorent la précision sans faire apparaître de termes qui n’ont pas été prononcés.

Avec gpt-transcribe, languages remplace le champ singulier language. N’envoyez pas les deux champs ensemble. Écrivez chaque mot-clé sur une seule ligne, sans y inclure <, >, de retour chariot ni de saut de ligne. L’API rejette toute la requête si elle rencontre l’un de ces caractères ou si prompt dépasse la longueur maximale acceptée par le modèle.

Identification des locuteurs

Jusqu’au 26 février 2027, les intégrations existantes peuvent utiliser le modèle obsolète gpt-4o-transcribe-diarize pour déterminer qui parle à chaque moment d’un enregistrement. Ce modèle spécialisé dans l’identification des locuteurs n’est pas recommandé pour la transcription courante de fichiers.

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

Vous pouvez 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 2 à 10 secondes dans l’un des formats acceptés pour le fichier audio principal. Si vous utilisez un formulaire multipart, encodez les extraits sous forme d’URL de données.

Identification des locuteurs dans l’enregistrement d’une 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)

Avec stream=true, les réponses qui identifient les locuteurs émettent un événement transcript.text.segment à la fin de chaque segment. Les événements transcript.text.delta contiennent un champ segment_id, mais ces mises à jour partielles n’indiquent pas le locuteur. Le modèle attribue le segment à un locuteur uniquement lorsqu’il le finalise.

L’identification des locuteurs est disponible via /v1/audio/transcriptions. Les sessions de transcription en temps réel ne prennent pas en charge cette fonctionnalité.

Traductions

Le point de terminaison obsolète /v1/audio/translations utilise whisper-1 pour traduire en anglais un enregistrement audio terminé. Il reste disponible jusqu’au 26 février 2027. Contrairement à la transcription, qui conserve la langue de l’enregistrement, ce point de terminaison renvoie uniquement du texte en anglais.

Passez à la traduction en temps réel avec gpt-realtime-translate sur /v1/realtime/translations. Pour cela, ouvrez une session de traduction, envoyez l’audio en continu et traitez les événements de traduction. Modifier uniquement l’identifiant du modèle dans une requête à /v1/audio/translations ne suffit pas pour effectuer la migration.

Langues prises en charge

Utilisez languages avec gpt-transcribe si vous savez quelles langues attendre dans l’enregistrement. Les formats de codes de langue pris en charge comprennent :

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

L’API rejette les codes de langue non pris en charge ou mal formés. La réponse indique également toutes les langues que le modèle a pu détecter de façon fiable.

Pour whisper-1, consultez la liste des langues prises en charge par 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.

Horodatage

Jusqu’au 26 février 2027, les intégrations existantes peuvent utiliser le modèle obsolète whisper-1 pour horodater les mots ou les segments. Le paramètre timestamp_granularities[] permet d’obtenir 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 pris en charge uniquement par whisper-1.

Enregistrements longs

L’API de transcription 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 la perte de contexte risque de réduire la précision.

Pour découper l’audio, vous pouvez utiliser PyDub, un package Python open source :

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 n’offre aucune garantie quant à l’utilisabilité ou à la sécurité de logiciels tiers comme PyDub.

Utilisation des prompts

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

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

Les prompts sont notamment utiles pour :

  • Transcrire correctement les noms de produits, les termes techniques et les acronymes.
  • Reprendre le contexte du morceau précédent dans un enregistrement long.
  • Conserver la ponctuation, les majuscules et les mots de remplissage.
  • Choisir le 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é. Si votre workflow nécessite Whisper, consultez la section Amélioration de la fiabilité.

Transcription en continu

Lors de la transcription d’un fichier, vous pouvez recevoir le texte par fragments pendant que le modèle traite l’enregistrement terminé. Aucune session en temps réel n’est nécessaire.

Transcription en continu d’un enregistrement audio terminé

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

Réception des transcriptions en continu
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 et response_format="diarized_json", le modèle d’identification des locuteurs émet également un événement transcript.text.segment chaque fois qu’il finalise un segment.

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

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

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

Transcription en continu d’un enregistrement audio en cours

Pour transcrire en direct l’audio d’un microphone, d’un appel ou d’un flux multimédia, suivez le guide de transcription en temps réel plutôt que la procédure ci-dessus destinée aux fichiers. Ce guide décrit le déroulement actuel d’une session de transcription et la méthode recommandée pour transcrire en temps réel avec gpt-live-transcribe.

Amélioration de la fiabilité

Si vous utilisez whisper-1 pour l’horodatage, le sous-titrage ou la traduction, les techniques suivantes peuvent améliorer la reconnaissance des mots rares et des acronymes. Pour vos nouvelles intégrations de transcription généraliste, commencez plutôt par gpt-transcribe et fournissez du contexte pour la transcription.