Оффлайн распознавание речи. PocketSphinx.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

webmax
Сообщения: 3
Зарегистрирован: Сб янв 16, 2016 6:29 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение webmax » Вс янв 17, 2016 12:57 pm

Значит, такс... :=)

Использую pocketsphinx.js (javascript) в web-приложении под windows.

Код: Выделить всё

var wordList = [["привет", "p rr i vv je t"], ['пока', 'p a k aa']];

var initRecognizer = function() {
    postRecognizerJob({command: 'initialize', data: [["-dict", "ru/ru.dic"], ["-hmm", "ru_ptm"], ['-jsgf', 'ru/grammar.jsgf'], ['-keyphrase', 'дом'], ['-kws_threshold', '1e-30']]},
            function() {
                if (recorder) recorder.consumers = [recognizer];
                feedWords(wordList);});
};
Аккустическая модель "zero_ru" (ru_ptm), словарь с того-же архива, а файл грамматики *.jsgf:

Код: Выделить всё

#JSGF V1.0;
grammar commands;
public <command> = <commands>+;
<commands> = привет | пока | дом;
Хотелось бы, чтоб сравнение фонем было с целым словом, а не его частью. Если я говорю слово "привет (p rr i vv je t)", мне выдает "привет", но если я говорю "вет (vv je t)", то результатом не должно быть слово "привет (p rr i vv je t)".

Может в конфигурации что-то подправить, там куча ключей, сложно в них разобраться, у вас опыта больше, надеюсь на помощь.
coolermister
Сообщения: 49
Зарегистрирован: Пт июл 31, 2015 9:23 am
Благодарил (а): 12 раз
Поблагодарили: 17 раз

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение coolermister » Пн янв 18, 2016 10:03 am

Даже не знал что pocketsphinx есть на js)) Вы неправильно инициализируете движок. Инициализация должна проводится следующим образом:
1. Для режима поиска ключевого слова просто нужен параметр -keyphrase, и -kws_threshold. ни языковая модель, ни грамматика не нужны.
2. Для обычного режима работы, нужно подключать словарь, акустическую модель, и либо языковую модель, либо файл грамматики.
А вы инициализируете все сразу) Плюс, используйте не ptm, а cout модели, они намного точнее как по мне, хоть ptm модели и быстрее. И настоятельно рекомендую использовать языковую модель. Даже с моделью составленной онлайн, качество намного больше чем с грамматикой. Правильнее всего составлять через srilm, бинарники под винду выкладывал sleepy.
webmax
Сообщения: 3
Зарегистрирован: Сб янв 16, 2016 6:29 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение webmax » Пн янв 18, 2016 2:18 pm

coolermiser, насчет ключевого слова прочитал уже, исправил. Но мне надо для каждого слова в грамматике реализовать целевой поиск. Count также использовал, разницы никакой. Произношу просто "ет", а он мне слово "привет" выводит. Бывает и такое, и часто, что просто потресешь микрофоном, и распознается слово "пока", жесть!

Подозреваю что необходимо какие-то параметры в конфиге настроить. Николай что-то говорил про beam, wbeam, lbeam, wip и еще пара каких-то.

По поводу языковой модели, спс. Подключу из архива zero_ru (ru.lm). Сейчас через pocketsphinx_continuous работаю, грузиться быстрее.

Вообщем буду разбираться. :)
coolermister
Сообщения: 49
Зарегистрирован: Пт июл 31, 2015 9:23 am
Благодарил (а): 12 раз
Поблагодарили: 17 раз

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение coolermister » Пн янв 18, 2016 6:02 pm

Для целевого поиска нескольких слов нужно использовать режим ключевого слова. Вы должны составить словарь, и составить файл с нужными вам словами, где они буду записаны каждое с новой строки. Подключать файл ключем -kws /speech/keyphrase_file (скопировал со своей системы)). Еще раз повторюсь, что в этом случае никакая грамматика, и языковые модели в этом случае вам не нужны) И на будущее, никогда не подключайте стандартную языковую модель) Всегда лучше составьте свою, на заданное количество слов)
upd. и словарь тоже свой составьте, если этого не сделали. Все что составлено руками - повышает точность) Если что пишите сюда, я расскажу что и как составлять.
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение Amarok » Вт янв 19, 2016 8:37 am

coolermister писал(а):и словарь тоже свой составьте, если этого не сделали. Все что составлено руками - повышает точность) Если что пишите сюда, я расскажу что и как составлять.
\развесил уши, взял блокнот, записываю\
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение slgeo » Вт янв 19, 2016 2:59 pm

coolermister писал(а): Аудиокарта непрерывно пишет в буфер, а процессор не успевает все обрабатывать до того, как буфер начнет перезаписываться. Если у кого то есть такая ошибка есть, пишите сюда, я подскажу что надо твикнуть в убунту для того что бы она так не мешала. Сейчас мне это описывать лень, тк там довольно много оптимизаций)
Получается шансов мало, что оно заработает на малинке?
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение tarasfrompir » Ср мар 02, 2016 8:22 pm

Вебмакс поделись наработками ато уже 3 недели ломлюсь туда же а кроме англицкого никак.
И заметил туже заразу по поводу неполного произношения слов.
Я не линуксоид и даже не програмист поєтому очень тяжело...
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение sergejey » Чт мар 31, 2016 3:26 pm

Ребята, постучусь к вам в ветку с вопросом :)
Реально ли сделать на Raspberry комбинацию, аналогичную софту под Android, когда ключевую фразу распознаёт PocketSphinx, пикает какой-то звук, а дальше фраза записывается и распознаётся через Google API? С учётом новости про открытый доступ к последнему, выглядит весьма заманчиво.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
coolermister
Сообщения: 49
Зарегистрирован: Пт июл 31, 2015 9:23 am
Благодарил (а): 12 раз
Поблагодарили: 17 раз

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение coolermister » Пт апр 01, 2016 8:43 am

Приветствую Сергей) Это реально, и куда проще, чем идти моим путем, и ставить два движка сразу) Скоро, надеюсь, дойдут руки весь процесс описать здесь.
Но вот с малинкой проблема.. Скорее всего, у нее мощности не хватит.. Нужно что то мощнее, лично у меня сейчас распознавание тянет отдельная материнка, с athlon 64 x2 4600+.
Испытывал еще три разных конфигурации, все менее мощные, сыпались ошибки переполнения буфера и качество стремилось к нулю. Теперь полное оффлайн распознавание)
Единственное что, я не пробовал менять OC (у меня ubuntu server, но менял ядра, не помогло), вдруг на системе малинки не будет переполнения буфера?) Как я писал, делал и распознавание через гугл, если нужно могу элементарный скрипт на bash прислать, как раз сможете быстро разобраться как оно работает, если этим еще не занимались)
p.s. я слышал что гугл открывает api, но про речь.. что, у них больше нет ограничений по запросам в месяц?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Оффлайн распознавание речи. PocketSphinx.

Сообщение sergejey » Пт апр 01, 2016 11:45 am

coolermister писал(а):Как я писал, делал и распознавание через гугл, если нужно могу элементарный скрипт на bash прислать, как раз сможете быстро разобраться как оно работает, если этим еще не занимались)
p.s. я слышал что гугл открывает api, но про речь.. что, у них больше нет ограничений по запросам в месяц?
С ограничениями запросов я пока не разбирался -- возможно, для домашнего эпизодичного использования будет вполне достаточно. bash-скриптиком если поделитесь, то буду признателен ) На всякий случай более подробно распишу, чего хочу в итоге:

1. Возможность записи/настройки фразы активации. Идеально:
- Произнесите фразу активации после сигнала{блимк!}
- Проснись
- Спасибо, фраза записана

2. Типичная сессия:
- Проснись
- {блимк!}
- Выключи свет на кухне
- Ок, выключаю свет на кухне

Первый пункт опциональный, но желательный.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить