Przejdź do nawigacji

Optymalizacja opóźnień

Ten przewodnik pokazuje, jak zmniejszyć opóźnienia zamiany tekstu na mowę w aplikacji.

Ten przewodnik omawia podstawowe zasady poprawy opóźnień zamiany tekstu na mowę. Teoretyczne wyjaśnienie, czym jest opóźnienie i co na nie wpływa, znajdziesz w artykule Zrozumienie opóźnień.

Choć istnieje wiele konkretnych technik, podzielimy je na cztery zasady.

Cztery zasady

  1. Używaj modeli Flash
  2. Korzystaj ze streamingu
  3. Weź pod uwagę bliskość geograficzną
  4. Wybieraj odpowiednie głosy

Klienci Enterprise korzystają z wyższych limitów współbieżności i priorytetowego dostępu do naszej kolejki renderowania. Skontaktuj się z działem sprzedaży, aby dowiedzieć się więcej o planach Enterprise.

Użyj modelu czasu rzeczywistego

Eleven v4 Turbo i Flash v2.5 są przeznaczone do pracy w czasie rzeczywistym, z medianą opóźnienia około 100 ms. Modele Flash oferują nieco niższą jakość audio niż Multilingual v2.

Te wartości nie obejmują czasu sieciowego ani działania aplikacji. Rzeczywiste opóźnienie end-to-end zależy od takich czynników jak lokalizacja i typ użytego endpointu. Zobacz, jak mierzymy opóźnienia.

Korzystaj ze streamingu

W naszej dokumentacji API dostępne są trzy typy endpointów zamiany tekstu na mowę:

  • Zwykły endpoint: Zwraca kompletny plik audio w jednej odpowiedzi.
  • Endpoint streamingowy: Stopniowo zwraca fragmenty audio za pomocą zdarzeń wysyłanych przez serwer.
  • Endpoint WebSocket: Umożliwia dwukierunkowy streaming do generowania audio w czasie rzeczywistym.

Streaming

Endpointy streamingowe stopniowo zwracają audio podczas generowania go w czasie rzeczywistym, skracając czas do pierwszego bajtu. Ten endpoint jest zalecany, gdy tekst wejściowy jest dostępny od razu.

Streaming jest obsługiwany przez API Text to Speech, API Voice Changer i API Audio Isolation.

WebSockety

Endpoint WebSocket zamiany tekstu na mowę obsługuje dwukierunkowy streaming, więc świetnie sprawdza się w aplikacjach z tekstem wprowadzanym w czasie rzeczywistym (np. wynikami LLM).

Ustawienie auto_mode na true automatycznie obsługuje wyzwalanie generowania, więc nie musisz ręcznie zarządzać strategiami fragmentów.

Jeśli auto_mode jest wyłączony, model poczeka na wystarczającą ilość tekstu zgodną z harmonogramem fragmentów, zanim zacznie generować audio.

Na przykład jeśli ustawisz harmonogram fragmentów na 125 znaków, ale dotrze tylko 50, model zatrzyma się, aż nadejdą kolejne znaki — co może zwiększyć opóźnienie.

Szczegóły implementacji znajdziesz w przewodniku po WebSocketach zamiany tekstu na mowę.

Wybieraj odpowiednie głosy

Zaobserwowaliśmy, że w niektórych przypadkach wybór głosu może wpływać na opóźnienie. Kolejność od najszybszych do najwolniejszych:

  1. Głosy domyślne (wcześniej gotowe), głosy syntetyczne i klony Instant Voice Clone (IVC)
  2. Klony Professional Voice Clone (PVC)

Formaty wyjściowe o wyższej jakości audio mogą zwiększać opóźnienie. Zadbaj o równowagę między wymaganiami dotyczącymi opóźnień a jakością audio.

Aktywnie pracujemy nad optymalizacją opóźnień PVC dla Flash v2.5.

Weź pod uwagę bliskość geograficzną

Udostępniamy nasze modele z wielu regionów, aby optymalizować opóźnienia zależnie od twojej lokalizacji.

Na przykład podczas używania modeli Flash z WebSocketami możesz oczekiwać następujących opóźnień TTFB zależnie od lokalizacji:

RegionTTFB
Ameryka Północna100-150ms
Europa100-150ms
Azja Południowo-Wschodnia100-150ms
Azja Południowa150-200ms
Azja Północno-Wschodnia150-200ms

Możesz sprawdzić, który region backendu obsługuje żądanie, analizując nagłówek x-region w odpowiedzi API. Obecnie używane regiony to: USA, Holandia i Singapur.

Klienci Enterprise mogą korzystać z naszych dedykowanych środowisk rezydencji danych w UE i Indiach, które gwarantują lokalizację serwera i niskie opóźnienia. Skontaktuj się ze swoim przedstawicielem handlowym, aby uzyskać dostęp do naszej infrastruktury rezydencji danych.

Aby zrezygnować z globalnego routingu i zawsze używać serwerów w USA, użyj bazowego adresu URL api.us.elevenlabs.io w żądaniach API:

import os
from elevenlabs.client import ElevenLabs
elevenlabs = ElevenLabs(
api_key=os.getenv("ELEVENLABS_API_KEY"),
base_url="https://api.us.elevenlabs.io"
)

Serwery globalne były wcześniej opcjonalne przy użyciu bazowego adresu URL api-global-preview.elevenlabs.io. Nie jest to już konieczne, ponieważ globalny routing jest teraz domyślny. Zaktualizuj aplikacje, aby używały po prostu api.elevenlabs.io.