Jak dostosować SpeechT5 do własnych potrzeb - przewodnik krok po kroku
Źródło: Link
Źródło: Link
118 lekcji bez kodowania. ChatGPT, Claude, Gemini, automatyzacje. Notatnik AI i AI Coach w cenie.
Masz model AI, który zamienia tekst na mowę. Problem? To przypomina robot czytający instrukcję obsługi. Albo nie radzi sobie z polskim akcentem. Albo nie rozpoznaje branżowego słownictwa z Twojej firmy. Rozwiązanie? Fine-tuning - proces, który uczy model Twoich potrzeb. I nie, nie musisz być programistą.
SpeechT5 to model od Microsoft, który potrafi zarówno zamieniać tekst na mowę, jak i mowę na tekst. Działa przyzwoicie "z pudełka", ale prawdziwa moc pojawia się, gdy go dostosujesz. Poniżej znajdziesz konkretne kroki, wymagania i odpowiedzi na pytania, które pewnie masz w głowie.

Fine-tuning modeli AI wymaga kilku rzeczy, zanim w ogóle otworzysz pierwszą aplikację:
Jeśli nie masz nagrań, możesz użyć publicznie dostępnych zbiorów danych (np. Common Voice od Mozilli dla języka polskiego). To dobry punkt startowy, zanim zainwestujesz czas w zbieranie własnych materiałów.
Zacznij od uporządkowania nagrań. Każdy plik audio powinien być w formacie WAV lub MP3, najlepiej 16-bitowy, 16 kHz (to standard dla większości modeli mowy). Jeśli masz nagrania w innej jakości, użyj darmowego Audacity do konwersji.
Struktura folderów powinna wyglądać tak:
audio/ - wszystkie pliki WAVtranscripts.txt - plik tekstowy, gdzie każda linia to: nazwa_pliku.wav|Dokładny tekst z nagraniaPrzykład linii w transcripts.txt:
nagranie_001.wav|To jest przykładowa transkrypcja pierwszego nagrania.
Transkrypcje musisz zrobić ręcznie albo użyć narzędzia typu Whisper od OpenAI (które samo zamienia mowę na tekst, ale potem i tak sprawdzasz każde słowo - błędy w transkrypcjach psują cały trening).
Usuwasz ciszę na początku i końcu każdego nagrania (Audacity ma funkcję "Truncate Silence"). Sprawdzasz, czy w tle nie ma szumów, muzyki, innych głosów. Jeśli są - albo wycinasz te fragmenty, albo odrzucasz plik. Model uczy się WSZYSTKIEGO, co usłyszy - również szumu z klimatyzacji.

Otwierasz Google Colab (colab.research.google.com) i tworzysz nowy notebook. Jeśli nigdy nie korzystałeś z Colaba, to w skrócie: piszesz kod w przeglądarce, a Google uruchamia go na swoich serwerach. Nie instalujesz nic lokalnie.
W pierwszej komórce wpisujesz:
!pip install transformers datasets soundfile librosa
Uruchamiasz (Shift+Enter). To instaluje biblioteki potrzebne do pracy z SpeechT5. Zajmuje 2-3 minuty.
Następnie włączasz GPU: klikasz "Runtime" → "Change runtime type" → wybierasz "GPU" → "Save". Bez tego trening będzie trwał tygodnie zamiast godzin.
Masz dwa sposoby:
from google.colab import drive; drive.mount('/content/drive'). Lepsze dla większych zbiorów.Po wgraniu sprawdzasz, czy ścieżki się zgadzają - wypisujesz listę plików kodem !ls audio/ i patrzysz, czy widać wszystkie WAV-y.
SpeechT5 to model z biblioteki Hugging Face (największy hub modeli AI na świecie). Ściągasz go tak:
from transformers import SpeechT5ForTextToSpeech, SpeechT5Processor
model = SpeechT5ForTextToSpeech.from_pretrained("microsoft/speecht5_tts")
processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_tts")
Pierwsze uruchomienie ściąga około 500 MB danych. Kolejne uruchomienia są szybkie, bo model jest w cache.
"Processor" to narzędzie, które zamienia tekst na format zrozumiały dla modelu (tokeny) i z powrotem - dźwięk na coś, co możesz zapisać jako plik audio.

Teraz łączysz audio z transkrypcjami w format, który model rozumie. Używasz biblioteki datasets od Hugging Face:
from datasets import Dataset, Audio
Tworzysz listę słowników, gdzie każdy słownik to jedno nagranie:
data = []
with open('transcripts.txt', 'r') as f:
for line in f:
filename, text = line.strip().split('|')
data.append({"audio": f"audio/{filename}", "text": text})
Potem zamieniasz to na obiekt Dataset:
dataset = Dataset.from_list(data)
dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))
Ten ostatni krok mówi datasetowi, że kolumna "audio" to nie ścieżka do pliku, tylko faktyczny dźwięk, który ma wczytać i przetworzyć.
Dzielisz dane 90/10 - 90% do treningu, 10% do sprawdzania, czy model się nie "przeuczył" (czyli nie nauczył się na pamięć zamiast zrozumieć zasady):
dataset = dataset.train_test_split(test_size=0.1)
train_dataset = dataset["train"]
eval_dataset = dataset["test"]
Jeśli masz mniej niż 50 nagrań, zostaw wszystko w zbiorze treningowym. Walidacja ma sens przy większych danych.
To moment, gdzie decydujesz, jak długo i jak intensywnie model ma się uczyć. Podstawowe parametry:
1e-5 (czyli 0.00001) to bezpieczna wartość.Wpisujesz to w obiekcie TrainingArguments:
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./speecht5-finetuned",
learning_rate=1e-5,
num_train_epochs=10,
per_device_train_batch_size=4,
save_steps=500,
logging_steps=100
)
"logging_steps" to jak często widzisz postęp (co 100 kroków wypisuje loss - wartość błędu modelu).
Teraz łączysz wszystko w obiekt Trainer i uruchamiasz:
from transformers import Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset
)
trainer.train()
Klikasz Enter i czekasz. Na ekranie zobaczysz coś w stylu:
Epoch 1/10: loss=0.523, eval_loss=0.612
Epoch 2/10: loss=0.401, eval_loss=0.578
Loss powinien spadać. Jeśli rośnie albo skacze chaotycznie - coś jest nie tak (najczęściej: learning_rate za wysoki albo błędy w danych).
Trening 10 epok na 1 godzinie nagrań zajmuje około 3-4 godzin w Colabie Pro. Możesz zamknąć kartę przeglądarki - trening leci dalej (ale nie wyłączaj komputera, bo wtedy Colab się rozłączy).

Po zakończeniu treningu model jest zapisany w folderze ./speecht5-finetuned. Ładujesz go i testujesz:
finetuned_model = SpeechT5ForTextToSpeech.from_pretrained("./speecht5-finetuned")
Generujesz próbkę mowy:
inputs = processor(text="To jest test dostosowanego modelu.", return_tensors="pt")
speech = finetuned_model.generate_speech(inputs["input_ids"])
Zapisujesz jako plik audio:
import soundfile as sf
sf.write("output.wav", speech.numpy(), samplerate=16000)
Pobierasz output.wav z Colaba (prawy klik na plik → Download) i słuchasz. Porównujesz z modelem bazowym (przed fine-tuningiem). Różnica powinna być słyszalna - zwłaszcza w akcencie, intonacji, czy wymowie specjalistycznych słów.
Trzy najczęstsze przyczyny:
5e-6 i trenuj ponownie.Fine-tuning to iteracyjny proces. Rzadko wychodzi idealnie za pierwszym razem. Trenowanie modeli AI wymaga cierpliwości i testowania różnych ustawień.
Jeśli jesteś zadowolony z wyniku, zapisujesz model na stałe:
finetuned_model.save_pretrained("./moj-speecht5")
processor.save_pretrained("./moj-speecht5")
Możesz go potem wgrać na Hugging Face Hub (publiczne repozytorium modeli) albo zachować lokalnie. Do wgrania na Hub potrzebujesz darmowego konta na huggingface.co i tokena API (generujesz go w ustawieniach konta).
Komenda do uploadu:
finetuned_model.push_to_hub("twoja-nazwa/speecht5-polish")
Wtedy każdy może użyć Twojego modelu przez kod:
model = SpeechT5ForTextToSpeech.from_pretrained("twoja-nazwa/speecht5-polish")
Jeśli dostosujesz model do polskiego akcentu albo branżowego słownictwa, udostępnienie go społeczności ma sens - inni oszczędzą czas, a Ty zbudujesz portfolio (przydatne, jeśli szukasz pracy w AI).
Kiedy warto inwestować czas w fine-tuning zamiast używać gotowego modelu?
Masz nagrania lektora, który czytał pierwsze 3 rozdziały książki. Chcesz, żeby AI dokończyło resztę w tym samym głosie. Fine-tuning na 30 minutach nagrań lektora da Ci model, który brzmi spójnie z oryginałem. Nie idealnie (AI wciąż ma problemy z emocjami), ale wystarczająco dobrze, by słuchacz nie zauważył zmiany po 10 sekundach.
Standardowy model myli "angioplastyka" z "angielska plastyka" i nie radzi sobie z nazwami leków. Dostarczasz 2 godziny nagrań medycznych z transkrypcjami (np. z wykładów, konsultacji, podcastów branżowych). Po fine-tuningu model wymawia terminy poprawnie i rozumie kontekst. To różnica między narzędziem, które lekarze odrzucą po tygodniu, a tym, które faktycznie oszczędza czas.
SpeechT5 działa przyzwoicie dla angielskiego, gorzej dla polskiego, a dla kaszubskiego czy śląskiego w ogóle. Jeśli zbierzesz 3 godziny nagrań w takim języku (np. z lokalnego radia, wywiadów, nagrań rodzinnych), możesz stworzyć pierwszy działający model text-to-speech. Nie będzie doskonały, ale lepszy niż nic - a dla społeczności językowej to ogromna wartość.
W każdym z tych przypadków fine-tuning ma sens, bo generyczny model nie rozwiązuje problemu. Jeśli natomiast potrzebujesz po prostu "ładnie brzmiącego głosu" do prezentacji - użyj gotowego modelu (np. ChatGPT z funkcją text-to-speech albo ElevenLabs). Fine-tuning to narzędzie do specjalistycznych potrzeb, nie do codziennej pracy.
Minimum to 30 minut czystych nagrań jednego głosu (około 50-100 plików po 10-30 sekund każdy). Dla lepszych rezultatów: 1-2 godziny. Jeśli chcesz nauczyć model akcentu albo dialektu (nie konkretnego głosu), potrzebujesz 3-5 godzin nagrań od różnych osób. Jakość danych jest ważniejsza niż ilość - 30 minut czystych nagrań da lepszy wynik niż 2 godziny z szumami.
Nie całkiem. Musisz umieć skopiować kod do Google Colaba i zmienić ścieżki do plików. To nie wymaga studiów informatycznych, ale potrzebujesz podstaw (rozumiesz co to zmienna, plik, folder). Jeśli nigdy nie widziałeś kodu, zacznij od kursu wprowadzającego do AI - nauczysz się wystarczająco, by poradzić sobie z fine-tuningiem w 2-3 tygodnie.
Jeśli używasz Google Colab Pro: 10 USD miesięcznie (wystarczy na 3-5 treningów po 3-4 godziny każdy). Jeśli masz własne GPU (np. NVIDIA RTX 3060 lub lepsze): koszt prądu, około 2-3 złote za 4 godziny treningu. Alternatywa to chmura (AWS, Azure, RunPod) - tam płacisz około 0.50-1 USD za godzinę GPU. Najtańsza opcja to Colab, najszybsza to własne GPU, najbardziej skalowalna to chmura.
Tak, SpeechT5 jest na licencji MIT - możesz go używać, modyfikować i sprzedawać bez ograniczeń. Musisz tylko zachować informację o autorach oryginalnego modelu (Microsoft). Jeśli Twoje dane treningowe (nagrania) mają restrykcyjną licencję, wtedy model dziedziczy te ograniczenia - sprawdź prawa do nagrań przed publikacją modelu.
Zbieranie i czyszczenie danych: 4-8 godzin (zależy od jakości źródeł). Konfiguracja środowiska: 30 minut (pierwszy raz), 5 minut (kolejne razy). Trening: 3-6 godzin (zależy od ilości danych i GPU). Testowanie i iteracje: 2-4 godziny. Razem: 10-18 godzin na pierwszy model. Kolejne iteracje (gdy już masz dane i środowisko) to 4-6 godzin. Jeśli robisz to pierwszy raz, zarezerwuj weekend.
Ten poradnik to dopiero początek. W naszym kursie "Praktyczna AI" nauczysz się korzystać z ChatGPT, Claude i innych narzędzi AI w sposób systematyczny - od zera do zaawansowanego poziomu.
Sprawdź kurs →Fine-tuning SpeechT5 to sposób, by model mowy działał dokładnie tak, jak potrzebujesz - z Twoim akcentem, głosem, słownictwem. Proces wymaga czystych danych, kilku godzin treningu i podstawowej znajomości narzędzi. Nie jest to magia dostępna tylko dla programistów - jeśli potrafisz skopiować kod i zmienić ścieżkę do pliku, dasz radę.
Najważniejsze: zacznij od małego zbioru danych (30 minut nagrań), przetestuj cały proces, sprawdź czy wynik ma sens. Dopiero potem inwestuj czas w zbieranie większej ilości materiału. Większość projektów fine-tuningowych upada na etapie przygotowania danych, nie treningu - więc tam skup uwagę.
Jeden krok na start: Otwórz Google Colab, stwórz nowy notebook i uruchom pierwszą komórkę z instalacją bibliotek. To zajmie 3 minuty i zobaczysz, czy Twoje środowisko działa. Resztę zrobisz, gdy będziesz mieć dane.
Na podstawie: SukcesAI Course Material
Podoba Ci się ten artykuł?
Co piątek wysyłam podsumowanie najlepszych artykułów tygodnia. Zapisz się!
90 minut praktycznej wiedzy o AI. Pokaze Ci krok po kroku, jak zaczac oszczedzac 10 godzin tygodniowo dzieki sztucznej inteligencji.
Zapisz sie na webinar