Tutaj zaprezentuję przykładowe zastosowanie ComfyUI z TTS.
ComfyUI natywnie nie ma TTSa, ale jest TTS Audio Suite, które zawiera kompilację różnych TTSów do wypróbowania.
Na bazie testów, Higgs Audio v3 Engine najlepiej się sprawdził w języku polskim, zatem będę go stosować w dalszym wpisie.
Instalacja
Sam używałem ręcznej instalacji TTS-Audio-Suite więc jak ComfyUI Manager nie styknie, to oto lista kroków:
## Idziemy do folderu ComfyUI z rozszerzeniamicd /path/to/comfy-ui/custom_nodes## Klonujemy repogit clone https://github.com/diodiogod/TTS-Audio-Suite## Idziemy do korzenia ComfyUIcd ..## Instalujemy zależnościuv pip install -r custom_nodes/tts_audio_suite/requirements.txt## Uruchamiamy serwer i jak wszystko git, powinno dać informacje o tym, że załadowały się TTSyuv run main.py
Składanie workflow
Na początku należy kliknąć + na samej górze lub w New po kliknięciu loga ComfyUI w bocznym menu, by utworzyć nową przestrzeń roboczą (workflow).
Potem należy kliknąć w Nodes i w sekcji Extensions powinien być TTS Audio Suite
Z Engines należy przeciągnąć Higgs Audio v3 Engine do przestrzeni roboczej
Z Text to Speech należy przeciągnąć TTS Text
Następnie trzeba zescrollować w górę do kategorii Comfy nodes i kliknąć w audio i przeciągnąć Save Audio oraz Load Audio
Load Audio należy podłączyć do opt_narrator a Higgs Audio v3 Engine -
TTS_engine w node TTS Text
Load Audio - ustala, jaka próbka audio ma być sklonowana
Higgs Audio v3 Engine - ustala, jaki silnik TTS ma być użyty. Można zamienić na inny dostępny TTS Audio Suite do testów
Pole audio z TTS Text należy podłączyć do audio w node Save Audio, który zapisze plik w podanym formacie do output w folderze ComfyUI
Tak mniej więcej powinno to wyglądać
Po złożeniu należy kliknąć Run i workflow zacznie pracować
Na wstępie pobierze model z Huggingface a potem dopiero zacznie dalej przetwarzać
Promptowanie HiggsTTS 3
HiggsTTS 3 w teorii daje opcję nakierowania głosu na konkretną emocję lub styl.
Żeby to zrobić, należy dać w prompcie specjalny tekst między <|…|> przed tekstem, który ma mieć daną cechę.
Warto sprawdzać różne ustawienia seed (domyślnie się zmienia per uruchomienie workflow), gdyż HiggsTTS może wypluć dla jednego zestawu tekst + audio nieco inne, mniej lub bardziej pożądane, brzmienie za każdą generacją.
Można też próbować zmusić angielski głos, by brzmiał na polski, jednak to różnie wygląda, gdyż raz wyjdzie głos gadający ładną polszczyzną a raz po dekadzie w USA.
Tłumaczenie
Emocje
Token
Opis
<|emotion:elation|>
Radość / wzniosłość
<|emotion:amusement|>
Rozbawienie / figlarne śmiech
<|emotion:enthusiasm|>
Entuzjazm / ekscytacja
<|emotion:determination|>
Determinacja / stanowczość
<|emotion:pride|>
Duma / pewność siebie
<|emotion:contentment|>
Spokojne zadowolenie
<|emotion:affection|>
Ciepło / afekt
<|emotion:relief|>
Ulga
<|emotion:contemplation|>
Zamyślenie / refleksja
<|emotion:confusion|>
Dezorientacja
<|emotion:surprise|>
Zaskoczenie
<|emotion:awe|>
Podziw / zachwyt
<|emotion:longing|>
Tęsknota / pragnienie
<|emotion:arousal|>
Nasilone pragnienie
<|emotion:anger|>
Złość
<|emotion:fear|>
Strach
<|emotion:disgust|>
Wstręt
<|emotion:bitterness|>
Gorycz
<|emotion:sadness|>
Smutek
<|emotion:shame|>
Wstyd
<|emotion:helplessness|>
Bezradność
Styl
Token
Opis
<|style:singing|>
Śpiew
<|style:shouting|>
Krzyk / mocny głos
<|style:whispering|>
Szept
Onomatopeje:
Token
Opis
Sugerowana onomatopeja
<|sfx:cough|>
Kaszel
Ahem
<|sfx:laughter|>
Śmiech
Haha / Hehe
<|sfx:crying|>
Płacz
Boohoo / Sob
<|sfx:screaming|>
Krzyk
Ahh / Aaah
<|sfx:burping|>
Odbijanie
Burp
<|sfx:humming|>
Nucenie
Hmm / Mmm
<|sfx:sigh|>
Westchnienie
Uh / Ahh
<|sfx:sniff|>
Powąchanie
Sff
<|sfx:sneeze|>
Kichnięcie
Achoo
Ton i brzmienie:
Token
Efekt
<|prosody:speed_very_slow|>
≈0.65× prędkości
<|prosody:speed_slow|>
≈0.85× prędkości
<|prosody:speed_fast|>
≈1.2× prędkości
<|prosody:speed_very_fast|>
≈1.4× prędkości
<|prosody:pitch_low|>
≈−3 półtony
<|prosody:pitch_high|>
≈+2.5 półtonu
<|prosody:pause|>
≈400–700 ms pauzy
<|prosody:long_pause|>
≈700–1500 ms pauzy
<|prosody:expressive_high|>
Bardziej ekspresyjna interpretacja
<|prosody:expressive_low|>
Bardziej monotonna interpretacja
Przykłady:
Teksty zostały wygenerowane na podstawie próbek z gry TES V: Skyrim w trakcie prac nad dubbingiem do House of Horrors - Quest Expansion - Jeszcze nie gotowy
<|emotion:determination|> Najwyższy czas oczyścić ten dom z tego tałatajstwa! <|emotion:contentment|> Na mój znak?!
Tutaj znak zapytania to bardziej hakowanie tonu, by zgadzał się z docelowymi
Do ataku, teraz! <|style:shouting|> <|emotion:anger|> Zniszcz to; szybko!
<|emotion:relief|> W ostatniej chwili! … <|sfx:sigh|> … <|emotion:relief|> Jesteśmy tutaj bezpieczni.
Wstęp
W tym artykule zobaczysz, jak połączyć ComfyUI z technologią Text-to-Speech (TTS), aby generować mowę.
Natywnie ComfyUI nie posiada funkcji TTS, ale można to uzupełnić za pomocą rozszerzenia TTS Audio Suite. Pakiet ten zawiera zestaw różnych silników TTS, które można przetestować.
Z moich testów wynika, że Higgs Audio v3 Engine najlepiej radzi sobie w języku polskim, dlatego to właśnie tego silnika użyję w poniższym przykładzie.
Instalacja
Jeśli nie korzystasz z ComfyUI Manager, możesz zainstalować rozszerzenie ręcznie, wykonując poniższe kroki w terminalu:
## 1. Wejdź do folderu z rozszerzeniami ComfyUIcd /path/to/comfy-ui/custom_nodes## 2. Sklonuj repozytoriumgit clone https://github.com/diodiogod/TTS-Audio-Suite## 3. Wróć do folderu głównego ComfyUIcd ..## 4. Zainstaluj niezbędne bibliotekiuv pip install -r custom_nodes/tts_audio_suite/requirements.txt## 5. Uruchom serwer## Jeśli wszystko przebiegnie pomyślnie, w konsoli zobaczysz informację o załadowaniu silników TTSuv run main.py
Składanie workflow
Aby przygotować proces generowania dźwięku, należy skonfigurować odpowiednie połączenia między modułami (węzłami).
Utwórz nową przestrzeń roboczą: Kliknij przycisk + na górze ekranu lub wybierz opcję New w menu (po kliknięciu loga ComfyUI w bocznym pasku).
Dodaj odpowiednie moduły: Kliknij przycisk Nodes, przejdź do sekcji Extensions i znajdź TTS Audio Suite. Następnie:
Z sekcji Engines przeciągnij Higgs Audio v3 Engine do obszaru roboczego.
Z sekcji Text to Speech przeciągnij TTS Text do obszaru roboczego.
Dodaj moduły audio: Przewiń listę w górę do kategorii Comfy nodes, wybierz sekcję audio i dodaj dwa moduły: Save Audio oraz Load Audio.
Połącz moduły (Workflow):
Podłącz wejście Load Audio do wejścia opt_narrator w module TTS Text.
Węzeł Load Audio służy do wskazania próbki dźwięku, z której głos ma zostać sklonowany.
Podłącz Higgs Audio v3 Engine do wejścia TTS_engine w module TTS Text.
Węzeł ten odpowiada za wybór silnika TTS. Możesz go zmienić na inny, jeśli chcesz przetestować inne brzmienie.
Podłącz wyjście audio z modułu TTS Text do wejścia audio w module Save Audio.
Plik wynikowy zostanie zapisany w formacie określonym w ustawieniach i trafi do folderu output w katalogu ComfyUI.
Tak powinien prezentować się gotowy schemat połączeń
Uruchom proces: Gdy wszystkie połączenia są gotowe, kliknij Run.
Uwaga: Przy pierwszym uruchomieniu system musi pobrać niezbędne modele z serwisu Huggingface.
Promptowanie HiggsTTS 3
Silnik HiggsTTS 3 pozwala na kontrolowanie emocji oraz stylu wypowiedzi. Aby tego dokonać, w polu tekstowym należy umieścić specjalne znaczniki <\|...\|> przed fragmentem tekstu, który ma otrzymać daną cechę.
Seed: Warto eksperymentować z parametrem seed (domyślnie zmienia się on przy każdym uruchomieniu). HiggsTTS może wygenerować nieco inne brzmienie dla tego samego tekstu i próbki audio przy każdej kolejnej próbie.
Język: Możesz spróbować użyć angielskiego głosu, aby mówił po polsku. Efekt bywa nieprzewidywalny – czasem brzmi to naturalnie, a czasem z silnym, obcym akcentem.
Parametry głosowe
Emocje
Token
Opis
<|emotion:elation|>
Radość / wzniosłość
<|emotion:amusement|>
Rozbawienie / figlarny śmiech
<|emotion:enthusiasm|>
Entuzjazm / ekscytacja
<|emotion:determination|>
Determinacja / stanowczość
<|emotion:pride|>
Duma / pewność siebie
<|emotion:contentment|>
Spokojne zadowolenie
<|emotion:affection|>
Ciepło / afekt
<|emotion:relief|>
Ulga
<|emotion:contemplation|>
Zamyślenie / refleksja
<|emotion:confusion|>
Dezorientacja
<|emotion:surprise|>
Zaskoczenie
<|emotion:awe|>
Podziw / zachwyt
<|emotion:longing|>
Tęsknota / pragnienie
<|emotion:arousal|>
Nasilone pragnienie
<|emotion:anger|>
Złość
<|emotion:fear|>
Strach
<|emotion:disgust|>
Wstręt
<|emotion:bitterness|>
Gorycz
<|emotion:sadness|>
Smutek
<|emotion:shame|>
Wstyd
<|emotion:helplessness|>
Bezradność
Styl
Token
Opis
<|style:singing|>
Śpiew
<|style:shouting|>
Krzyk / mocny głos
<|style:whispering|>
Szept
Onomatopeje (efekty dźwiękowe)
Token
Opis
Sugerowane użycie
<|sfx:cough|>
Kaszel
Ahem
<|sfx:laughter|>
Śmiech
Haha / Hehe
<|sfx:crying|>
Płacz
Boohoo / Sob
<|sfx:screaming|>
Krzyk
Ahh / Aaah
<|sfx:burping|>
Odbijanie
Burp
<|sfx:humming|>
Nucenie
Hmm / Mmm
<|sfx:sigh|>
Westchnienie
Uh / Ahh
<|sfx:sniff|>
Powąchanie
Sff
<|sfx:sneeze|>
Kichnięcie
Achoo
Ton i tempo (Prosodia)
Token
Efekt
<|prosody:speed_very_slow|>
Prędkość ok. 0.65×
<|prosody:speed_slow|>
Prędkość ok. 0.85×
<|prosody:speed_fast|>
Prędkość ok. 1.2×
<|prosody:speed_very_fast|>
Prędkość ok. 1.4×
<|prosody:pitch_low|>
Obniżenie tonu o ok. -3 półtony
<|prosody:pitch_high|>
Podwyższenie tonu o ok. +2.5 półtonu
<|prosody:pause|>
Pauza (ok. 400–700 ms)
<|prosody:long_pause|>
Długa pauza (ok. 700–1500 ms)
<|prosody:expressive_high|>
Bardziej ekspresyjna interpretacja
<|prosody:expressive_low|>
Bardziej monotonna interpretacja
Przykłady praktyczne
Poniższe teksty zostały przygotowane na podstawie próbek z gry TES V: Skyrim na potrzeby prac nad rozszerzeniem modyfikacji House of Horrors.
<|emotion:determination|> Najwyższy czas oczyścić ten dom z tego tałatajstwa! <|emotion:contentment|> Na mój znak?!
Tutaj znak zapytania to bardziej hakowanie tonu, by zgadzał się z docelowymi
Do ataku, teraz! <|style:shouting|> <|emotion:anger|> Zniszcz to; szybko!
<|emotion:relief|> W ostatniej chwili! … <|sfx:sigh|> … <|emotion:relief|> Jesteśmy tutaj bezpieczni.
Wstęp
W tym artykule pokażę, jak użyć ComfyUI z systemem TTS (text‑to‑speech).
Chociaż ComfyUI sam nie posiada funkcji TTS, istnieje rozszerzenie o nazwie TTS Audio Suite, które pozwala korzystać z różnych silników TTS.
Na podstawie testów najlepszy wydajność w języku polskim ma Higgs Audio v3 Engine – dlatego będę go używać dalej.
Instalacja
Jeśli ComfyUI Manager nie zainstaluje rozszerzenia automatycznie, wykonaj poniższe kroki ręcznie:
# 1. Przejdź do folderu z rozszerzeniami ComfyUIcd /path/to/comfy-ui/custom_nodes# 2. Klonuj repozytorium TTS‑Audio‑Suitegit clone https://github.com/diodiogod/TTS-Audio-Suite# 3. Powróć do głównego katalogu ComfyUIcd ..# 4. Zainstaluj zależności z pliku requirements.txtuv pip install -r custom_nodes/tts_audio_suite/requirements.txt# 5. Uruchom serwer ComfyUIuv run main.py
Po uruchomieniu powinieneś zobaczyć komunikat, że TTS‑Audio‑Suite został załadowany.
Tworzenie workflow
Rozpocznij nowy workspace – kliknij ikonę „+” w górnej części interfejsu lub wybierz New po kliknięciu loga ComfyUI w bocznym menu.
Dodaj potrzebne węzły – przejdź do sekcji Nodes → Extensions i znajdź TTS Audio Suite.
Z podmenu Engines przeciągnij Higgs Audio v3 Engine.
Z podmenu Text to Speech przeciągnij TTS Text.
Przygotuj węzły audio – przewiń do sekcji Comfy nodes, kliknij w zakładkę audio i przeciągnij węzły Save Audio oraz Load Audio.
Połącz węzły:
Podłącz Load Audio do opt_narrator w węźle Higgs Audio v3 Engine oraz TTS_engine w węźle TTS Text.
Load Audio wybiera, który fragment audio ma zostać sklonowany.
Higgs Audio v3 Engine określa silnik TTS używany do syntezy.
Podłącz pole audio z węzła TTS Text do pola audio w węźle Save Audio, aby zapisać wygenerowany plik audio w wybranym formacie i folderze output.
Tak mniej więcej powinno to wyglądać
Uruchom workflow – kliknij Run. Serwer pobierze model z Huggingface, a potem rozpocznie przetwarzanie.
Promptowanie HiggsTTS 3
HiggsTTS 3 pozwala wskazać głosowi konkretne emocje lub styl.
Wprowadź specjalny tekst w formacie <|...|>przed treścią, którą chcesz zmodyfikować.
Teksty zostały wygenerowane na podstawie fragmentów z gry TES V: Skyrim podczas pracy nad dubbingiem do House of Horrors – Quest Expansion.
<|emotion:determination|> Najwyższy czas oczyścić ten dom z tego tałatajstwa! <|emotion:contentment|> Na mój znak?!
Tutaj znak zapytania to bardziej hakowanie tonu, by zgadzał się z docelowymi
Do ataku, teraz! <|style:shouting|> <|emotion:anger|> Zniszcz to; szybko!
<|emotion:relief|> W ostatniej chwili! … <|sfx:sigh|> … <|emotion:relief|> Jesteśmy tutaj bezpieczni.
Wstęp
W tym wpisie pokażę, jak wykorzystać ComfyUI do generowania mowy. ComfyUI nie posiada wbudowanego modułu do zamiany tekstu na mowę (TTS), ale istnieje rozszerzenie o nazwie TTS Audio Suite, które zawiera kompilację różnych silników TTS gotowych do użycia.
Na podstawie testów, Higgs Audio v3 Engine najlepiej radzi sobie z językiem polskim, dlatego będziemy go wykorzystywać w dalszej części poradnika.
Instalacja
Ponieważ instalacja przez menedżera rozszerzeń ComfyUI może nie działać, oto instrukcja ręcznej instalacji:
## Idziemy do folderu ComfyUI z rozszerzeniamicd /path/to/comfy-ui/custom_nodes## Klonujemy repozytoriumgit clone https://github.com/diodiogod/TTS-Audio-Suite## Wracamy do katalogu głównego ComfyUIcd ..## Instalujemy wymagane zależnościuv pip install -r custom_nodes/tts_audio_suite/requirements.txt## Uruchamiamy serwer. Jeśli instalacja się powiodła, zobaczysz informację o załadowanych silnikach TTSuv run main.py
Składanie workflow
1. Tworzenie przestrzeni roboczej
Na początku musimy utworzyć nową przestrzeń roboczą (workflow). Można to zrobić, klikając ikonę + u góry lub przycisk New w menu bocznym po kliknięciu logo ComfyUI.
2. Dodawanie węzłów głównych
Kliknij w sekcję Nodes w menu bocznym. W zakładce Extensions powinieneś zobaczyć TTS Audio Suite.
Z kategorii Engines przeciągnij węzeł Higgs Audio v3 Engine do obszaru roboczego.
Z kategorii Text to Speech przeciągnij węzeł TTS Text.
3. Dodawanie węzłów audio
Przewiń w górę do kategorii Comfy nodes i kliknij w audio. Przeciągnij do obszaru roboczego węzły Save Audio oraz Load Audio.
4. Podłączanie węzłów
Teraz musimy podłączyć węzły, aby system wiedział, jak działa.
Węzeł Load Audio podłącz do wejścia opt_narrator w węźle TTS Text.
Dlaczego? Ten węzeł ustala, jaka próbka audio ma być sklonowana.
Węzeł Higgs Audio v3 Engine podłącz do wejścia TTS_engine w węźle TTS Text.
Dlaczego? Ten węzeł wybiera konkretny silnik TTS. Możesz go zamienić na inny dostępny w TTS Audio Suite, aby przetestować różne głosy.
5. Zapisywanie wyniku
Pole audio z węzła TTS Text należy podłączyć do pola audio w węźle Save Audio. Węzeł ten zapisze wygenerowany plik w podanym formacie do folderu output w głównym katalogu ComfyUI.
Tak mniej więcej powinno wyglądać gotowe połączenie
6. Uruchomienie
Gdy wszystko jest podłączone, kliknij przycisk Run. Workflow rozpocznie pracę.
Na początku proces pobierze odpowiednie modele z Huggingface, a dopiero potem przystąpi do dalszego przetwarzania.
Promptowanie HiggsTTS 3
HiggsTTS 3 oferuje możliwość sterowania głosem poprzez emocje i styl. Aby to osiągnąć, w polu tekstowym (prompcie) należy użyć specjalnych tagów w formacie <|...|> przed tekstem, który ma mieć daną cechę.
Warto eksperymentować z ustawieniem seed (domyślnie zmienia się przy każdym uruchomieniu workflow), ponieważ HiggsTTS może wygenerować nieco inne brzmienie – bardziej lub mniej pożądane – dla tego samego tekstu przy każdym przebiegu.
Można też próbować “zmusić” angielski głos do brzmienia po polsku, ale wyniki mogą być różne: raz wyjdzie głos mówiący ładną polszczyzną, a raz brzmiący jak ktoś z USA.
Tłumaczenie
Emocje
Token
Opis
<|emotion:elation|>
Radość / wzniosłość
<|emotion:amusement|>
Rozbawienie / figlarne śmiech
<|emotion:enthusiasm|>
Entuzjazm / ekscytacja
<|emotion:determination|>
Determinacja / stanowczość
<|emotion:pride|>
Duma / pewność siebie
<|emotion:contentment|>
Spokojne zadowolenie
<|emotion:affection|>
Ciepło / afekt
<|emotion:relief|>
Ulga
<|emotion:contemplation|>
Zamyślenie / refleksja
<|emotion:confusion|>
Dezorientacja
<|emotion:surprise|>
Zaskoczenie
<|emotion:awe|>
Podziw / zachwyt
<|emotion:longing|>
Tęsknota / pragnienie
<|emotion:arousal|>
Nasilone pragnienie
<|emotion:anger|>
Złość
<|emotion:fear|>
Strach
<|emotion:disgust|>
Wstręt
<|emotion:bitterness|>
Gorycz
<|emotion:sadness|>
Smutek
<|emotion:shame|>
Wstyd
<|emotion:helplessness|>
Bezradność
Styl
Token
Opis
<|style:singing|>
Śpiew
<|style:shouting|>
Krzyk / mocny głos
<|style:whispering|>
Szept
Onomatopeje
Token
Opis
Sugerowana onomatopeja
<|sfx:cough|>
Kaszel
Ahem
<|sfx:laughter|>
Śmiech
Haha / Hehe
<|sfx:crying|>
Płacz
Boohoo / Sob
<|sfx:screaming|>
Krzyk
Ahh / Aaah
<|sfx:burping|>
Odbijanie
Burp
<|sfx:humming|>
Nucenie
Hmm / Mmm
<|sfx:sigh|>
Westchnienie
Uh / Ahh
<|sfx:sniff|>
Powąchanie
Sff
<|sfx:sneeze|>
Kichnięcie
Achoo
Ton i brzmienie (Prosody)
Token
Efekt
<|prosody:speed_very_slow|>
≈0.65× prędkości
<|prosody:speed_slow|>
≈0.85× prędkości
<|prosody:speed_fast|>
≈1.2× prędkości
<|prosody:speed_very_fast|>
≈1.4× prędkości
<|prosody:pitch_low|>
≈−3 półtony
<|prosody:pitch_high|>
≈+2.5 półtonu
<|prosody:pause|>
≈400–700 ms pauzy
<|prosody:long_pause|>
≈700–1500 ms pauzy
<|prosody:expressive_high|>
Bardziej ekspresyjna interpretacja
<|prosody:expressive_low|>
Bardziej monotonna interpretacja
Przykłady
Teksty poniżej zostały wygenerowane na podstawie próbek z gry TES V: Skyrim w trakcie prac nad dubbingiem do House of Horrors - Quest Expansion - Jeszcze nie gotowy.
<|emotion:determination|> Najwyższy czas oczyścić ten dom z tego tałatajstwa! <|emotion:contentment|> Na mój znak?!
Tutaj znak zapytania to bardziej hakowanie tonu, by zgadzał się z docelowymi
Do ataku, teraz! <|style:shouting|> <|emotion:anger|> Zniszcz to; szybko!
<|emotion:relief|> W ostatniej chwili! … <|sfx:sigh|> … <|emotion:relief|> Jesteśmy tutaj bezpieczni.