Този проект създава професионален речник за Grapheme-to-Phoneme (G2P), необходим за трениране на модели за синтез на реч (TTS) на български език.
Създаден с ❤️ за българската Open-Source общност.
Този проект съдържа инструменти за създаване на висококачествен G2P (Grapheme-to-Phoneme) речник за български език.
Целта е да се превърнат думите (напр. „вълна“) в фонетична транскрипция (IPA: v ɤ ɫ n ˈ a), използвана за трениране на модели за синтез на реч (TTS).
Българският език има подвижно ударение и специфични правила за обеззвучаване, които стандартните инструменти често бъркат. Този набор от скриптове:
- Извлича проверени произношения от Wiktionary.
- Извлича ударения от Читанка / Alpaca dataset.
- Използва
Espeak-NGза генерация на липсващите транскрипции. - Поправя систематични грешки на eSpeak-NG (напр. заменя
əсɤспоред академичния стандарт). - Обработва омографи (думи с еднакъв правопис, но различно ударение: въ̀лна vs вълна̀).
Този речник е полезен ако:
- тренирате TTS модел за български език;
- правите собствен G2P модел (напр. с Goruut, Phonetisaurus и др.);
- искате стабилна IPA база за лингвистични експерименти или QA.
Този проект разчита на два основни проекта. Ако те изчезнат, ето как да ги замените:
-
Какво е: Свободен речник, поддържан от доброволци. Най-ценното за нас в него са готовите IPA транскрипции.
-
Как го ползваме: Чрез проекта Kaikki.org, който превръща Уикиречник в удобен JSONL формат.
- Линк към дъмпа: Bulgarian JSONL
-
🆘 Ако линкът умре:
- Посетете основния сайт kaikki.org.
- Намерете „Bulgarian“ и скролнете до секцията Download.
- Ако и там липсва файлът, потърсете „Wiktionary dump parse“ в GitHub или Google.
-
Какво е: Използваме библиотеката
datasetsна Hugging Face, за да свалим речник, изграден от материали на Читанка.- Линк към набора от данни: vislupus/alpaca-bulgarian-dictionary
-
Защо: Този речник съдържа думи с ударения (напр.
ръкаvsръка->ръка'). Без маркирано ударение eSpeak-NG често не може да познае правилното произношение. -
🆘 Ако линкът умре:
- Ние ползваме
vislupus/alpaca-bulgarian-dictionary. - Ако го изтрият, потърсете "Chitanka words list", "Bulgarian spellcheck dictionary" или подобни.
- Всеки текстов файл, в който думите имат ударения, ще свърши работа (трябва да промените само
step1).
- Ние ползваме
Изтеглете и инсталирайте Python 3.10+.
Тествано с Python 3.11+.
Инсталирайте нужните пакети:
pip install requests tqdm datasets phonemizerили:
pip install -r requirements.txtТова е „двигателят“, който генерира фонетиката.
-
Windows: Свалете и инсталирайте eSpeak-NG (MSI).
- Запомнете пътя (напр.
C:\Program Files\eSpeak NG) и го задайте вstep2_build_lexicon.py, ако не бъде намерен.
- Запомнете пътя (напр.
-
Linux:
sudo apt install espeak-nggit clone https://github.com/actepukc/bg_g2p_builder.git
cd bg_g2p_builderили свалете ZIP и го разархивирайте.
python step1_download_sources.pyТова ще създаде папка output/ и ще запише в нея:
bg_kaikki.jsonldictionary_with_stress.tsv
Всеки следващ скрипт проверява дали предишните са изпълнени и показва ясно съобщение, ако липсва нужният файл.
python step2_build_lexicon.pypython step3_polish_lexicon.py🎉 Готово — финалният файл е lexicon.tsv.
Файлът е таб-разделен с две колони:
- word – дума в правописна форма
- ipa – IPA транскрипция, разделена с интервали
Пример:
дума<TAB>d u m aвълна v ɐ ɫ n ˈ a
въ̀лна ˈ v ɤ ɫ n ɐ
щерян ʃ t ɛ r ˈ j a nЗа да сте сигурни, че генерираният файл няма скрити грешки или странни символи:
python step99_final_audit.py- Wiktionary Data: Kaikki.org — лиценз CC-BY-SA.
- Stress Data: vislupus/alpaca-bulgarian-dictionary — важат лицензите на dataset-а.
- IPA нормализация: Фонетични правила: Базирани на съвременните академични стандарти за български IPA.
Ако ползвате генерирания речник в свой проект, уверете се, че спазвате условията на всички източници.
Проектът е създаден след работа върху обогатяване на датасета за goruut/dataset и нуждата от стабилен, публичен и автоматично поддържан български G2P речник.
