← Blog

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ę"
  • → "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