Гэты фрэймварк дае доступ да перадавых на сённяшні дзень (SOTA) тэхналогій апрацоўкі голасу для беларускай мовы. Наша галоўная мэта — не проста механічнае пераўтварэнне тэксту ў гук, а забеспячэнне правільнага і натуральнага беларускага вымаўлення з улікам усіх фанетычных законаў (асіміляцыя, аканне, яканне, змякчэнне і г.д.).
Фрэймварк утрымлівае модулі для сінтэзу (TTS) і распазнавання (ASR) маўлення. Ён пабудаваны па модульным прынцыпе, прапаноўваючы розныя варыянты рэалізацыі кожнага этапу. Гэтыя варыянты адрозніваюцца па:
- Тыпу кампанентаў (выключна лакальныя або з выкарыстаннем знешніх API).
- Патрабаваннях да вылічальных рэсурсаў (CPU / GPU) і фінансавых выдатках.
- Выніковай якасці апрацоўкі (хуткія чарнавыя варыянты супраць SOTA рашэнняў).
Модулі можна гнутка камбінаваць у залежнасці ад вашых патрэбаў. Яны напісаная на Python, ці маюць Python-абгортку. Архітэктура дазваляе злучаць модулі простымі выклікамі функцый, а таксама правяраць і падпраўляць прамежкавы вынік на кожным кроку апрацоўкі.
Каб атрымаць якасную агучку, тэкст мусіць прайсці некалькі стадый падрыхтоўкі перад самім сінтэзам:
- Нармалізацыя — разгортванне скаротаў, абрэвіятур, ператварэнне лічбаў і сімвалаў у словы ў правільным склоне.
- Пазначэнне націскаў — расстаноўка націскаў ва ўсіх словах тэксту, і вырашэнне спрэчных выпадкаў, калі месца націску залежыць ад кантэксту і сэнсу (напрыклад, му́ка ці мука́).
- Фанемізацыя (G2P) — пераўтварэнне літар у гукі (фанемы). Гэта найважнейшы этап для беларускай мовы, бо ён улічвае правілы чытання і фанетычныя працэсы (аглушэнне/азванчэнне, мяккасць і інш.).
- Сінтэз маўлення — генерацыя аўдыёфайла па падрыхтаваным тэксце або фанемах.
- Канвертацыя і пост-апрацоўка — сцісканне сінтэзаванага аўдыё ў зручны фармат (opus, mp3 і г.д.) для перадачы карыстальніку.
Выклік кожнага модуля не з'яўляецца абавязковым. Напрыклад, пры агучванні абмежаванага набору сказаў (асабліва з уласнымі імёнамі ці спецыфічнымі тэрмінамі) бывае прасцей зрабіць нармалізацыю і расставіць націскі ўручную.
Звычайна працэс абмяжоўваецца выклікам аднаго ASR-модуля, але для атрымання ідэальнага тэксту пайплайн можа быць пашыраны:
- Разбіўка на часткі — вылучэнне маўлення з аўдыё і падзел яго на асобныя фрагменты (з пазнакамі часу і асобных спікераў).
- Аналіз спікераў — вызначэнне асоб спікераў у аўдыё (пол, узрост, пошук вядомых спікераў).
- Аб'яднанне частак — дазваляе рабіць распазнаванне праз мадэлі (Gemini), якія псуюць timestamp на вялікіх файлах, і значна памяншае колькасць запытаў.
- Распазнаванне маўлення (Speech-to-Text) — пераўтварэнне аўдыё ў сыры тэкст.
- Зваротная нармалізацыя (ITN) — канвертаванне слоў-лічбаў назад у лічбавы фармат, разбіўка тэксту на сказы і абзацы, расстаноўка знакаў прыпынку.
- Выпраўленне правапісу — прывядзенне тэксту да актуальнага правапісу (2008).
Аптымальныя параметры аўдыяфайлаў для распазнавання: wav фармат без кампрэсіі, 16000 Hz, 16-bit, mono. Хоць некаторыя модулі падтрымліваюць іншыя фарматы, яны могуць працаваць з імі некарэктна.
Паколькі большасць модуляў абапіраецца на нейрасеткі, важна ўлічваць патрабаванні да «жалеза». Выкарыстанне знешніх правайдэраў (хмарных API) уплывае на прыватнасць звестак, патрабуе стабільнага інтэрнэту і стабільнай працы знешніх правайдэраў. Для кожнага модуля ў спісе ніжэй пазначана, як ён працуе (лакальна/знешне) і якія вылічальныя магутнасці яму патрэбныя.
Некаторыя модулі выкарыстоўваюць TORCH_DEVICE для пераносу апрацоўкі на CUDA альбо MPS.
- Апісанне: Замяняе лічбы (ад 0 да 9) на адпаведныя словы (без уліку скланенняў), а лацінскія літары — на іх назвы з англійскага алфавіта. Варта выкарыстоўваць выключна для хуткіх тэстаў.
- Рэсурсы: Працуе вельмі хутка на CPU.
- Залежнасці: няма.
- Апісанне: Разумная нармалізацыя праз вялікія моўныя мадэлі (LLM). Якасць узгаднення склонаў і разгортвання складаных абрэвіятур наўпрост залежыць ад абранай LLM. Падтрымлівае карыстальніцкія промпты для ўліку спецыфікі вашага тэксту (напрыклад, гласарыя тэрмінаў).
- Рэсурсы: Патрабуе доступу да знешняга правайдэра (для мадэляў кшталту Gemini ці GPT) альбо ўласнай магутнай відэакарты (GPU) для лакальнага запуску мадэляў накшталт Llama ці Gemma.
- Параметры:
model_name- з старонкі https://models.litellm.ai/. API ключ дадаецца ў залежнасці ад мадэлі. Напрыклад, для Gemini трэба пазначыцьGEMINI_API_KEYу пераменных асяроддзя. Падрабязнасці - на https://docs.litellm.ai/docs/providers/gemini - Залежнасці:
conda create --name asr python=3.12; conda activate asr; pip install litellm==1.83.13
- Апісанне: Пазначае націскі на падставе Граматычнай базы беларускай мовы і вырашае праблему амографаў статыстычным метадам — абапіраючыся на слоўнік найбольш частотных варыянтаў націску. Нягледзячы на прастату падыходу, тэсты паказваюць правільнасць у больш чым 80% выпадкаў.
- Рэсурсы: Працуе на CPU вельмі хутка.
- Залежнасці: няма.
- Апісанне: Пазначае націскі на падставе Граматычнай базы беларускай мовы. Для амографаў выклікаецца LLM для аналізу граматычных характарыстык слова(на падставе Граматычнай базы) і ягонага значэння (на падставе Тлумачальнага слоўніка) у канкрэтным сказе і па гэтым абіраецца варыянт націску. Такі падыход дае найлепшую якасць.
- Рэсурсы: Знешні правайдэр (Gemini/GPT) або GPU (Gemma/Llama).
- Залежнасці:
pip install litellm==1.84.0
- Апісанне: Пераводзіць тэкст у транскрыпцыю (фанемы) праз BelG2P. Калі TTS-модуль падтрымлівае фанемны ўвод, выкарыстанне BelG2P крытычна паляпшае натуральнасць вымаўлення. Модуль улічвае складаныя выпадкі беларускай фанетыкі: асіміляцыю зычных па глухасці/звонкасці і мяккасці, прыстаўныя гукі, правільнае вымаўленне злучнікаў і прыназоўнікаў у патоку маўлення.
- Рэсурсы: Працуе CPU дастаткова хутка.
- Заўвагі: Спампоўвае 22MiB jar з github.com і патрабуе ўсталяванай java для працы.
- Залежнасці:
conda create --name asr python=3.12 conda-forge::jpype1=1.7.0 pooch=1.9.0
- Апісанне: Выкарыстоўвае мадэль CoquiTTS, натрэніраваную на беларускім голасе з Mozilla CommonVoce. Працуе з
фанемамі ад
BelG2P. Гэты модуль зроблены ў выглядзе docker image, бо Coqui-TTS больш не абнаўляецца. - Рэсурсы: Вельмі хутка генеруе аўдыё на GPU, але цалкам прыдатна для працы і на звычайным CPU.
- Залежнасці:
conda create --name asr python=3.11; conda activate asr; pip install TTS==0.22.0
- Апісанне: SOTA-мадэль для максімальна натуральнага сінтэзу.
- Рэсурсы: Патрабуе GPU.
- Залежнасці:
conda create --name asr python=3.12; conda activate asr; pip install omnivoice==0.1.2
- Апісанне: Выкарыстоўвае мадэлі Nvidia NeMo. Найлепшая мадэль:
nvidia/stt_be_fastconformer_hybrid_large_pc, але і яна мае праблемы з разбіўкай на сказы. - Рэсурсы: Працуе на CPU даволі хутка, можа выкарыстоўваць GPU. На i5-11600 10-хвіліннае аўдыё канвертуецца за ~65 секунд.
- Залежнасці:
conda create --name asr python=3.12; conda activate asr; pip install nemo_toolkit[asr]==2.7.3
- Апісанне: Выкарыстоўвае мадэлі Omnilingual ASR. Найлепшыя:
omniASR_LLM_Unlimited_*_v2. Яны не дадаюць пунктуацыю наогул, але дакладна паказваюць гукі. Можна выкарыстоўваць для алічбоўкі дыялектнага маўлення. - Рэсурсы: Працуе на GPU. omniASR_LLM_Unlimited_1B_v2 на Nvidia 5060Ti/16GiB апрацоўвае 5-хвіліннае аўдыё за 42 секунды.
- Залежнасці:
conda create --name asr python=3.12 pytorch==2.8.0 torchaudio==2.8.0 conda-forge::libsndfile==1.0.31; conda activate asr; pip install git+https://github.com/facebookresearch/omnilingual-asr.git@81f51e224ce9e74b02cc2a3eaf21b2d91d743455 fairseq2==0.6.0 --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/pt2.8.0/cpu. Змяніце /cpu на нешта больш прыдатнае - дэталі на https://github.com/facebookresearch/fairseq2#variants.
- Апісанне: Выкарыстоўвае мадэлі Gemini. На сённяшні дзень (красавік 2026 года) мадэлі, такія як Gemini 3 Flash і Gemini 3.1 Pro, забяспечваюць, бадай, самае дакладнае распазнаванне маўлення з разуменнем кантэксту і добрай пунктуацыяй. Падтрымлівае файлы: wav, mp3, aiff, aac, ogg, opus, flac.
- Рэсурсы: Патрабуецца знешні правайдэр.
- Залежнасці:
conda create --name asr python=3.12 numpy=2.4.4 scipy=1.17.1; conda activate asr; pip install litellm==1.83.13, патрэбныGEMINI_API_KEYу пераменных асяроддзя.
- Апісанне: Выкарыстоўвае мадэлі pyannote/speaker-diarization-community-1 ці pyannote/segmentation-3.0 для выдзялення маўлення з аўдыё і падзелу яго на асобныя фрагменты з пазнакамі часу. Можа вызначаць спікераў, альбо проста разбіваць на часткі.
- Рэсурсы: Працуе на CPU, але для вялікіх аўдыёфайлаў рэкамендуецца GPU.
- Залежнасці:
conda create --name asr python=3.12; conda activate asr; pip install pyannote.audio==4.0.4
- Апісанне: Выкарыстоўвае мадэль Silero VAD для выдзялення маўлення з аўдыё.
- Рэсурсы: Працуе на CPU, але для вялікіх аўдыёфайлаў рэкамендуецца GPU.
- Залежнасці:
conda create --name asr python=3.12 numpy=2.4.4; conda activate asr; pip install silero-vad==6.2.1
- Апісанне: Аб'ядноўвае малыя фрагменты аўдыё ў адзін фрагмент - шукае фрагменты, якія агулам даюць працягласць не больш за патрэбную.
- Рэсурсы: Працуе на CPU вельмі хутка.
- Залежнасці: няма.
- Апісанне: Аб'ядноўвае малыя фрагменты аўдыё ў адзін фрагмент - шукае фрагменты як абыход графа.
- Рэсурсы: Працуе на CPU вельмі хутка.
- Залежнасці:
pip install networkx==3.6.1