Jak działa normalizacja polskiego tekstu w systemie TTS — techniczny deep-dive
Czym jest normalizacja tekstu?
Normalizacja tekstu (text normalization) to proces przekształcania tekstu pisanego w formę, którą model syntezy mowy (TTS) może poprawnie przeczytać na głos. To kluczowy etap w pipeline TTS — i jednocześnie najtrudniejszy do zrobienia dobrze dla języka polskiego.
Przykład: tekst "14.II.2019 r." powinien być przeczytany jako "czternastego lutego dwa tysiące dziewiętnastego roku". Model TTS nie wie tego sam z siebie — potrzebuje systemu normalizacji, który zamieni zapis pisany na fonetyczny odpowiednik.
Wyzwania polskiego tekstu
Polski jest szczególnie trudny dla systemów normalizacji z kilku powodów:
Odmiana przez przypadki
Liczebniki w polskim odmieniają się — "2 koty", ale "5 kotów", "23 koty", "132 koty". System musi znać kontekst, żeby prawidłowo odmienić formę.
Daty wymagają dopełniacza: nie "czternaście luty", tylko "czternastego lutego". Rok w formie "dwa tysiące dziewiętnastego", nie "dwa tysiące dziewiętnaście".
Skróty z wieloma wariantami
"Dr" może oznaczać "doktor" lub "drive" (w adresie angielskim). "Prof." to "profesor", ale "prof. dr hab." to cała fraza "profesor doktor habilitowany". System musi rozpoznawać kontekst.
Akronimy: czytać czy literować?
"NATO" czytamy jako słowo ("nato"), ale "AI" literujemy ("a-i"). "UNESCO" to słowo, "FBI" to litery. Skąd model ma wiedzieć, który wariant wybrać?
Nasz system klasyfikuje akronimy na podstawie:
- Listy znanych akronimów (650+ mapowań)
- Struktury fonetycznej (czy da się wymówić jako słowo?)
- Kontekstu w zdaniu
Mieszany tekst polsko-angielski
Współczesne polskie teksty często zawierają wtrącenia angielskie: "zainstaluj update", "sprawdź review", "otwórz New England Review of AI". System musi rozpoznać, które fragmenty są polskie, a które angielskie, i odpowiednio je przetworzyć.
Nasz pipeline normalizacji
Pipeline ZróbEbooka składa się z kilku etapów:
Etap 1: Czyszczenie tekstu
- Usunięcie nagłówków, numerów stron, przypisów
- Normalizacja białych znaków i znaków specjalnych
- Rozpoznanie struktury (akapity, dialogi, cytaty)
Etap 2: Tokenizacja
- Podział tekstu na tokeny (słowa, liczby, znaki interpunkcyjne)
- Klasyfikacja tokenów (tekst, liczba, skrót, akronim, jednostka, URL, email)
Etap 3: Normalizacja kontekstowa
To główny etap, gdzie działają nasze 2800+ reguły:
Daty:
14.II.2019 r.→ "czternastego lutego dwa tysiące dziewiętnastego roku"14 lutego 2019→ "czternastego lutego dwa tysiące dziewiętnastego"14/02/2019→ "czternastego drugiego dwa tysiące dziewiętnastego"
Liczebniki:
4 700→ "cztery tysiące siedemset">4 700→ "ponad cztery tysiące siedemset"3,5 mln→ "trzy i pół miliona"ok. 200 tys.→ "około dwustu tysięcy"
Skróty akademickie:
prof. dr hab.→ "profesor doktor habilitowany"mgr inż.→ "magister inżynier"lic.→ "licencjat"
Jednostki:
km/h→ "kilometrów na godzinę"m²→ "metrów kwadratowych"°C→ "stopni Celsjusza"
Waluty:
150 zł→ "sto pięćdziesiąt złotych"$99.99→ "dziewięćdziesiąt dziewięć dolarów dziewięćdziesiąt dziewięć centów"€1 200→ "tysiąc dwieście euro"
Etap 4: Fonetyzacja
Ostatni etap przed syntezą — zamiana znormalizowanego tekstu na reprezentację fonetyczną, którą model TTS może przetworzyć.
Dlaczego to się nie skaluje na wielojęzyczne modele
Wielojęzyczny model TTS obsługujący 30+ języków nie może mieć tak rozbudowanego systemu normalizacji dla każdego z nich. Wymagałoby to:
- Tysięcy reguł per język
- Ekspertów lingwistycznych dla każdego języka
- Ciągłego utrzymania i aktualizacji
W praktyce wielojęzyczne platformy stosują uproszczone, generyczne reguły normalizacji. Działają "wystarczająco dobrze" dla języków z prostszą gramatyką (angielski), ale zawodzą przy językach fleksyjnych jak polski.
Wyniki
Nasz system normalizacji pozwala na MOS (Mean Opinion Score) 4.31 na 5.0 — co plasuje jakość naszej syntezy blisko profesjonalnych nagrań studyjnych.
To nie jest efekt samego modelu. To efekt całego pipeline — od czyszczenia tekstu, przez normalizację, po syntezę. Każdy etap musi działać poprawnie, żeby wynik brzmiał naturalnie.
Wypróbuj ZróbEbooka za darmo
300 słów dziennie gratis. Zamień swój tekst w audiobook w minuty.
Zacznij za darmo