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
Python
1
2
3
4
5
6
7
8
9
10
11import fs from "fs";import OpenAI from "openai";const openai = new OpenAI();const transcription = await openai.audio.transcriptions.create({ file: fs.createReadStream("fixtures/audio.wav"), model: "gpt-transcribe",});console.log(transcription.text);
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
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import fs from "fs";import OpenAI from "openai";const openai = new OpenAI();const request = { model: "gpt-transcribe", file: fs.createReadStream("fixtures/audio.wav"), prompt: "A customer support call about a premium plan and account AC-42.",};const transcription = await openai.audio.transcriptions.create(request, { body: { ...request, keywords: ["premium plan", "AC-42", "billing"], languages: ["en", "fr"], },});console.log(transcription.text);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16from openai import OpenAIclient = OpenAI()withopen("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
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
Python
1
2
3
4
5
6
7
8
9
10
11import fs from "fs";import OpenAI from "openai";const openai = new OpenAI();const translation = await openai.audio.translations.create({ file: fs.createReadStream("fixtures/german.wav"), model: "whisper-1",});console.log(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.
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.
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.
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 :
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.
La première méthode consiste à utiliser le paramètre facultatif prompt pour fournir un dictionnaire contenant les graphies correctes.
Whisper ne suit pas les instructions comme un modèle de texte généraliste et accepte des prompts de 224 tokens maximum.
Bien qu’elle améliore la fiabilité, cette technique est limitée à 224 tokens. Votre liste de références SKU doit donc rester relativement courte pour que la solution puisse être utilisée à grande échelle.
La seconde méthode utilise un modèle de texte pour effectuer un post-traitement de la transcription.
Fournissez les instructions dans la variable system_prompt. Comme dans le prompt de transcription, vous pouvez inclure des noms d’entreprises et de produits.
Post-traitement
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28const systemPrompt = `You are a helpful assistant for the company ZyntriQix. Your task isto correct any spelling discrepancies in the transcribed text. Makesure that the names of the following products are spelled correctly:ZyntriQix, Digique Plus, CynapseFive, VortiQore V8, EchoNix Array,OrbitalLink Seven, DigiFractal Matrix, PULSE, RAPT, B.R.I.C.K.,Q.U.A.R.T.Z., F.L.I.N.T. Only add necessary punctuation such asperiods, commas, and capitalization, and use only the context provided.`;const transcript = await transcribe(audioFile);const completion = await openai.chat.completions.create({ model: "gpt-4.1", temperature: temperature, messages: [ { role: "system", content: systemPrompt, }, { role: "user", content: transcript, }, ], store: true,});console.log(completion.choices[0].message.content);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24system_prompt ="""You are a helpful assistant for the company ZyntriQix. Your task is to correctany spelling discrepancies in the transcribed text. Make sure that the names ofthe following products are spelled correctly: ZyntriQix, Digique Plus,CynapseFive, VortiQore V8, EchoNix Array, OrbitalLink Seven, DigiFractalMatrix, PULSE, RAPT, B.R.I.C.K., Q.U.A.R.T.Z., F.L.I.N.T. Only add necessarypunctuation such as periods, commas, and capitalization, and use only thecontext provided."""defgenerate_corrected_transcript(temperature, system_prompt, audio_file): response = client.chat.completions.create(model="gpt-4.1",temperature=temperature,messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": transcribe(audio_file, "")}, ], )return response.choices[0].message.contentcorrected_text = generate_corrected_transcript(0, system_prompt, fake_company_filepath)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49package mainimport ( "context" "fmt" "os" "github.com/openai/openai-go/v3")const systemPrompt = `You are a helpful assistant for the company ZyntriQix. Your task isto correct any spelling discrepancies in the transcribed text. Makesure that the names of the following products are spelled correctly:ZyntriQix, Digique Plus, CynapseFive, VortiQore V8, EchoNix Array,OrbitalLink Seven, DigiFractal Matrix, PULSE, RAPT, B.R.I.C.K.,Q.U.A.R.T.Z., F.L.I.N.T. Only add necessary punctuation such asperiods, commas, and capitalization, and use only the context provided.`func main() { file, err := os.Open("fixtures/speech.wav") if err != nil { panic(err) } defer file.Close() client := openai.NewClient() transcription, err := client.Audio.Transcriptions.New(context.Background(), openai.AudioTranscriptionNewParams{ File: file, Model: openai.AudioModelGPT4oTranscribe, }) if err != nil { panic(err) } completion, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{ Model: "gpt-4.1", Temperature: openai.Float(0), Messages: []openai.ChatCompletionMessageParamUnion{ openai.SystemMessage(systemPrompt), openai.UserMessage(transcription.Text), }, Store: openai.Bool(true), }) if err != nil { panic(err) } fmt.Println(completion.Choices[0].Message.Content)}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.audio.transcriptions.TranscriptionCreateParams;import com.openai.models.chat.completions.ChatCompletionCreateParams;import java.nio.file.Path;String systemPrompt = """ You are a helpful assistant for the company ZyntriQix. Your task is to correct any spelling discrepancies in the transcribed text. Make sure that the names of the following products are spelled correctly: ZyntriQix, Digique Plus, CynapseFive, VortiQore V8, EchoNix Array, OrbitalLink Seven, DigiFractal Matrix, PULSE, RAPT, B.R.I.C.K., Q.U.A.R.T.Z., F.L.I.N.T. Only add necessary punctuation such as periods, commas, and capitalization, and use only the context provided. """;var result = client .audio() .transcriptions() .create( TranscriptionCreateParams.builder() .file(Path.of(System.getenv("OPENAI_EXAMPLE_AUDIO_PATH"))) .model("gpt-4o-transcribe") .build());var completion = client .chat() .completions() .create( ChatCompletionCreateParams.builder() .model("gpt-4.1") .temperature(0.0) .store(true) .addSystemMessage(systemPrompt) .addUserMessage(result.asTranscription().text()) .build());completion.choices().stream() .flatMap(choice -> choice.message().content().stream()) .forEach(System.out::println);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32using OpenAI.Audio;using OpenAI.Chat;string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;string model = "gpt-4.1";ChatClient client = new(model, key);string transcriptionModel = "gpt-4o-transcribe";AudioClient audio = new(transcriptionModel, key);await using FileStream source = File.OpenRead("speech.wav");AudioTranscription transcription = await audio.TranscribeAudioAsync(source, "speech.wav");string systemPrompt = """ You are a helpful assistant for the company ZyntriQix. Correct any spelling discrepancies in the transcribed text. Make sure the names of these products are spelled correctly: ZyntriQix, Digique Plus, CynapseFive, VortiQore V8, EchoNix Array, OrbitalLink Seven, DigiFractal Matrix, PULSE, RAPT, B.R.I.C.K., Q.U.A.R.T.Z., F.L.I.N.T. Only add necessary punctuation such as periods, commas, and capitalization, and use only the context provided. """;ChatCompletionOptions correctionOptions = new() { Temperature = 0 };ChatCompletion completion = await client.CompleteChatAsync( [ new SystemChatMessage(systemPrompt), new UserChatMessage(transcription.Text), ], correctionOptions);Console.WriteLine(completion.Content[0].Text);
Un modèle de texte peut corriger les fautes d’orthographe et traiter des listes de termes plus longues que ne le permet la limite de 224 tokens des prompts de Whisper. Vérifiez les corrections en les comparant à l’audio d’origine pour éviter de modifier les propos du locuteur.