Comments 13
Сразу скажу, так просто pocketsphinx установить не получится(по крайней мере у меня не получилось), поэтому pip install pocketsphinx не сработает, упадет с ошибкой, будет ругаться на wheel.

pip install pocketsphinx отлично работает. Скорее всего, у вас не установлен swig, который нужен для сборки.


Также он может искать горячие фразы(у меня не очень получилось, почему-то код, который должен выполняться когда находится горячее слово выполняется несколько раз, хотя произносил его я только один).

Потому что надо документацию читать.


В словаре из двух слов(да и нет) сфинкс умудряется ошибаться, причем часто.

Потому что для данной акустической модели нужно было выставить частоту дисретизации 8000, а не 16000.


Отъедает 30-40% celeron'а, а с языковой моделью еще и жирный кусок памяти. А Яндекс почти любую речь распознает безошибочно, при том не ест память и процессор.

Сравнение тёплого с мягким. Если ПО для распознавания Яндекса запустить на вашей машине, то она, вероятно, вообще загнётся. Хотите попробовать? — Kaldi

pip install pocketsphinx отлично работает. Скорее всего, у вас не установлен swig, который нужен для сборки.

Насчет swig я знал, решил не заморачиваться с его установкой.
Потому что надо документацию читать.

Можете ткнуть носом, а то я никак понять не могу в чем дело?
Потому что для данной акустической модели нужно было выставить частоту дисретизации 8000, а не 16000.

Спасибо. Точность увеличилась, правда говорить приходится громче.
Сравнение тёплого с мягким. Если ПО для распознавания Яндекса запустить на вашей машине, то она, вероятно, вообще загнётся. Хотите попробовать? — Kaldi

Загнется, не сомневаюсь. Но Яндекс распознает на сервере, так что в итоге по потреблению ресурсов он эффективнее(если нет проблем с интернетом). И при своем огромном словаре он распознает он распознает эти несколько команд точнее чем sphinx, у которого словарь только из этих команд и состоит.
Я тоже написал себе голосового помощника на pocketsphinx.
Через pip устанавливается прекрасно.
Так как я не задавался целью распознавания произвольной речи, поэтому сразу отбросил вариант использования языковой модели.
Использовал исключительно набор грамматических правил JSGF и составил свой ограниченный словарь.
Данная схема позволила получить в итоге:
быструю загрузку;
очень высокую точность распознавания, по-моему. Ошибки бывают, но не очень часто.
И это абсолютно без подстройки к голосу.
Ну и самое главное конечно оффлайн.
Так что считаю sphinx наиболее удачным решением именно для помощника, выполняющего определенные команды, а онлайновые сдк яндекса и гугла хороши для распознавания произвольной речи, но это другой круг задач.
Через pip устанавливается прекрасно.

Через pip устанавливается прекрасно потому, что у вас стоит swig.

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

И еще: поделитесь секретом, как вы сделали активационную фразу?
Ну насчет swig я не знал, может быть. Да я и сейчас не знаю установлен он или нет, никогда не возникал такой вопрос.

И не буду говорить, что я его полностью закончил или все идеально. Я постоянно продолжаю что-то добавлять или изменять, много бывает еще багов нахожу, но постепенно допиливаю потихоньку.
А насчет активационной фразы, так у меня тоже возникли проблемы с ее использованием, я читал документацию про keyphrase, но мне на тот момент не удалось настроить ее порог срабатывания, и я ее оставил до лучших времен, вот думаю скоро снова заняться может быть этой проблемой.
А на данном этапе пока как временное решение я поступил немного по другому.
У меня все команды разделены по разделам, плюс основной раздел, плюс активационная фраза.
Все разделы разделены по разным грамматическим правилам, в том числе фраза для активации представлена также отдельным правилом.
При инициализации я их всех загружаю функцией set_jsgf_file(), с указанными именами, а затем в цикле крутится распознавание, сначала активационного правила. Когда фраза найдена, происходит смена set_search() на основное правило, которое уже ждет распознавание по разделам, ну и так далее. При окончании или отмене, возвращается правило с активационной фразой.
Я конечно согласен, что это костыль тот еще, поэтому и настроен на переделку с применением правильного решения по документации, так как бывают ложные срабатывания, но пока не хватило еще времени и желания дойти до этого. И так потрачено было много времени на эту домашнюю поделку =)
По поводу синтеза.
Прогой trans из пакета translate-shell звучит отлично. Может и гуглом и яндексом и еще многими движками. Я предпочитаю яндекс. Пять голосов.
echo «Тестовый звук» | trans :ru -b -e yandex -no-warn -no-view -sp -n ermil
Ну про более ранние версии windows не скажу, но начиная с версии 8.1 и 10 в поставку windows включен вроде неплохой синтезатор голоса.
В русской версии — это голос Ирина, по крайней мере я ее использовал.
Или у данного синтезатора есть недостатки еще какие?
Привет! Я автор сайта pythono.ru, с которого вы взяли пример с speech recognation
Синтез речи я сейчас использую от Acapella Group голос Алёна, работает оффлайн из Python вызываю через консольную версию программы balabolka — работает отлично
А вот с pocketsphinx у меня давно была идея чтобы использовать его для распознавания ключевой фразы типа «Окей гугл» (и только её), а остальные команды распознавать через гугл онлайн как и раньше.
Но я в своё время так и не разобрался с pocketsphinx поэтому мой голосовой ассистент так и работает по нажатию на кнопочку
Спасибо вам за статью
Если интересно поработать вместе над созданием голосового ассистента пишите мне в телеграм (написал вам контакты в личку здесь на сайте)
Комментарий случайно не туда написал написал, не обращайте внимания.
Only those users with full accounts are able to leave comments. Log in, please.