> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Modification de transcription

> **Note**
>
> **Guide pratique** · Suppose que vous avez suivi le guide de
> [streaming côté client](/docs/fr/eleven-api/guides/how-to/speech-to-text/realtime/client-side-streaming) ou de
> [streaming côté serveur](/docs/fr/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming).

## Vue d’ensemble

> **Warning**
>
> La modification des transcriptions est une fonctionnalité expérimentale qui ajoute une majoration de 30 % au coût de base de la transcription,
> facturée pour au moins 10 secondes d’audio par transcription validée. Consultez la [page des tarifs de l’API](https://elevenlabs.io/pricing?price.section=speech_to_text\&price.sections=speech_to_text,speech_to_text#pricing-table)
> pour obtenir des informations détaillées sur les tarifs.

La transcription en temps réel peut appliquer une instruction de modification en langage naturel à chaque transcription validée, par exemple pour écrire les dates énoncées dans un format fixe ou développer les abréviations et acronymes. L’instruction est transmise une seule fois à l’ouverture de la connexion, et chaque transcription validée est suivie d’un événement `edited_transcript` distinct contenant le texte modifié.

Les transcriptions partielles ne sont jamais modifiées. L’événement `committed_transcript` n’est pas non plus modifié, afin que vos intégrations existantes continuent de fonctionner lorsque vous activez cette fonctionnalité.

> **Warning**
>
> La modification des transcriptions ne peut pas être combinée à `entity_detection`. Les connexions qui configurent les deux
> sont rejetées avec une erreur `invalid_request`.

## Activer la modification des transcriptions

Transmettez l’instruction avec l’option `transcriptEdit` lors de la connexion (le paramètre de requête `transcript_edit` de l’API WebSocket). L’instruction peut contenir jusqu’à 2 000 caractères. Consultez le [guide de modification des transcriptions par lots](/docs/fr/eleven-api/guides/how-to/speech-to-text/batch/transcript-editing#writing-instructions) pour savoir comment rédiger des instructions.

Dans tous les SDK, les transcriptions modifiées arrivent via l’événement `RealtimeEvents.EDITED_TRANSCRIPT`.

### Côté client

Utilisez `@elevenlabs/client` dans le navigateur avec un jeton à usage unique émis par votre serveur, comme décrit dans le [guide de streaming côté client](/docs/fr/eleven-api/guides/how-to/speech-to-text/realtime/client-side-streaming).

```typescript
import { Scribe, RealtimeEvents } from "@elevenlabs/client";

// Fetch a single-use token from your server first
const response = await fetch("/scribe-token", yourAuthHeaders);
const { token } = await response.json();

const connection = Scribe.connect({
  token,
  modelId: "scribe_v2_realtime",
  transcriptEdit: "Write all dates in ISO 8601 format (YYYY-MM-DD)",
  microphone: {
    echoCancellation: true,
    noiseSuppression: true,
  },
});

connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data) => {
  console.log("Committed:", data.text);
});

connection.on(RealtimeEvents.EDITED_TRANSCRIPT, (data) => {
  console.log("Edited:", data.edited_text);
});
```

### Côté serveur

Utilisez le SDK officiel sur votre serveur, comme décrit dans le [guide de streaming côté serveur](/docs/fr/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming#configure-the-sdk). Seules l’option et le gestionnaire d’événements diffèrent de ce guide ; l’envoi de l’audio et la fermeture de la connexion fonctionnent de la même manière.

```python
import asyncio
import os
from dotenv import load_dotenv
from elevenlabs import AudioFormat, ElevenLabs, RealtimeAudioOptions, RealtimeEvents

load_dotenv()

async def main():
    elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

    connection = await elevenlabs.speech_to_text.realtime.connect(RealtimeAudioOptions(
        model_id="scribe_v2_realtime",
        audio_format=AudioFormat.PCM_16000,
        sample_rate=16000,
        transcript_edit="Write all dates in ISO 8601 format (YYYY-MM-DD)",
    ))

    def on_committed_transcript(data):
        print(f"Committed: {data.get('text', '')}")

    def on_edited_transcript(data):
        print(f"Edited: {data.get('edited_text', '')}")

    connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, on_committed_transcript)
    connection.on(RealtimeEvents.EDITED_TRANSCRIPT, on_edited_transcript)

    # Send audio chunks as shown in the server-side streaming guide, then close.
    await connection.close()

if __name__ == "__main__":
    asyncio.run(main())
```

```typescript
import { ElevenLabsClient, RealtimeEvents, AudioFormat } from "@elevenlabs/elevenlabs-js";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

const connection = await elevenlabs.speechToText.realtime.connect({
  modelId: "scribe_v2_realtime",
  audioFormat: AudioFormat.PCM_16000,
  sampleRate: 16000,
  transcriptEdit: "Write all dates in ISO 8601 format (YYYY-MM-DD)",
});

connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data) => {
  console.log("Committed:", data.text);
});

connection.on(RealtimeEvents.EDITED_TRANSCRIPT, (data) => {
  console.log("Edited:", data.edited_text);
});

// Send audio chunks as shown in the server-side streaming guide, then close.
```

## Recevoir les transcriptions modifiées

Lorsqu’elle est activée, chaque transcription validée est suivie d’un événement `edited_transcript` contenant le texte validé et sa version modifiée :

```json
{
  "message_type": "edited_transcript",
  "text": "our next meeting is on the twelfth of July twenty twenty-six",
  "edited_text": "our next meeting is on 2026-07-12"
}
```

Comportements à connaître :

* Les modifications sont appliquées par segment validé. L’événement `edited_transcript` est émis peu après l’événement `committed_transcript` correspondant, car la modification s’exécute de manière asynchrone. Il peut arriver après la transcription partielle suivante, et les modifications de segments consécutifs peuvent arriver dans le désordre. Utilisez le champ `text` pour associer une modification à sa transcription validée.
* Si aucune modification n’a été apportée à un segment, `edited_text` est identique à `text`.
* Si une modification ne peut pas être produite pour un segment, aucun événement `edited_transcript` n’est envoyé pour celui-ci. L’événement `committed_transcript` n’est pas affecté.
* Les horodatages au niveau des mots dans `committed_transcript_with_timestamps` décrivent le texte validé d’origine, et non le texte modifié.

## Étapes suivantes

#### [Modification des transcriptions par lots](/docs/fr/eleven-api/guides/how-to/speech-to-text/batch/transcript-editing)

Conseils pour rédiger des instructions et format de réponse par lots.

#### [Référence des événements](/docs/fr/eleven-api/guides/how-to/speech-to-text/realtime/event-reference)

Liste complète des événements et types d’erreur de l’API STT en temps réel.