> 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.

# Diffuser la voix avec minutage

POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream/with-timestamps
Content-Type: application/json

Convertit du texte en parole avec la voix de votre choix et renvoie un flux d'objets JSON contenant l'audio sous forme de chaîne encodée en base64 ainsi que des informations sur le moment où chaque caractère a été prononcé.

Reference: https://elevenlabs.io/docs/api-reference/text-to-speech/stream-with-timestamps

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Path parameters

- `voice_id` (string, required) — ID de la voix à utiliser. Utilisez le point de terminaison [Obtenir les voix](/docs/api-reference/voices/search) pour lister toutes les voix disponibles.

### Query parameters

- `enable_logging` (boolean, optional, default: true) — Lorsque enable_logging est défini sur false, le mode zéro rétention est utilisé pour la requête. Les fonctionnalités d’historique, y compris l’enchaînement des requêtes, ne sont alors pas disponibles pour cette requête. Le mode zéro rétention est réservé aux clients Enterprise.
- `optimize_streaming_latency` (integer, optional, nullable, deprecated) — Vous pouvez activer des optimisations de latence au détriment de la qualité. La meilleure latence finale possible varie selon le modèle. Valeurs possibles : 0 - mode par défaut, sans optimisation de la latence 1 - optimisations de latence normales, environ 50 % de l’amélioration de latence possible avec l’option 3 2 - optimisations de latence importantes, environ 75 % de l’amélioration de latence possible avec l’option 3 3 - optimisations de latence maximales 4 - optimisations de latence maximales, avec en plus le normaliseur de texte désactivé pour réduire davantage la latence, meilleure latence, mais une mauvaise prononciation est possible, par exemple pour les nombres et les dates. La valeur par défaut est None.
- `output_format` (enum, optional, default: mp3_44100_128) — Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
  - Allowed values: `mp3_22050_32`, `mp3_24000_48`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_32000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`, `alaw_8000`, `opus_48000_32`, `opus_48000_64`, `opus_48000_96`, `opus_48000_128`, `opus_48000_192`

### Body (application/json)

This endpoint expects a Body_text_to_speech_stream_with_timestamps.

- `text` (string, required) — Le texte qui sera converti en parole.
- `model_id` (string, optional, default: eleven_multilingual_v2) — Identifiant du modèle à utiliser. Vous pouvez consulter les modèles avec GET /v1/models. Le modèle doit prendre en charge la synthèse vocale, ce que vous pouvez vérifier avec la propriété can_do_text_to_speech.
- `language_code` (string, optional, nullable) — Code de langue (ISO 639-1) utilisé pour imposer une langue au modèle et à la normalisation du texte. Si le modèle ne prend pas en charge le code de langue fourni, celui-ci sera ignoré. Ce paramètre n'est pas pris en charge par les modèles multilingual_v2.
- `voice_settings` (VoiceSettingsResponseModel, optional, nullable) — Paramètres vocaux remplaçant les paramètres enregistrés pour la voix donnée. Ils s’appliquent uniquement à la requête concernée.
- `pronunciation_dictionary_locators` (list of PronunciationDictionaryVersionLocatorRequestModel, optional, nullable) — Liste des localisateurs de dictionnaires de prononciation (id, version_id) à appliquer au texte. Ils seront appliqués dans l'ordre. Vous pouvez inclure jusqu'à 3 localisateurs par requête.
- `seed` (integer, optional, nullable) — Si spécifié, notre système fera de son mieux pour échantillonner de manière déterministe, afin que des requêtes répétées avec la même graine et les mêmes paramètres renvoient le même résultat. Le déterminisme n’est pas garanti. Doit être un entier compris entre 0 et 4294967295.
- `previous_text` (string, optional, nullable) — Le texte qui précède celui de la requête actuelle. Peut être utilisé pour améliorer la continuité de la parole lors de la concaténation de plusieurs générations ou pour influencer la continuité de la parole dans la génération actuelle.
- `next_text` (string, optional, nullable) — Le texte qui suit celui de la requête actuelle. Peut être utilisé pour améliorer la continuité de la parole lors de la concaténation de plusieurs générations ou pour influencer la continuité de la parole dans la génération actuelle.
- `previous_request_ids` (list of string, optional, nullable) — Liste des request_id des échantillons générés avant cette génération. Peut être utilisée pour améliorer la continuité de la parole lorsqu'une tâche importante est divisée en plusieurs requêtes. Les résultats seront meilleurs si le même modèle est utilisé pour toutes les générations. Si previous_text et previous_request_ids sont tous deux envoyés, previous_text sera ignoré. Vous pouvez envoyer au maximum 3 request_ids.
- `next_request_ids` (list of string, optional, nullable) — Liste des request_id des échantillons suivant cette génération. next_request_ids est particulièrement utile pour préserver la continuité de la parole lors de la régénération d'un échantillon présentant des problèmes de qualité audio. Par exemple, si vous avez généré 3 extraits vocaux et souhaitez améliorer l'extrait 2, transmettre l'identifiant de requête de l'extrait 3 comme next_request_id, ainsi que celui de l'extrait 1 comme previous_request_id, aidera à préserver un flux naturel dans la parole combinée. Les résultats seront meilleurs si le même modèle est utilisé pour toutes les générations. Si next_text et next_request_ids sont tous deux envoyés, next_text sera ignoré. Vous pouvez envoyer au maximum 3 request_ids.
- `use_pvc_as_ivc` (boolean, optional, nullable) — Indique s'il faut utiliser la version IVC d'une voix professionnelle. Cela peut améliorer l'expressivité et réduire la latence.
- `apply_text_normalization` (enum, optional, default: auto) — Ce paramètre contrôle la normalisation du texte selon trois modes : « auto », « on » et « off ». Lorsqu’il est défini sur « auto », le système décide automatiquement d’appliquer ou non la normalisation du texte, par exemple en écrivant les nombres en toutes lettres. Avec « on », la normalisation est toujours appliquée, tandis qu’avec « off », elle est ignorée.
  - Allowed values: `auto`, `on`, `off`
- `apply_language_text_normalization` (boolean, optional, default: false) — Ce paramètre contrôle la normalisation linguistique du texte. Il améliore la prononciation du texte dans certaines langues prises en charge. AVERTISSEMENT : ce paramètre peut considérablement augmenter la latence de la requête. Actuellement pris en charge uniquement pour le japonais.
- `audio_effects` (EffectsSpec-Input, optional, nullable) — Effets audio appliqués à l’audio généré. Les ID inconnus renvoient une erreur 404, avec `param` indiquant le champ concerné. La réverbération (`environment_id` avec un `send_level` supérieur à 0) et un `pan` non nul produisent un audio stéréo et sont rejetés avec une erreur 400 pour les formats de sortie `ulaw_*`, `alaw_*` et `pcm_*`. Les effets ne modifient pas le coût de la requête.

## Response

### 200

Flux de segments de transcription

- Streaming response of `StreamingAudioChunkWithTimestampsResponseModel`.
- `audio_base64` (string, required) — Données audio encodées en base64
- `alignment` (CharacterAlignmentResponseModel, optional, nullable) — Informations d’horodatage pour chaque caractère du texte original
- `normalized_alignment` (CharacterAlignmentResponseModel, optional, nullable) — Informations d’horodatage pour chaque caractère du texte normalisé

## Errors

### 422 Unprocessable Entity Error

Erreur de validation

- `detail` (list of ValidationError, optional)

## Types

### VoiceSettingsResponseModel

- `stability` (double, optional, nullable, default: 0.5) — Détermine la stabilité de la voix et le niveau d’aléa entre chaque génération. Des valeurs plus faibles offrent une palette émotionnelle plus large. Des valeurs plus élevées peuvent produire une voix monotone aux émotions limitées.
- `use_speaker_boost` (boolean, optional, nullable, default: true) — Ce paramètre augmente la similarité avec le locuteur d’origine. Son utilisation requiert une charge de calcul légèrement supérieure, ce qui augmente la latence.
- `similarity_boost` (double, optional, nullable, default: 0.75) — Détermine dans quelle mesure l’IA doit respecter la voix d’origine lorsqu’elle tente de la reproduire.
- `style` (double, optional, nullable, default: 0) — Détermine l’exagération du style de la voix. Ce réglage tente d’amplifier le style du locuteur d’origine. Il consomme davantage de ressources de calcul et peut augmenter la latence s’il est défini sur une valeur autre que 0.
- `speed` (double, optional, nullable, default: 1) — Ajuste la vitesse de la voix. La valeur 1.0 correspond à la vitesse par défaut, les valeurs inférieures à 1.0 ralentissent la parole et les valeurs supérieures à 1.0 l'accélèrent.
- `clone_strength` (double, optional, nullable) — Contrôle la proximité entre la voix et les échantillons de clonage de voix professionnel, de 0 (faible) à 1 (élevée). Nous recommandons la valeur 0 pour la plupart des cas d'utilisation. Augmentez cette valeur uniquement si vous rencontrez des problèmes avec les paramètres par défaut. S'applique uniquement aux clonages de voix professionnels affinés pour le modèle v4 sélectionné.

### PronunciationDictionaryVersionLocatorRequestModel

- `pronunciation_dictionary_id` (string, required) — L’ID du dictionnaire de prononciation.
- `version_id` (string, optional, nullable) — L’ID de la version du dictionnaire de prononciation. S’il n’est pas fourni, la dernière version sera utilisée.

### EffectsSpec-Input

Effets audio appliqués à la parole générée : un préréglage de filtre, une distance perçue, un environnement de réverbération, un fond sonore et un panoramique stéréo. Laissez chaque champ à sa valeur par défaut pour obtenir un audio non traité.

- `filter_preset_id` (string, optional, nullable) — ID d’un préréglage de filtre qui colore la voix, tel que `phone` ou `old_radio`. Répertoriez les ID valides avec `GET /v1/audio-effects/catalog`.
- `distance` (double, optional, default: 0) — Distance à laquelle le locuteur semble se trouver du microphone, de 0 (proche, inchangée) à 1 (loin). Des valeurs plus élevées atténuent les basses et hautes fréquences et, lorsqu’un environnement est défini, déplacent l’équilibre de la voix sèche vers la réverbération.
- `environment_id` (string, optional, nullable) — ID d’un environnement de réverbération qui place la voix dans un espace, tel que `small_room` ou `hall`. Répertoriez les ID valides avec `GET /v1/audio-effects/catalog`. La réverbération est produite en stéréo et ajoute une traîne pouvant durer plusieurs secondes après la fin de la parole.
- `background_noise_id` (string, optional, nullable) — ID d’un fond sonore diffusé en boucle sous la voix, tel que `cafe` ou `keyboard`. Répertoriez les ID valides avec `GET /v1/audio-effects/catalog`.
- `send_level` (double, optional, default: 1) — Quantité de voix envoyée vers la réverbération, de 0 (aucune) à 1 (totale). S’applique uniquement lorsque `environment_id` est défini ; 0 désactive la réverbération.
- `pan` (double, optional, default: 0) — Position stéréo de la voix, de -1 (complètement à gauche) à 1 (complètement à droite), en passant par 0 (au centre). Seule la voix est panoramiquée ; la réverbération et le bruit de fond restent centrés.

### CharacterAlignmentResponseModel

- `characters` (list of string, required)
- `character_start_times_seconds` (list of double, required)
- `character_end_times_seconds` (list of double, required)

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### ValidationErrorLocItems

- string
- integer

## Examples

**Request**

```json
{
  "text": "The first move is what sets everything in motion.",
  "model_id": "eleven_multilingual_v2"
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps"

querystring = {"output_format":"mp3_44100_128"}

payload = {
    "text": "The first move is what sets everything in motion.",
    "model_id": "eleven_multilingual_v2"
}
headers = {
    "xi-api-key": "xi-api-key",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128';
const options = {
  method: 'POST',
  headers: {'xi-api-key': 'xi-api-key', 'Content-Type': 'application/json'},
  body: '{"text":"The first move is what sets everything in motion.","model_id":"eleven_multilingual_v2"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128"

	payload := strings.NewReader("{\n  \"text\": \"The first move is what sets everything in motion.\",\n  \"model_id\": \"eleven_multilingual_v2\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("xi-api-key", "xi-api-key")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["xi-api-key"] = 'xi-api-key'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"text\": \"The first move is what sets everything in motion.\",\n  \"model_id\": \"eleven_multilingual_v2\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128")
  .header("xi-api-key", "xi-api-key")
  .header("Content-Type", "application/json")
  .body("{\n  \"text\": \"The first move is what sets everything in motion.\",\n  \"model_id\": \"eleven_multilingual_v2\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128', [
  'body' => '{
  "text": "The first move is what sets everything in motion.",
  "model_id": "eleven_multilingual_v2"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'xi-api-key' => 'xi-api-key',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128");
var request = new RestRequest(Method.POST);
request.AddHeader("xi-api-key", "xi-api-key");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"text\": \"The first move is what sets everything in motion.\",\n  \"model_id\": \"eleven_multilingual_v2\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "xi-api-key": "xi-api-key",
  "Content-Type": "application/json"
]
let parameters = [
  "text": "The first move is what sets everything in motion.",
  "model_id": "eleven_multilingual_v2"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb/stream/with-timestamps?output_format=mp3_44100_128")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```