Przejdź do treści
Kod Zero Kamil Krawiec
Menu

Odcinek kanału YouTube

Open WebUI PRZEMÓWIŁ! Piper TTS i idealny polski głos | Homelab #10

18.12.2025

Twój lokalny LLM może brzmieć naturalnie. Integrujemy Piper TTS z Open WebUI, konfigurujemy Docker Compose i wybieramy model polskiego głosu (MC Speech).

Homelab TTS Open WebUI Docker

YouTube

Film ładuje się dopiero po kliknięciu — bez ciasteczek YouTube przed odtworzeniem.

Otwórz na YouTube →

Notatki do odcinka

Streszczenie i rozwinięcie filmu — dla osób, które wolą najpierw przeskanować temat, zamiast oglądać całość.

Czy lokalny Open WebUI musi brzmieć jak stary syntezator? W tym odcinku podłączam Piper TTS i sprawdzam, jak wykorzystać go do odczytywania odpowiedzi po polsku. Punktem odniesienia jest model Bielik oraz głos MC Speech, który wybieram jako swój faworyt.

Całość działa lokalnie, a konfiguracja opiera się na istniejącym stosie Docker Compose. Pokazuję nie tylko końcowy efekt, lecz także miejsca, w których łatwo zatrzymać się na błędzie: dodanie nowego serwisu, sieć oznaczona jako external: true, ustawienia silnika audio i cache plików dźwiękowych.

Co zobaczysz

Zaczynam od dodania usługi Piper TTS do istniejącego stacka Docker Compose. To ważny krok, bo Open WebUI i syntezator muszą znaleźć się w konfiguracji, która pozwoli im się ze sobą komunikować. W odcinku korzystam z pliku docker-compose.yaml i pokazuję, gdzie w tej układance pojawia się Piper.

Następnie wyjaśniam znaczenie sieci z flagą external: true. Sama deklaracja nie tworzy sieci automatycznie. Jeżeli oczekiwana sieć nie istnieje, Docker zwróci błąd „network not found”. W materiale pokazuję ten problem i rozwiązanie polegające na utworzeniu sieci, zanim kontenery spróbują z niej skorzystać.

Kiedy warstwa kontenerów działa, przechodzę do panelu administracyjnego Open WebUI. Ustawiam silnik audio na OpenAI, ponieważ lokalny kontener Pipera udostępnia interfejs zgodny z tym sposobem komunikacji. Dzięki temu Open WebUI może wysyłać tekst do lokalnej usługi bez używania zewnętrznego silnika syntezy.

Kolejny temat to modele głosowe. Pokazuję, skąd pobrać polskie głosy z Hugging Face, oraz testuję pl_PL-mcspeech-medium. W praktyce nie chodzi wyłącznie o wybranie pliku modelu. Trzeba jeszcze sprawdzić, jak brzmi ten sam tekst po podłączeniu go do Open WebUI. W odcinku słucham między innymi opowiadania o Mili.

Na końcu zmieniam parametry audio, w tym prędkość i noise. Jeżeli efekt nie pojawia się od razu, nie musi to oznaczać, że konfiguracja jest błędna. Open WebUI cache’uje pliki dźwiękowe, więc przy testowaniu zmian trzeba uwzględnić zachowanie pamięci podręcznej. To właśnie ta pułapka zajmuje ostatnią część demonstracji.

Kluczowe wnioski

Najważniejszy wniosek dotyczy granicy między konfiguracją a diagnozowaniem. Dodanie wpisu do Compose nie wystarcza, jeżeli kontenery odwołują się do zewnętrznej sieci, której Docker nie zna. Warto sprawdzić tę zależność na początku, bo inaczej późniejsze ustawienia Open WebUI nie mają jeszcze warunków, żeby zadziałać.

Zgodność z interfejsem OpenAI jest tu mechanizmem integracji, a nie wyborem chmury. Open WebUI może korzystać z ustawienia nazwanego OpenAI, podczas gdy faktyczna synteza odbywa się w lokalnym Piperze. To upraszcza połączenie między gotowym interfejsem a własną usługą.

Dobry polski model głosu zmienia odbiór całego rozwiązania. W tym teście szczególne miejsce zajmuje MC Speech, ale jego wybór wynika z odsłuchu w konkretnym zastosowaniu, a nie z uniwersalnego rankingu wszystkich głosów. Modele warto sprawdzać na tekście, który rzeczywiście ma być odczytywany.

Zmiana parametrów wymaga cierpliwości i kontroli cache. Jeśli UI ponownie odtwarza wcześniej wygenerowany plik, sama modyfikacja ustawień nie da od razu nowego rezultatu. Dlatego przy ocenie prędkości lub noise trzeba najpierw upewnić się, że słuchamy świeżo wygenerowanego audio.

Jak to odtworzyć

Zacznij od konfiguracji Docker Compose dostępnej w repozytorium wskazanym w materiałach. Dodaj do istniejącego stacka serwis Piper TTS i sprawdź, czy używana sieć oznaczona jako external: true istnieje. W odcinku rozwiązuję błąd przez utworzenie brakującej sieci, a potem przechodzę do ustawień audio w panelu administracyjnym Open WebUI.

Modele głosowe pobierz z Hugging Face. Do testu z odcinka używam pl_PL-mcspeech-medium. Po zmianie parametrów audio sprawdź, czy Open WebUI nie odtwarza pliku z cache.

Najczęstsze pytania

Czy potrzebuję chmury, żeby Open WebUI czytał po polsku?

Nie w tym układzie. Piper TTS działa lokalnie, a Open WebUI komunikuje się z nim przez ustawiony interfejs audio.

Co oznacza external: true?

Konfiguracja zakłada, że sieć została utworzona poza danym projektem Compose. Jeżeli jej nie ma, pojawi się błąd „network not found”.

Dlaczego po zmianie parametrów słyszę ten sam plik?

Open WebUI może korzystać z cache’owanego audio. Najpierw trzeba uwzględnić cache, dopiero potem oceniać zmianę prędkości lub noise.

Materiały

← Wróć do listy