Instructions to use Folx/piper-tts-pl-multi with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Piper
How to use Folx/piper-tts-pl-multi with Piper:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
piper-tts-pl-multi
Polski model Piper (VITS) z trzema głosami w jednym pliku ONNX, 128 MB, 24 kHz.
Głos wybiera się wejściem sid. Model był trenowany na poprawionej fonemizacji
trz/drz, więc pełną jakość daje dopiero razem z frontendem
pltts.
| sid | głos | charakter | f0 |
|---|---|---|---|
| 0 | glos3 |
kobiecy | 209 Hz |
| 1 | design |
głęboki męski | 115 Hz |
| 2 | lektor |
jasny męski | 146 Hz |
Przykłady do posłuchania, dziesięć zdań każdym głosem: pltts/examples.
Pliki
| plik | rozmiar | rola |
|---|---|---|
pl_multi.onnx |
128 MB | model, epoka 15 |
pl_multi.onnx.json |
7 kB | konfiguracja Pipera: num_speakers: 3, speaker_id_map, mapa fonemów |
Oba pliki muszą leżeć obok siebie.
Z frontendem pltts
Model nie mieści się w limicie GitHuba, więc do sklonowanej paczki trzeba go
dociągnąć stąd przed instalacją. Bez modelu pip install kończy się błędem
celowo, żeby nie powstała paczka, która nie umie mówić.
git clone https://github.com/krzynio/piper.git
cd piper/pltts
curl -L -o src/pltts/models/pl_multi.onnx \
https://huggingface.co/Folx/piper-tts-pl-multi/resolve/main/pl_multi.onnx
python -m venv .venv && . .venv/bin/activate
pip install .
pltts --list-voices # 0 glos3, 1 design, 2 lektor
pltts "Trzy drzewa przy ulicy Długiej." -v lektor -o out.wav
pltts "Dzień dobry." -v all # probe_glos3.wav, probe_design.wav, probe_lektor.wav
import pltts
audio, rate = pltts.synth("Pociąg PKP odjeżdża z peronu 3.", "glos3")
pltts.save("out.wav", audio, rate)
Wymaga Pythona 3.9 lub nowszego. espeak-ng nie trzeba instalować osobno, jego dane
przychodzą z piper-phonemize.
Samym Piperem
Model ma standardowy format wielogłosowy Pipera, więc działa też bez pltts
(sprawdzone na piper-tts 1.8.0):
echo "Dzień dobry, z tej strony biuro obsługi klienta." \
| piper -m pl_multi.onnx -c pl_multi.onnx.json -s 2 -f out.wav
Tyle że wtedy fonemy robi czysty eSpeak-pl. Zwija on trz do cz i drz do dż,
więc „trzy drzewa” zabrzmi jak „czy dżewa”. Akronimy, liczby, liczby rzymskie
i angielskie słowa też zostaną przeczytane tak, jak czyta je eSpeak.
Co poprawia pltts
| tekst | sam eSpeak | z pltts |
|---|---|---|
trzy drzewa |
tʃˈɨ dʒˈɛva, czyli „czy dżewa” |
tʂˈɨ dʐˈɛva |
AGD |
ˌaɡjˌɛdˈɛ, zbitka bez granic wyrazów |
a ɡʲˈɛ dˈɛ |
ZUS, BLIK |
literowane | czytane jak słowa |
XIX wieku |
rˌɔwmɛnnˈajntin, angielskie „roman nineteen” |
dʑˌɛvʲɛtnastˈɛɡɔ |
Trump, weekend |
trˈump, vˈɛɛkɛnt |
trˈamp, wˈikɛnt |
dział wsparcia |
fsparsˈija |
fspˈartɕa |
603 |
ʃˈɛɕsɛt, bez „ć” |
ʃˈɛɕtɕsɛt |
Szczegóły, w tym reguła rozstrzygająca, które akronimy czyta się jak słowa, są w README pltts.
Trening
Trzy korpusy jednogłosowe scalone w 244 537 wypowiedzi (glos3 83 610,
design 81 620, lektor 79 307). Ciepły start z jednogłosowego modelu design
(epoka 15), 16 epok, 9 h 50 min na jednym GPU, batch 24, precyzja 32, jakość
high, 24 kHz. Wektor mówcy wchodzi tylko do modułów akustycznych, enkoder
tekstu jest wspólny dla wszystkich głosów. Jeden model zamiast trzech osobnych
to 128 MB zamiast 342 MB.
Skrypt scalający korpusy, hiperparametry i komendy do odtworzenia przebiegu: MODEL.md i training/.
Ograniczenia
lektor ma f0 o 26 Hz niższe od nagrań wzorcowych (146 zamiast 172 Hz)
i z każdą epoką schodził niżej. design i lektor najlepiej brzmiały na
epoce 10, glos3 na 15; wspólny model wymaga jednego snapshotu, wybraliśmy 15
po odsłuchu.
WER na tym modelu nie był mierzony. Nie wiemy, czy wspólny enkoder poprawił
zrozumiałość względem modeli jednogłosowych, czy tylko jej nie pogorszył.
Wszystkie 30 przykładów przeszło przez Whisper large-v3-turbo bez błędów
w słowach, ale to nie jest pomiar, a przykłady były wybrane: dla zdania z „BLIK”
na końcu lektor dał dwie złe próby na cztery.
Liczby rzymskie pltts rozwija tylko w zakresie 1–30 i tylko w rodzaju męskim.
Synteza nie jest deterministyczna (noise_scale, noise_w), więc dwa wywołania
na tym samym tekście różnią się prozodią.