Автоматическая расстановка ударений и IPA транскрипция для русского языка.
Библиотека для Python 3
.
Установка библиотеки повлечет за собой установку Pytorch
и Numpy
. Кроме того, для скачивания моделей установятся tqdm
и requests
.
pip install git+https://github.com/omogr/omogre.git
Скачать код с гитхаба. В директории, в которой находится файл setup.py
, выполнить
pip install -e .
Скачать код с гитхаба. Установить Pytorch
, Numpy
, tqdm
и requests
. Запустить test.py
.
По умолчанию при первом запуске библиотеки скачиваются данные для моделей. Скрипт download_data.py
также позволяет загружать эти данные.
При желании можно указывать путь, в котором должны располагаться данные для моделей. Если в этой директории уже есть данные, то их повторного скачивания не будет.
Скрипт test.py
.
from omogre import Accentuator, Transcriptor
# данные будут скачаны в директорию 'omogre_data'
transcriptor = Transcriptor(data_path='omogre_data')
accentuator = Accentuator(data_path='omogre_data')
sentence_list = ['стены замка']
print('transcriptor', transcriptor(sentence_list))
print('accentuator', accentuator(sentence_list))
# длугие способы вызовов, отличаются только формой записи
print('transcriptor.transcribe', transcriptor.transcribe(sentence_list))
print('accentuator.accentuate', accentuator.accentuate(sentence_list))
print('transcriptor.accentuate', transcriptor.accentuate(sentence_list))
Все параметры инициализации класса не являются обязательными.
class Transcriptor(data_path: str = None,
download: bool = True,
device_name: str = None,
punct: str = '.,!?')
-
data_path
- директория, в которой должна находиться модель. -
device_name
- параметр, определяющий использование GPU. Соответствует параметру инициализации классаtorch.device
. Допустимые значения -"cpu"
,"cuda"
,"cuda:0"
и т.д. По умолчанию если torch видит GPU, то"cuda"
, иначе"cpu"
. -
punct
- список небуквенных символов, которые переносятся из исходного текста в транскрипцию. По умолчанию'.,!?'
. -
download
- следует ли загружать модель из интернета, если она не найдена в директорииdata_path
. По умолчаниюTrue
.
Входы класса Transcriptor
:
accentuate(sentence_list: list) -> list
transcribe(sentence_list: list) -> list
В случае accentuate
выполняется расcтановка ударений, в случае transcribe
- транскрипция. Оба входа получают на вход список строк и возращают список строк. Строками могут быть предложения или не очень большие куски текста.
Расстановка ударений классом Accentuator ничем не отличается от расстановки ударений классом Transcriptor. Разница только в том, что Accentuator не загружает данные для транскрипции. Это позволяет уменьшить время инициализации класса и расход оперативной памяти.
Все параметры инициализации класса не являются обязательными. Смысл параметров инициализации такой же, как у класса Transcriptor.
class Accentuator(data_path: str = None,
download: bool = True,
device_name: str = None)
-
data_path
- директория, в которой должна находиться модель. -
device_name
- параметр, определяющий использование GPU. Соответствует параметру инициализации классаtorch.device
. Допустимые значения -"cpu"
,"cuda"
,"cuda:0"
и т.д. По умолчанию если torch видит GPU, то"cuda"
, иначе"cpu"
. -
download
- следует ли загружать модель из интернета, если она не найдена в директорииdata_path
. По умолчаниюTrue
.
Входы класса Accentuator
:
accentuate(sentence_list: list) -> list
Скрипт ruslan_markup.py
расставляет ударения и порождает транскрипцию для markup-файлов акустических корпусов RUSLAN
(RUSLAN с ручной разметкой ударений
) и NATASHA
.
markup-файлы этих корпусов уже содержат расстановку ударений, которая была сделана вручную.
Скрипт ruslan_markup.py
порождает для тех же файлов свою собственную расстановку ударений. Изначальная ручная разметка никак не используется при тестировании и не использовалась при обучении. Таким образом, её можно использовать для оценки точности расстановки ударений.
Расстановка ударений и транскрипция могут быть полезны при синтезе речи. Ноутбук содержит пример запуска XTTS
модели, обученной на транскрипции для русского языка. Модель обучалась на корпусах RUSLAN
и Common Voice
.
Веса модели можно скачать с Hugging Face
Расстановка ударений и транскрипция могут быть полезны при анализе речи. Ноутбук содержит пример запуска модели wav2vec2-lv-60-espeak-cv-ft дообученной на транскрипции акустических корпусов RUSLAN
и Common Voice
.
Ударения расставляются с учётом контекста. Если во входном списке строк встретятся очень длинные строки (для текущей модели это больше 510 токенов), то для таких длинных строк контекст учитываться не будет. Ударения в этих строках будут ставиться только там, где это возможно без учёта контекста.
В словах из одного слога ударение тоже ставится. В некоторых случаях это может выглядеть странно, но упрощает последующее определение транскрипции.
При порождении транскрипции посторонние символы фильтруются. Список небуквенных символов, которые не фильтруются можно задавать отдельным параметром. По умолчанию не фильтруются четыре знака пунктуации (.,!?
). Транскрипция определяется пословно, без учёта контекста. Для транскрипции слов используются следующие символы:
ʲ`ɪətrsɐnjvmapkɨʊleɫdizofʂɕbɡxːuʐæɵʉɛ
Почта для вопросов, замечаний и предложений - omogrus@ya.ru
.