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
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 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
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 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
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.
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.
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.
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 :
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.
La première méthode consiste à fournir, via le paramètre facultatif prompt, un dictionnaire indiquant l’orthographe correcte des termes.
Whisper ne suit pas les instructions comme un modèle de texte généraliste et accepte des prompts de 224 tokens maximum.
Cette technique améliore la fiabilité, mais la limite de 224 tokens impose de garder une liste de références produits relativement courte pour que la méthode reste applicable à grande échelle.
La seconde méthode consiste à utiliser un modèle de texte pour corriger la transcription après sa génération.
Fournissez vos 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);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17require "openai"require "pathname"client = OpenAI::Client.newaudio = Pathname("speech.wav")transcript = client.audio.transcriptions.create( file: audio, model: "gpt-4o-mini-transcribe")raise "Expected a JSON transcript response" if transcript.is_a?(StringIO)response = client.responses.create( model: "gpt-4.1", input: "Add punctuation and paragraph breaks without changing the words:\n#{transcript.text}")puts(response.output_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 écoutant l’enregistrement d’origine pour éviter de modifier les propos du locuteur.