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

# Sprache streamen

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

Wandelt Text mit einer Stimme Ihrer Wahl in Sprache um und gibt Audio als Audio-Stream zurück.

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

## 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 der zu verwendenden Stimme. Mit dem Endpunkt [Get voices](/docs/api-reference/voices/search) können Sie alle verfügbaren Stimmen auflisten.

### Query parameters

- `enable_logging` (boolean, optional, default: true) — Wenn enable_logging auf false gesetzt ist, wird für die Anfrage der Zero-Retention-Modus verwendet. Dadurch sind Verlaufsfunktionen für diese Anfrage nicht verfügbar, einschließlich Request Stitching. Der Zero-Retention-Modus darf nur von Enterprise-Kunden verwendet werden.
- `optimize_streaming_latency` (integer, optional, nullable, deprecated) — Sie können Latenzoptimierungen auf Kosten der Qualität aktivieren. Die bestmögliche endgültige Latenz variiert je nach Modell. Mögliche Werte: 0 – Standardmodus (keine Latenzoptimierungen) 1 – normale Latenzoptimierungen (etwa 50 % der möglichen Latenzverbesserung von Option 3) 2 – starke Latenzoptimierungen (etwa 75 % der möglichen Latenzverbesserung von Option 3) 3 – maximale Latenzoptimierungen 4 – maximale Latenzoptimierungen, jedoch mit deaktivierter Textnormalisierung für weitere Latenzeinsparungen (beste Latenz, kann aber z. B. Zahlen und Daten falsch aussprechen). Standardwert ist 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.

- `text` (string, required) — Der Text, der in Sprache umgewandelt wird.
- `model_id` (string, optional, default: eleven_multilingual_v2) — Kennung des zu verwendenden Modells. Sie können Modelle mit GET /v1/models abfragen. Das Modell muss Text to Speech unterstützen. Dies können Sie über die Eigenschaft can_do_text_to_speech prüfen.
- `language_code` (string, optional, nullable) — Sprachcode (ISO 639-1), mit dem eine Sprache für das Modell und die Textnormalisierung erzwungen wird. Unterstützt das Modell den angegebenen Sprachcode nicht, wird er ignoriert. Dieser Parameter wird für multilingual_v2-Modelle nicht unterstützt.
- `voice_settings` (VoiceSettingsResponseModel, optional, nullable) — Stimmeneinstellungen, die gespeicherte Einstellungen für die angegebene Stimme überschreiben. Sie werden nur auf die angegebene Anfrage angewendet.
- `pronunciation_dictionary_locators` (list of PronunciationDictionaryVersionLocatorRequestModel, optional, nullable) — Eine Liste von Aussprachewörterbuch-Referenzen (id, version_id), die auf den Text angewendet werden. Sie werden der Reihe nach angewendet. Pro Anfrage sind bis zu 3 Referenzen möglich.
- `seed` (integer, optional, nullable) — Falls angegeben, bemüht sich unser System um eine deterministische Generierung, sodass wiederholte Anfragen mit demselben Seed und denselben Parametern dasselbe Ergebnis liefern sollten. Determinismus wird nicht garantiert. Muss eine Ganzzahl zwischen 0 und 4294967295 sein.
- `previous_text` (string, optional, nullable) — Der Text vor dem Text der aktuellen Anfrage. Kann verwendet werden, um die Kontinuität der Sprache beim Zusammenfügen mehrerer Generierungen zu verbessern oder die Kontinuität der Sprache in der aktuellen Generierung zu beeinflussen.
- `next_text` (string, optional, nullable) — Der Text nach dem Text der aktuellen Anfrage. Kann verwendet werden, um die Kontinuität der Sprache beim Zusammenfügen mehrerer Generierungen zu verbessern oder die Kontinuität der Sprache in der aktuellen Generierung zu beeinflussen.
- `previous_request_ids` (list of string, optional, nullable) — Eine Liste der request_id von Samples, die vor dieser Generierung erstellt wurden. Kann verwendet werden, um die Kontinuität der Sprache zu verbessern, wenn eine große Aufgabe auf mehrere Anfragen aufgeteilt wird. Die besten Ergebnisse erzielen Sie, wenn für alle Generierungen dasselbe Modell verwendet wird. Wenn sowohl previous_text als auch previous_request_ids gesendet werden, wird previous_text ignoriert. Es können maximal 3 request_ids gesendet werden.
- `next_request_ids` (list of string, optional, nullable) — Eine Liste der request_id von Samples, die auf diese Generierung folgen. next_request_ids ist besonders hilfreich, um die Kontinuität der Sprache beizubehalten, wenn ein Sample mit Problemen bei der Audioqualität neu generiert wird. Wenn Sie beispielsweise 3 Sprachclips generiert haben und Clip 2 verbessern möchten, hilft die Übergabe der Request-ID von Clip 3 als next_request_id und die von Clip 1 als previous_request_id dabei, einen natürlichen Fluss in der kombinierten Sprache beizubehalten. Die besten Ergebnisse erzielen Sie, wenn für alle Generierungen dasselbe Modell verwendet wird. Wenn sowohl next_text als auch next_request_ids gesendet werden, wird next_text ignoriert. Es können maximal 3 request_ids gesendet werden.
- `use_pvc_as_ivc` (boolean, optional, default: false) — Gibt an, ob die IVC-Version einer professionellen Stimme verwendet werden soll. Dies kann die Ausdruckskraft verbessern und die Latenz verringern.
- `apply_text_normalization` (enum, optional, default: auto) — Dieser Parameter steuert die Textnormalisierung mit drei Modi: 'auto', 'on' und 'off'. Bei 'auto' entscheidet das System automatisch, ob die Textnormalisierung angewendet wird, z. B. zum Ausschreiben von Zahlen. Bei 'on' wird die Textnormalisierung immer angewendet, bei 'off' übersprungen.
  - Allowed values: `auto`, `on`, `off`
- `apply_language_text_normalization` (boolean, optional, default: false) — Dieser Parameter steuert die sprachspezifische Textnormalisierung. Sie unterstützt die korrekte Aussprache von Text in einigen unterstützten Sprachen. WARNUNG: Dieser Parameter kann die Latenz der Anfrage erheblich erhöhen. Derzeit nur für Japanisch unterstützt.
- `audio_effects` (EffectsSpec-Input, optional, nullable) — Audioeffekte, die auf das generierte Audio angewendet werden. Unbekannte IDs geben 404 zurück, wobei `param` das Feld benennt. Hall (`environment_id` mit `send_level` über 0) und ein `pan` ungleich null erzeugen Stereo-Audio und werden bei den Ausgabeformaten `ulaw_*`, `alaw_*` und `pcm_*` mit 400 abgelehnt. Effekte ändern die Kosten der Anfrage nicht.

## Response

### 200

Audio-Daten streamen

- Streaming response of `string`.

## Errors

### 422 Unprocessable Entity Error

Validierungsfehler

- `detail` (list of ValidationError, optional)

## Types

### VoiceSettingsResponseModel

- `stability` (double, optional, nullable, default: 0.5) — Legt die Stabilität der Stimme und die Zufälligkeit zwischen den einzelnen Generierungen fest. Niedrigere Werte ermöglichen ein breiteres emotionales Spektrum. Höhere Werte können zu einer monotonen Stimme mit begrenzter Emotionalität führen.
- `use_speaker_boost` (boolean, optional, nullable, default: true) — Diese Einstellung erhöht die Ähnlichkeit mit dem ursprünglichen Sprecher. Ihre Verwendung erfordert etwas mehr Rechenleistung und erhöht dadurch die Latenz.
- `similarity_boost` (double, optional, nullable, default: 0.75) — Legt fest, wie genau die KI beim Nachbilden der ursprünglichen Stimme folgen soll.
- `style` (double, optional, nullable, default: 0) — Legt die Stilüberzeichnung der Stimme fest. Diese Einstellung verstärkt den Stil des ursprünglichen Sprechers. Sie benötigt zusätzliche Rechenressourcen und kann die Latenz erhöhen, wenn sie nicht auf 0 gesetzt ist.
- `speed` (double, optional, nullable, default: 1) — Passt die Geschwindigkeit der Stimme an. Ein Wert von 1.0 ist die Standardgeschwindigkeit. Werte unter 1.0 verlangsamen die Sprache, Werte über 1.0 beschleunigen sie.

### PronunciationDictionaryVersionLocatorRequestModel

- `pronunciation_dictionary_id` (string, required) — Die ID des Aussprachewörterbuchs.
- `version_id` (string, optional, nullable) — Die ID der Version des Aussprachewörterbuchs. Wenn nicht angegeben, wird die neueste Version verwendet.

### EffectsSpec-Input

Audioeffekte für generierte Sprache: ein Filter-Preset, wahrgenommene Distanz, eine Hallumgebung, ein Hintergrundgeräuschbett und Stereo-Panning. Lassen Sie alle Felder auf den Standardwerten, um unbearbeitetes Audio zu erhalten.

- `filter_preset_id` (string, optional, nullable) — ID eines Filter-Presets, das den Klang der Stimme verändert, etwa `phone` oder `old_radio`. Gültige IDs erhalten Sie mit `GET /v1/audio-effects/catalog`.
- `distance` (double, optional, default: 0) — Wie weit die sprechende Person vom Mikrofon entfernt klingt, von 0 (nah, unverändert) bis 1 (weit). Höhere Werte dämpfen tiefe und hohe Frequenzen und verschieben bei festgelegter Umgebung die Balance von der trockenen Stimme zum Hall.
- `environment_id` (string, optional, nullable) — ID einer Hallumgebung, die die Stimme in einem Raum platziert, etwa `small_room` oder `hall`. Gültige IDs erhalten Sie mit `GET /v1/audio-effects/catalog`. Hall wird in Stereo gerendert und fügt nach Ende der Sprache einen Nachhall von bis zu mehreren Sekunden hinzu.
- `background_noise_id` (string, optional, nullable) — ID eines unter die Stimme gelegten Hintergrundgeräuschbetts in Schleife, etwa `cafe` oder `keyboard`. Gültige IDs erhalten Sie mit `GET /v1/audio-effects/catalog`.
- `send_level` (double, optional, default: 1) — Wie viel der Stimme in den Hall fließt, von 0 (nichts) bis 1 (vollständig). Gilt nur, wenn `environment_id` festgelegt ist; 0 deaktiviert den Hall.
- `pan` (double, optional, default: 0) — Stereoposition der Stimme: von -1 (ganz links) über 0 (Mitte) bis 1 (ganz rechts). Nur die Stimme wird im Stereopanorama positioniert; Hall und Hintergrundgeräusche bleiben mittig.

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

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