Как стать автором
Обновить

Комментарии 12

Огромная благодарность.
Думаю, что вы сэкономили мне много времени. Как раз планировал в ближайшее время дообучать Воск на своем словаре.

Приятно это слышать. Удачи Вам с проектом)

Огромное спасибо. Так же ковыряюсь с VOSK (респект кто ее сделал). Полезная статья.

В юнити добавил русскую модель 50 Мб, мне необходимо добавить слова в модельку. Это всё пишется через линукс? (Никогда в нём не работал) можете подробно описать, что мне сделать?

устанавливаете любой дистрибутив gnu/linux на виртуалку, если не хотите основной/второй системой. далее открываете терминал и следуете инструкции. при запуске extras/check_dependencies.sh вам напишет, что нужно установить. далее ищете в интернете, как установить пакеты, которые назвал check_dependencies.sh. какие-то зависимости необходимо будет установить через пакетный менеджер вашего дистрибутива, другие через pip (утилита для работы с python-библиотеками), который перед этим также нужно будет установить через пакетный менеджер. все это без проблем находится в интернете.

вопрос достаточно неточный, поэтому для начала советую выполнить описанные выше действия, спрашивайте, если будут вопросы. в качестве первого дистрибутива советую debian и основанные на нем. для debian, пожалуй, наиболее много информации в интернете.

Спасибо большое за такой развёрнутый ответ!

@gist69 Добрый день, пытаюсь выполнить сборку по Вашему гайду, только в официальном контейнере от kaldi - 'kaldiasr/kaldi', в нем уже все связи настроены и check_dependencies выдает ОК - поэтому пропускаю шаг. Далее при распаковке нескомпилированной модели в папке wsj/s5 получаю ошибку о том, что в папке уже существуют подпапки utils и steps (они также присутствуют и в репозитории, указанном Вами в статье) и он не может распаковать одноименные файлы из архива с моделью. Далее компиляция запускается и начинаются проверки, процесс доходит до данного момента и просто останавливается:

--> data/lang/L.fst is olabel sorted
--> data/lang/L_disambig.fst is olabel sorted
--> SUCCESS [validating lang directory data/lang]
utils/mkgraph_lookahead.sh : compiling grammar data/ru-mix.lm.gz
utils/mkgraph_lookahead.sh : expected data/ru-mix.lm.gz to exist

в чем может быть проблема?

Добрый день, да, при переносе нескомпилированной модели так и должно происходить. Проверьте, установлены ли у Вас srilm, opengrm и irstlm. Если да, перепроверьте, правильно ли у Вас прописаны пути (в статье расписано добавление путей) и вновь запустите path.sh.

Спасибо огромное. Благодаря вашей статье более-менее разобрался с моделью.
Для уменьшения Gr.fst и HCLr.fst можно в файле ../new_model/kaldi/egs/wsj/s5/db/ru-250k.dic (тот что из "https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22-compile.tar.gz") оставить только нужные слова для распознавания. В результате эти файлы похудеют с 30Мб до 500-900Кб (851 слово).

Заметил такую особенность: например в ru-250k.dic есть слово "Айболит". Нам необходимо распознать еще слова "Айболиту" и "Айболита". В файл extra.txt необходимо добавлять:
айболита
айболиту
айболит
Иначе приоритет при распознавании отдается последнему слову из extra.txt, и слово "Айболит" будет почти невозможно распознать.

Вопрос: где взять большую нескомпилированную модель (как "https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22-compile.tar.gz") с максимально-заполненным словарем .dic?

рад, что моя статья была полезна.

ссылка на все модели (большие модели не нужно компилировать для работы, поэтому их можно просто скачать из основного источника)

Попробовал задействовать модель идентификации голоса vosk-model-spk-0.4 на смартфоне.
Выложил пример https://github.com/virex-84/VoskIdentification.
К сожалению никакой документации по идентификации голоса не нашел, но наткнулся на кусок кода по расчету "дистанции", на нём и основал пример.
Конечно пока что идентифицировать голоса непрерывно из микрофона на такой маленькой модели (13Мб) это баловство. Но если необходимость в идентификации есть - можно в своем приложении добавить возможность создать "отпечаток" своего голоса, сохранить его в память телефона, и при идентификации пользователя по голосу - сравнивать живой голос уже с этим отпечатком.

Во время сборки compile_graph.sh возникает ошибка. Как решить эту проблему?

apply_map.pl: warning! missing key 0 in exp/tdnn/lgraph/relabel

apply_map.pl: warning! missing key 250012 in exp/tdnn/lgraph/relabel

ERROR: SymbolTable::Read: Read failed: standard input

ERROR: SymbolTable::Read: Read failed: standard input

ERROR: VectorFst::Read: Unexpected end of file: standard input

ERROR: FstHeader::Read: Bad FST header: standard input. Magic number not matched. Got: 0"

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации