Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds
Powrót do kolekcji
Przewodnik12 min czytania

ElevenLabs, synteza mowy i agenci głosowi

ElevenLabs w praktyce: wybór modelu, strumieniowanie, klonowanie głosu, agenci głosowi rozliczani za minutę, ceny od 5 do 990 dolarów i kwestie prawne.

ElevenLabs, głos, który nie brzmi jak automat

Synteza mowy przez lata brzmiała jak synteza mowy: równo, płasko i z akcentem w złych miejscach. ElevenLabs jest jedną z firm, które tę granicę przesunęły, i dziś główne pytanie nie brzmi, czy da się wygenerować naturalny głos, tylko ile to kosztuje i co wolno z nim zrobić.

Platforma obejmuje trzy obszary: zamianę tekstu na mowę, klonowanie głosu i agentów prowadzących rozmowę telefoniczną. Każdy z nich rozliczany jest inaczej, co jest pierwszą rzeczą do zrozumienia przed wdrożeniem.

Modele i wybór między nimi

Do wyboru są modele o różnym stosunku jakości do opóźnienia i ceny, a dobranie właściwego jest najprostszą optymalizacją kosztu.

Model najszybszy generuje mowę z opóźnieniem rzędu kilkudziesięciu milisekund i nadaje się do rozmów w czasie rzeczywistym, gdzie każda dziesiąta sekundy jest odczuwalna. Kosztuje też mniej za znak, bo rozliczany jest korzystniej.

Model wielojęzyczny daje wyższą jakość i lepiej radzi sobie z intonacją, więc sprawdza się przy nagraniach, które ktoś odsłucha w całości: lektor do materiału wideo, książka mówiona, komunikaty w aplikacji.

Najnowsza generacja stawia na wyrazistość emocjonalną i obsługuje ponad siedemdziesiąt języków. Różnica słychać najbardziej w dialogach i w treściach, gdzie płaskie czytanie brzmiałoby sztucznie.

Reguła doboru jest prosta: rozmowa na żywo idzie do modelu szybkiego, nagranie odtwarzane później do modelu o wyższej jakości. Używanie najlepszego modelu do wszystkiego jest najczęstszym powodem, dla którego rachunek zaskakuje.

Pierwsze wywołanie

Code
Bash
pnpm add @elevenlabs/elevenlabs-js
Code
TypeScript
import { ElevenLabsClient } from '@elevenlabs/elevenlabs-js'

const klient = new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_API_KEY })

const audio = await klient.textToSpeech.convert('glos-id', {
  text: 'Twoje zamowienie zostalo wyslane i dotrze w ciagu dwoch dni.',
  modelId: 'eleven_flash_v2_5',
  outputFormat: 'mp3_44100_128'
})

Klucz trzymaj wyłącznie po stronie serwera. Wywołanie z komponentu klienckiego ujawnia go każdemu, kto otworzy narzędzia deweloperskie, a rachunek obciąża Ciebie. W aplikacji przeglądarkowej audio pobiera się przez własną trasę serwerową.

Code
TypeScript
export async function POST(request: Request) {
  const { tekst } = await request.json()

  if (tekst.length > 500) {
    return new Response('Tekst za dlugi', { status: 400 })
  }

  const audio = await klient.textToSpeech.convert(GLOS_ID, {
    text: tekst,
    modelId: 'eleven_flash_v2_5'
  })

  return new Response(audio, {
    headers: {
      'Content-Type': 'audio/mpeg',
      'Cache-Control': 'public, max-age=31536000, immutable'
    }
  })
}

Ograniczenie długości w drugiej linii nie jest ostrożnością na wyrost. Trasa bez limitu pozwala dowolnej osobie wysłać sto tysięcy znaków i obciążyć Twój rachunek jednym żądaniem. Nagłówek pamięci podręcznej ma znaczenie równie praktyczne: ten sam komunikat generowany po raz drugi kosztuje tyle samo co za pierwszym razem, więc warto go nie generować.

Format wyjścia warto dobrać świadomie. Wyższa jakość dźwięku znaczy większy plik i dłuższe pobieranie, a przy komunikatach w interfejsie różnica między czterdziestoma czterema a dwudziestoma czterema kilohercami bywa niesłyszalna. Przy telefonii z kolei sens ma format o niskiej częstotliwości, bo i tak zostanie zredukowany po drodze.

Strumieniowanie

Generowanie całego nagrania przed odtworzeniem oznacza ciszę przez kilka sekund. Strumieniowanie pozwala zacząć odtwarzanie, zanim reszta powstanie.

Code
TypeScript
const strumien = await klient.textToSpeech.stream('glos-id', {
  text: tresc,
  modelId: 'eleven_flash_v2_5'
})

for await (const fragment of strumien) {
  odtwarzacz.dopisz(fragment)
}

To rozwiązanie ma sens wszędzie tam, gdzie użytkownik czeka. Przy asystencie głosowym różnica między dwiema sekundami ciszy a natychmiastowym początkiem odpowiedzi decyduje o tym, czy rozmowa brzmi naturalnie.

Osobnym wzorcem jest łączenie strumienia z modelu językowego ze strumieniem mowy. Zdania wychodzące z modelu przekazujesz do syntezy po kawałku, zamiast czekać na całą odpowiedź.

Code
TypeScript
let bufor = ''

for await (const kawalek of strumienModelu) {
  bufor += kawalek

  const granica = bufor.search(/[.!?]\s/)
  if (granica === -1) continue

  const zdanie = bufor.slice(0, granica + 1)
  bufor = bufor.slice(granica + 2)

  await wyslijDoSyntezy(zdanie)
}

if (bufor.trim()) await wyslijDoSyntezy(bufor)

Ostatnia linia jest tu częścią najczęściej pomijaną: bez niej ostatnie zdanie odpowiedzi przepada, jeśli model zakończył ją bez kropki. Dzielenie po zdaniach jest konieczne, bo synteza urwanego zdania brzmi źle, a intonacja opadająca w środku myśli jest słyszalna od razu.

Klonowanie głosu i kwestie prawne

Platforma pozwala stworzyć głos na podstawie nagrania, w dwóch wariantach: uproszczonym, wymagającym minuty materiału, oraz profesjonalnym, wymagającym dziesiątek minut i dającym wierniejszy efekt.

Tu zaczyna się część, której nie da się rozwiązać technicznie. Głos konkretnej osoby to jej dobro osobiste, więc sklonowanie go bez zgody rodzi odpowiedzialność niezależnie od tego, co pozwala platforma. Regulamin usługi wymaga posiadania praw do nagrania, a odpowiedzialność za to spoczywa na Tobie.

Przy zastosowaniu komercyjnym potrzebujesz zgody na piśmie, obejmującej zakres użycia i czas. Umowa z lektorem sprzed pięciu lat na nagranie nie obejmuje wytrenowania modelu na jego głosie, więc do tego trzeba wrócić osobno.

Warto też wiedzieć, że prawa komercyjne do wygenerowanego audio zależą od planu. Poziom darmowy zwykle ich nie obejmuje, więc materiał wypuszczony publicznie wymaga planu płatnego. To najczęstszy błąd przy przejściu z testu do wdrożenia, bo nagranie powstałe w fazie prób trafia potem do produktu bez ponownego zastanowienia nad tym, na jakim koncie powstało.

Agenci głosowi

Trzeci obszar to agent prowadzący rozmowę: słucha, rozumie, odpowiada i może wywoływać narzędzia. Składa się z rozpoznawania mowy, modelu językowego i syntezy, spiętych w jeden przepływ.

Rozliczenie jest tu inne niż w pozostałych częściach platformy, bo za minutę rozmowy, a nie za znaki. Stawki zaczynają się od kilku do kilkunastu centów za minutę w zależności od planu, przy czym warto sprawdzić, czy koszt modelu językowego jest w tym zawarty, czy dochodzi osobno.

Trzy rzeczy decydują o tym, czy taki agent działa. Pierwsza to obsługa przerwania: człowiek wchodzi w słowo, a agent musi zamilknąć natychmiast, inaczej rozmowa staje się nieznośna. Druga to opóźnienie całego łańcucha, gdzie przekroczenie mniej więcej sekundy zaczyna być odczuwalne jako niezręczna cisza. Trzecia to zachowanie w sytuacji, gdy agent nie wie, bo przekazanie rozmowy do człowieka jest lepsze niż wymyślona odpowiedź.

Do budowy logiki agenta możesz użyć narzędzi platformy albo wpiąć własną, opartą na przykład o OpenAI Agents SDK czy LangGraph, i wykorzystać tę usługę wyłącznie jako warstwę głosową. Trzecią drogą jest pośrednik pokroju Vapi, który sam spina rozpoznawanie mowy, model i syntezę oraz dokłada telefonię, przyjmując Twój klucz do tej usługi jako źródło głosu. Rachunek robi się wtedy wielowarstwowy: stawka pośrednika pokrywa wyłącznie orkiestrację, a rozpoznawanie mowy, tokeny modelu, znaki syntezy i połączenie telefoniczne liczą się osobno, więc realny koszt minuty bywa kilkukrotnie wyższy od tego z cennika.

Sterowanie brzmieniem

Domyślne ustawienia dają wynik poprawny, a nie najlepszy dla Twojego zastosowania. Kilka parametrów zmienia efekt bardziej niż zmiana głosu.

Stabilność decyduje o tym, jak bardzo kolejne generacje tego samego tekstu różnią się między sobą. Wartość wysoka daje przewidywalne, spokojne czytanie, przydatne przy komunikatach systemowych. Wartość niska daje więcej wyrazu i wahania, co brzmi lepiej w dialogu, a gorzej w powtarzalnym komunikacie.

Podobieństwo określa, jak blisko wynik trzyma się głosu wzorcowego. Ustawienie na maksimum bywa kontrproduktywne, bo model przenosi też szumy i wady nagrania źródłowego.

Trzecim parametrem jest przesada w stylu, która wzmacnia charakterystyczne cechy głosu. Warto z nią uważać, bo powyżej pewnego progu mowa zaczyna brzmieć jak parodia samej siebie.

Trzy opisane parametry przekazujesz razem z tekstem, a ich wartości warto ustalić raz dla całego produktu, zamiast dobierać przy każdym wywołaniu.

Code
TypeScript
const audio = await klient.textToSpeech.convert(GLOS_ID, {
  text: tresc,
  modelId: 'eleven_multilingual_v2',
  voiceSettings: {
    stability: 0.5,
    similarityBoost: 0.75,
    style: 0.0,
    useSpeakerBoost: true
  }
})

Osobną drogą sterowania jest sam tekst. Znaki interpunkcyjne wpływają na pauzy, a zapisanie liczby słownie usuwa najczęstszy błąd odczytu.

Code
TypeScript
const naEkran = 'Zamowienie 4471, kwota 249,00 zl, dostawa 12.08.'
const doOdczytania = 'Zamowienie cztery cztery siedem jeden. '
  + 'Kwota dwiescie czterdziesci dziewiec zlotych. '
  + 'Dostawa dwunastego sierpnia.'

Przy komunikatach produkcyjnych warto trzymać w kodzie obie wersje. Ta pierwsza trafia na ekran, druga do syntezy, a próba obsłużenia obu jednym łańcuchem znaków kończy się albo dziwnym tekstem na ekranie, albo dziwnym brzmieniem w słuchawkach.

Dubbing i praca z materiałem wideo

Platforma obsługuje też tłumaczenie i podłożenie głosu pod istniejące nagranie, z zachowaniem barwy mówiącego. To osobny przepływ, w którym najpierw powstaje transkrypcja, potem tłumaczenie, a na końcu synteza dopasowana do czasu wypowiedzi.

Ostatni etap jest trudniejszy, niż wygląda. Zdanie po polsku bywa dłuższe od angielskiego o kilkanaście procent, więc dopasowanie do oryginalnego czasu wymaga albo skrócenia tłumaczenia, albo przyspieszenia mowy. Automat robi jedno i drugie, a wynik przy dłuższych materiałach warto sprawdzić.

Praktyczna rada: przy materiałach marketingowych i szkoleniowych traktuj wynik jako wersję roboczą do korekty, a nie jako produkt gotowy. Poprawienie kilku zdań, w których tłumaczenie zgubiło sens, zajmuje mniej czasu niż nagranie całości od nowa i daje efekt, którego automat sam nie osiągnie.

Ceny

PlanKosztKredyty miesięcznieDla kogo
Free0 USD10 tys.Testy, bez praw komercyjnych
Starter6 USD miesięcznie30 tys.Małe projekty, prawa komercyjne
Creator22 USD miesięcznie121 tys.Regularna produkcja treści
Pro99 USD miesięcznie600 tys.Większy wolumen, wyższa jakość
Scale i Business299 i 990 USD miesięcznie1,8 mln i 6 mlnWdrożenia produkcyjne, agenci głosowi

Rozliczenie opiera się na kredytach, gdzie jeden kredyt odpowiada zwykle jednemu znakowi tekstu. Modele szybsze zużywają ich mniej niż modele o wyższej jakości, więc dobór modelu przekłada się wprost na to, ile treści zmieścisz w planie.

Przekroczenie limitu rozliczane jest osobno według stawki zależnej od planu. Przy wdrożeniu produkcyjnym warto policzyć średnią długość komunikatu i pomnożyć przez spodziewany wolumen, zamiast zgadywać z opisu planu.

Prosta oszczędność, o której często się zapomina: buforowanie. Komunikaty powtarzalne, jak powitanie w aplikacji albo standardowe potwierdzenie, generujesz raz i przechowujesz jako plik, zamiast produkować je przy każdym odtworzeniu. Klucz bufora warto zbudować z treści tekstu, identyfikatora głosu i nazwy modelu, bo zmiana któregokolwiek z nich powinna dać nowe nagranie.

Kontra alternatywy

RozwiązanieMocna stronaSłabośćKiedy wybrać
ElevenLabsJakość głosu, klonowanie, agenci w komplecieKoszt przy dużym wolumenieTreści, których ktoś słucha uważnie
Google GeminiMowa razem z resztą modeli w jednym APIMniejszy wybór głosówProjekt już oparty o tego dostawcę
Modele lokalneBrak kosztu za znak, dane u siebieNiższa jakość, wymaga sprzętuWymóg pełnej prywatności, duży wolumen
Głos systemowyZero kosztu, działa w przeglądarceBrzmi jak automatFunkcja pomocnicza, nie produkt

Ostatni wiersz bywa niesłusznie pomijany. Do odczytania artykułu na życzenie użytkownika wbudowany mechanizm przeglądarki wystarcza i nie kosztuje nic. Płatna synteza ma sens tam, gdzie głos jest częścią produktu, a nie udogodnieniem.

Przy wyborze warto zadać jedno pytanie: czy ktoś będzie słuchał tego głosu dłużej niż kilka sekund. Przy krótkim potwierdzeniu w interfejsie różnica między rozwiązaniami jest niezauważalna. Przy dwudziestominutowym materiale szkoleniowym decyduje o tym, czy ktoś go dosłucha do końca, więc to tam warto wydać pieniądze.

Drugie pytanie dotyczy wolumenu. Rozwiązanie płatne za znak przy milionie znaków dziennie daje rachunek, przy którym model uruchomiony we własnej infrastrukturze zaczyna wyglądać rozsądnie, mimo niższej jakości. Przy kilku tysiącach znaków dziennie ta kalkulacja nie ma sensu, bo koszt utrzymania przewyższa oszczędność.

Typowe błędy

Pierwszy to klucz po stronie przeglądarki. Ujawniony klucz oznacza cudze wywołania na Twój rachunek, a wykrycie tego zajmuje zwykle miesiąc.

Drugi to używanie modelu o najwyższej jakości do komunikatów systemowych. Różnicy nikt nie usłyszy, a zużycie kredytów jest wielokrotnie wyższe.

Trzeci to brak buforowania powtarzalnych fragmentów. Ten sam komunikat generowany tysiąc razy dziennie to tysiąc razy ta sama opłata za identyczny wynik.

Czwarty to publikowanie materiału wygenerowanego na planie darmowym. Prawa komercyjne przypisane są do planu, więc materiał wypuszczony bez odpowiedniego poziomu to problem prawny, a nie techniczny.

Piąty to klonowanie głosu bez pisemnej zgody. Regulamin przenosi odpowiedzialność na Ciebie, a nagranie z internetu nie jest podstawą do niczego.

Szósty to pomijanie obsługi przerwania u agenta głosowego. Agent mówiący dalej, gdy rozmówca zaczął mówić, sprawia, że rozmowa staje się nie do prowadzenia.

FAQ

Ile kosztuje ElevenLabs?

Plany zaczynają się od poziomu darmowego bez praw komercyjnych, przez sześć dolarów miesięcznie za wariant podstawowy, dwadzieścia dwa dolary za twórczy, dziewięćdziesiąt dziewięć za profesjonalny, po dwieście dziewięćdziesiąt dziewięć i dziewięćset dziewięćdziesiąt dolarów przy wdrożeniach większych. Rozliczenie opiera się na kredytach, gdzie jeden kredyt to zwykle jeden znak tekstu.

Czy mogę użyć wygenerowanego głosu komercyjnie?

Tak, na planach płatnych, które obejmują prawa komercyjne. Poziom darmowy zwykle ich nie daje, więc materiał przeznaczony do publikacji wymaga wykupienia planu. To najczęstsza pułapka przy przejściu z testu do wdrożenia.

Czy klonowanie głosu jest legalne?

Klonowanie własnego głosu albo głosu osoby, która wyraziła zgodę, tak. Sklonowanie cudzego głosu bez zgody narusza dobra osobiste i regulamin usługi, a odpowiedzialność spoczywa na osobie, która to zrobiła. Przy zastosowaniach komercyjnych potrzebna jest zgoda na piśmie obejmująca zakres i czas użycia.

Jak dobrze radzi sobie z polszczyzną?

Dobrze, przy czym jakość zależy od modelu i od tekstu. Skróty, liczby i nazwy własne bywają czytane niepoprawnie, więc przy komunikatach produkcyjnych warto je zapisać słownie albo przetestować. Najnowsza generacja obsługuje ponad siedemdziesiąt języków i wyraźnie lepiej radzi sobie z intonacją.

Czy da się zbudować agenta głosowego na własnej logice?

Tak, można użyć tej usługi wyłącznie jako warstwy rozpoznawania i syntezy mowy, a logikę rozmowy poprowadzić własnym kodem albo biblioteką agentową. Kluczowe przy takim układzie jest opóźnienie całego łańcucha, bo składa się z trzech etapów i każdy dokłada swoje.

Dokumentacja stoi na stronie projektu, a aktualne progi cenowe znajdziesz na stronie cennika.