Text to Speech (TTS) na Ubuntu
⏳ Doba čtení: ~7 min (933 slov)epub -> audio
Mým cílem je vytvořit jednoduchý nástroj, který by uměl načítat epub soubory a převádět je na audio formát, který by šel přehrát.
spd-say
Vestavěné řešení pro TTS na Ubuntu je nástroj spd-say, který je součástí balíčku speech-dispatcher. Tento nástroj umožňuje převést text na řeč přímo z příkazového řádku.
spd-say "Ahoj, toto je testovací zpráva."
Kvalita je asi taková jako kdyby na vás hovořil Stephen Hawking.
piper
Ilustrace nástroje Piper
pip install piper-tts
Pokud chcete instalční soubor stáhnout jako binárku: piper_amd64-v1.2.0.tar.gz
Musíme ještě stáhnout nějaký hlas:
python3 -m piper.download_voices | grep cs
cs_CZ-jirka-low
cs_CZ-jirka-medium
python3 -m piper.download_voices cs_CZ-jirka-medium
Některé přepínače pro piper:
--cuda- povolí akceleraci na GPU (vyžaduje balíček onnxruntime-gpu)--input-file- načte vstupní text z jednoho nebo více souborů--sentence-silence- přidá sekundy ticha ke všem větám kromě poslední--volume- upraví hlasitost (výchozí: 1.0)--no-normalize- zakáže automatickou normalizaci hlasitosti
Pokud máte nainstálovaný balíček ffmpeg, můžete výstupní data rovnou přehrát:
python3 -m piper -m cs_CZ-jirka-medium -- "Tohle je zkouška"
Pokud ne, tak se vytvoří soubor ve formátu wav, který si můžete přehrát například pomocí vlc:
vlc output.wav
Nebo pomocí:
aplay output.wav
Výhoda piperu je že běží poměrně rychle i na procesoru. Modely jsou malé a ideální pro provozování na edge zařízeních. Nevýhodou je, že zatím není k dispozici moc českých hlasů. V základu je jen jeden “Jirka” a dá se sehnat “Honza” z huggingface.
Nevýhoda je kvalita hlasu, která je sice lepší než u spd-say, ale stále je to strojový hlas.
Nedostatek ruzných hlasů je možné řešit pomocí sox, který umožňuje upravit výšku a rychlost hlasu. Například:
sox output.wav output2.wav speed 1.2 pitch 200
Což umožní upravit způsob reprezentace postav vypravečem, ale plně nenahradí další hlasy.
edge-tts
Python knihovna edge-tts je nástroj, který umožňuje využívat TTS technologii od Microsoftu. Tento nástroj poskytuje přístup k různým hlasům a jazykům, včetně češtiny. Převod textu na řeč je rychlý a kvalita hlasu je velmi dobrá. Vše funguje online na serverech Microsoftu, takže je potřeba být připojen k internetu.
edge-tts --list-voices | grep -i "cs-CZ"
cs-CZ-AntoninNeural Male General Friendly, Positive
cs-CZ-VlastaNeural Female General Friendly, Positive
Kvalita je výrazně lepší než u piperu, ale k dispozici jsou jen dva české hlasy.
Trik jak přidat více hlasů v českém prostředí může být použití slovenských hlasů, které češtinu zvládají bez problému a mají jen “slovenský” přízvuk.
edge-tts --list-voices | grep -i "sk-SK"
sk-SK-LukasNeural Male General Friendly, Positive
sk-SK-ViktoriaNeural Female General Friendly, Positive
Můj pokus o převod epub na audio
Github book_to_audio
EPUB -> TXT -> XML -> TXT fragmenty -> WAV fragmenty -> Spojená Audiokniha
Make file se stará o plnění cílů.
Nejprve se extrahuje text z EPUB do TXT, následně se převede do XML, kde se analyzuje text a rozdělí na jednotlivé dialogy. Dialogy se pak převedou do adresářové struktury, ze které je již možné generovat audio fragmenty v podobě WAV souborů a nakonec se spojí do finální audioknihy.
Implementoval jsem řešení pomocí piper a edge-tts. Otestoval jsem tak oba tyto nástroje, abych mohl porovnat kvalitu a rychlost převodu.
Edge tts je výrazně rychlejší a umožnujě paralelně poslat velké množství požadavků na server Microsoftu, takže můžete převést celou knihu během několika minut. Nevýhodou je, že je potřeba být připojen k internetu a je otázka času, kdy vás Microsoft zablokuje, pokud budete posílat velké množství požadavků.
Piper je výrazně náročnější na Váš HW, ale neste závislí na připojení k internetu. Hlasy mají výrazně horší kvalitu, ale je možné dotrénovat si vlastní model, pokud máte dostatek nahrávek, a výpočetního výkonu.
Podobná cizí řešení
Ebook-speaker
Repozitář z roku 2020. Autor bohužel mezitím umřel.
Využívá nástroje jako:
tesseract-ocr
espeak
QuickPiperAudiobook
Open source nástroj, který umí převést epub (a další formáty) na audio formát. Nástroj je napsaný v Pythonu a využívá knihovnu Piper pro TTS. Omezení pro češtinu stojí na tom, že musíte sehnat český hlas pro Piper, v základu mají jen jeden “Jirku” a ten trochu ráčkuje.
Lidské Jednání
Tento projekt zpracovává český překlad knihy “Human Action” (Lidské Jednání) z formátu PDF do optimalizovaných zvukových souborů prostřednictvím série kroků zpracování. Kódová základna obsahuje několik modulů, které zpracovávají různé aspekty zpracovatelského řetězce.
Výsledek autor nahrál na youtube.
ElevenLabs
V nástroji ElevenLabs si člověk může vybrat z mnoha hlasů až v 70 jazycích. ElevenLabs studio podporuje i tvorbu audioknih.
Subformer
Zajímavý bezplatný nástroj využívající hlas “Jirka” a patrně i Piper, ale běží v prohlížeči přímo na straně vašeho počítače. Před spuštěním si stáhne hlasový model a pak namluví uvedený text.