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

# Spraak maken

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

Zet tekst om in spraak met een stem naar keuze en retourneert audio.

Reference: https://elevenlabs.io/docs/api-reference/text-to-speech/convert

## 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 van de te gebruiken stem. Gebruik het endpoint [Stemmen ophalen](/docs/api-reference/voices/search) om alle beschikbare stemmen weer te geven.

### Query parameters

- `enable_logging` (boolean, optional, default: true) — Wanneer enable_logging is ingesteld op false, wordt voor het request de modus zonder gegevensbewaring gebruikt. Hierdoor zijn geschiedenisfuncties, waaronder request stitching, niet beschikbaar voor dit request. De modus zonder gegevensbewaring is alleen beschikbaar voor Enterprise-klanten.
- `optimize_streaming_latency` (integer, optional, nullable, deprecated) — Je kunt latentieoptimalisaties inschakelen, met enig kwaliteitsverlies als gevolg. De best mogelijke uiteindelijke latentie verschilt per model. Mogelijke waarden: 0 - standaardmodus (geen latentieoptimalisaties) 1 - normale latentieoptimalisaties (ongeveer 50% van de mogelijke latentieverbetering van optie 3) 2 - sterke latentieoptimalisaties (ongeveer 75% van de mogelijke latentieverbetering van optie 3) 3 - maximale latentieoptimalisaties 4 - maximale latentieoptimalisaties, maar ook met de tekstnormalisator uitgeschakeld voor nog meer latentieverbetering (beste latentie, maar kan bijvoorbeeld getallen en datums verkeerd uitspreken). Standaard ingesteld op 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 and WAV formats 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: `alaw_8000`, `mp3_22050_32`, `mp3_24000_48`, `mp3_44100_128`, `mp3_44100_192`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `opus_48000_128`, `opus_48000_192`, `opus_48000_32`, `opus_48000_64`, `opus_48000_96`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_32000`, `pcm_44100`, `pcm_48000`, `pcm_8000`, `ulaw_8000`, `wav_16000`, `wav_22050`, `wav_24000`, `wav_32000`, `wav_44100`, `wav_48000`, `wav_8000`

### Body (application/json)

This endpoint expects a Body_text_to_speech_full.

- `text` (string, required) — De tekst die wordt omgezet in spraak.
- `model_id` (string, optional, default: eleven_multilingual_v2) — ID van het model dat wordt gebruikt. Je kunt modellen opvragen met GET /v1/models. Het model moet Text to Speech ondersteunen; je kunt dit controleren met de eigenschap can_do_text_to_speech.
- `language_code` (string, optional, nullable) — Taalcode (ISO 639-1) die wordt gebruikt om een taal af te dwingen voor het model en tekstnormalisatie. Als het model de opgegeven taalcode niet ondersteunt, wordt deze genegeerd. Deze parameter wordt niet ondersteund voor multilingual_v2-modellen.
- `voice_settings` (VoiceSettingsResponseModel, optional, nullable) — Steminstellingen die de opgeslagen instellingen voor de opgegeven stem overschrijven. Ze worden alleen toegepast op het opgegeven request.
- `pronunciation_dictionary_locators` (list of PronunciationDictionaryVersionLocatorRequestModel, optional, nullable) — Een lijst met locators voor uitspraakwoordenboeken (id, version_id) die op de tekst worden toegepast. Ze worden op volgorde toegepast. Je kunt maximaal 3 locators per request opgeven
- `seed` (integer, optional, nullable) — Als dit wordt opgegeven, doet ons systeem zijn best om deterministisch te samplen, zodat herhaalde requests met dezelfde seed en parameters hetzelfde resultaat zouden moeten opleveren. Determinisme is niet gegarandeerd. Moet een geheel getal tussen 0 en 4294967295 zijn.
- `previous_text` (string, optional, nullable) — De tekst die voorafging aan de tekst van de huidige request. Kan worden gebruikt om de continuïteit van de spraak te verbeteren wanneer meerdere generaties worden samengevoegd, of om de continuïteit van de spraak in de huidige generatie te beïnvloeden.
- `next_text` (string, optional, nullable) — De tekst die volgt op de tekst van de huidige request. Kan worden gebruikt om de continuïteit van de spraak te verbeteren wanneer meerdere generaties worden samengevoegd, of om de continuïteit van de spraak in de huidige generatie te beïnvloeden.
- `previous_request_ids` (list of string, optional, nullable) — A list of request_id of the samples that were generated before this generation. Can be used to improve the speech's continuity when splitting up a large task into multiple requests. The results will be best when the same model is used across the generations. In case both previous_text and previous_request_ids is send, previous_text will be ignored. A maximum of 3 request_ids can be send.
- `next_request_ids` (list of string, optional, nullable) — A list of request_id of the samples that come after this generation. next_request_ids is especially useful for maintaining the speech's continuity when regenerating a sample that has had some audio quality issues. For example, if you have generated 3 speech clips, and you want to improve clip 2, passing the request id of clip 3 as a next_request_id (and that of clip 1 as a previous_request_id) will help maintain natural flow in the combined speech. The results will be best when the same model is used across the generations. In case both next_text and next_request_ids is send, next_text will be ignored. A maximum of 3 request_ids can be send.
- `use_pvc_as_ivc` (boolean, optional, default: false) — Of de IVC-versie van een professionele stem moet worden gebruikt. Dit kan de expressiviteit verbeteren en latency verminderen.
- `apply_text_normalization` (enum, optional, default: auto) — Deze parameter regelt tekstnormalisatie met drie modi: 'auto', 'on' en 'off'. Wanneer deze is ingesteld op 'auto', bepaalt het systeem automatisch of tekstnormalisatie wordt toegepast (bijvoorbeeld het uitschrijven van getallen). Met 'on' wordt tekstnormalisatie altijd toegepast, terwijl deze met 'off' wordt overgeslagen.
  - Allowed values: `auto`, `on`, `off`
- `apply_language_text_normalization` (boolean, optional, default: false) — Deze parameter regelt taalafhankelijke tekstnormalisatie. Dit helpt bij de juiste uitspraak van tekst in sommige ondersteunde talen. WAARSCHUWING: deze parameter kan de latentie van de request aanzienlijk verhogen. Momenteel alleen ondersteund voor Japans.
- `audio_effects` (EffectsSpec-Input, optional, nullable) — Audio-effecten die worden toegepast op de gegenereerde audio. Onbekende ID's retourneren 404, waarbij `param` de naam van het veld bevat. Galm (`environment_id` met `send_level` boven 0) en een niet-nulwaarde voor `pan` produceren stereo-audio en worden afgewezen met 400 voor uitvoerformaten `ulaw_*`, `alaw_*` en `pcm_*`. Effecten veranderen de kosten van de aanvraag niet.

## Response

### 200

Het gegenereerde audiobestand

- File download.

## Errors

### 422 Unprocessable Entity Error

Validatiefout

- `detail` (list of ValidationError, optional)

## Types

### VoiceSettingsResponseModel

- `stability` (double, optional, nullable, default: 0.5) — Bepaalt hoe stabiel de stem is en de willekeur tussen generaties. Lagere waarden zorgen voor een breder emotioneel bereik van de stem. Hogere waarden kunnen leiden tot een monotone stem met beperkte emotie.
- `use_speaker_boost` (boolean, optional, nullable, default: true) — Deze instelling verhoogt de gelijkenis met de oorspronkelijke spreker. Het gebruik van deze instelling vereist iets meer rekenkracht, waardoor de latentie toeneemt.
- `similarity_boost` (double, optional, nullable, default: 0.75) — Bepaalt hoe nauw de AI de oorspronkelijke stem moet volgen wanneer deze wordt gerepliceerd.
- `style` (double, optional, nullable, default: 0) — Bepaalt de stijlversterking van de stem. Deze instelling probeert de stijl van de oorspronkelijke spreker te versterken. Dit gebruikt extra rekenresources en kan de latentie verhogen als de waarde niet 0 is.
- `speed` (double, optional, nullable, default: 1) — Past de snelheid van de stem aan. Een waarde van 1.0 is de standaardsnelheid. Waarden lager dan 1.0 vertragen de spraak en waarden hoger dan 1.0 versnellen deze.

### PronunciationDictionaryVersionLocatorRequestModel

- `pronunciation_dictionary_id` (string, required) — De ID van het uitspraakwoordenboek.
- `version_id` (string, optional, nullable) — De ID van de versie van het uitspraakwoordenboek. Als deze niet wordt opgegeven, wordt de nieuwste versie gebruikt.

### EffectsSpec-Input

Audio-effecten die worden toegepast op gegenereerde spraak: een filterpreset, waargenomen afstand, een galm- omgeving, achtergrondruis en stereopanning. Laat elk veld op de standaardwaarde staan om onbewerkte audio te krijgen.

- `filter_preset_id` (string, optional, nullable) — ID van een filterpreset die de stem kleurt, zoals `phone` of `old_radio`. Geef geldige ID's weer met `GET /v1/audio-effects/catalog`.
- `distance` (double, optional, default: 0) — Hoe ver de spreker van de microfoon lijkt te staan, van 0 (dichtbij, ongewijzigd) tot 1 (ver weg). Hogere waarden dempen lage en hoge frequenties en verschuiven, wanneer een omgeving is ingesteld, de balans van de droge stem naar de galm.
- `environment_id` (string, optional, nullable) — ID van een reverbomgeving die de stem in een ruimte plaatst, zoals `small_room` of `hall`. Geef geldige ID's weer met `GET /v1/audio-effects/catalog`. Reverb wordt in stereo gerenderd en voegt een galmstaart van maximaal enkele seconden toe nadat de spraak eindigt.
- `background_noise_id` (string, optional, nullable) — ID van een achtergrondgeluidsbed dat onder de stem wordt geloopt, zoals `cafe` of `keyboard`. Geef geldige ID's weer met `GET /v1/audio-effects/catalog`.
- `send_level` (double, optional, default: 1) — Hoeveel van de stem naar de reverb gaat, van 0 (geen) tot 1 (volledig). Geldt alleen wanneer `environment_id` is ingesteld; 0 schakelt de reverb uit.
- `pan` (double, optional, default: 0) — Stereopositie van de stem, van -1 (volledig links) via 0 (midden) tot 1 (volledig rechts). Alleen de stem wordt gepand; galm en achtergrondruis blijven in het midden.
- `seed` (integer, optional, nullable, deprecated) — Heeft geen effect.

### ValidationError

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

### ValidationErrorLocItems

## 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"

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?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?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?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?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?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?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?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()
```