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

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

Модератор: immortal

Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

Сообщение tarasfrompir » Пн июл 09, 2018 6:44 pm

https://github.com/sovse/Rus-SpeechReco ... C-VoxForge вот к примеру о вышесказанном
https://github.com/Microsoft/CNTK а вот вообще крутая фишка от майкрософта -
"Компания Microsoft сообщила о публикации на GitHub исходных текстов тулкита CNTK (Computational Network Toolkit) с реализацией алгоритмов глубокого машинного обучения. На практике тулкит используется в сервисах, обеспечивающих распознавание произвольной речи, таких как Windows Cortana, Skype Translator и Project Oxford Speech API. Тулкит также может использоваться для решения задач автоматизированного перевода, распознавания изображений и разбора вопросов на естественном языке. Код написан на языке С++ и распространяется под лицензией MIT."
За это сообщение автора tarasfrompir поблагодарил:
Alekss II (Вт июл 10, 2018 10:27 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Пн июл 09, 2018 11:22 pm

NooBAsTiK писал(а):
Пн июл 09, 2018 6:08 pm
А кто то пользовался вот такой штукой?
https://www.youtube.com/watch?v=A0pdT1TE7uQ
Думаю, никто. Где купить, не понятно. Ценник, полагаю, будет конский. Покупать только ради массива микрофонов с DSP нецелесообразно, ибо там до кучи полно других фич, с помощью которых можно организовать IOT-шлюз.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Alekss II
Сообщения: 3
Зарегистрирован: Чт мар 29, 2018 10:53 pm
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение Alekss II » Вт июл 10, 2018 9:07 am

У кого то получилось реализовать? Правильно я понимаю если делить микрофоны на помещения то лучше ставить на каждое из них что то типа мини пк с звуковой картой? И дальше уже отправлять результат распознования по сети?
Nano Pi neo принципе она встроенная, ее хватает + этот модуль 9812
подключается просто на плате разъем
mic- -> gnd,
mic+ -> out
vcc -> +3.3v
Шо вы помешались на этих малинах, nano pi всего размер 40х40

А так в комнате по 1 шт (соединены между собой локалкой) решение до 20$ ))

tarasfrompir1 писал(а):
Пн июл 09, 2018 4:44 pm
Ну пойми , тут проблем много и на малинке-калинке это будет изврат .
Тут и ПС не всегда хватает....
Во вторых покетсфинкс тяжеловат будет...
в третьих - все эти обучения-мучения... ну капец просто...
в четвертых - точность распознавания - пока что не очень, НО при правильных настройках - терпимо. (При чем это не со всем зоопарком микрофонов и устройств разных)...

Хотя на нейронных сетях я так думаю в перспективе должно быть получше, но тут же опять мощностя еще больше надо...
Вобщем пока как по мне никак...
Ну зачем так утверждать принципе на Nano pi neo 512 хватит у меня работает свет включает и выключает или делает чуть больше светаб чуть меньше )))

в обучении ничего сложного нет, просто надо время на диктовку команд,
а вообще планирую (автоматизировать это дело) чтоб она могла сама тренироваться- переходила в режим обучения и в режиме диалога обучалась.
или еще как вариант не распознала обратилась к гуглу )) а он ей дал ответ, она записала на карту звуковой файл - текст и потом ночью самообучалась или в том же режиме диалога спрашивает (проигрывает файл ) и говорит слово - и задает вопрос верно?
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

Сообщение tarasfrompir » Вт июл 10, 2018 9:33 am

Научить распознавать 20 слов и внести их в словарь - это да проблем не много.
По поводу гугла тоже думал над этим - но ведь потом вылезет это боком -ведь гугл тоже не всегда правильно распознает.
в режиме диалога - заманаешся...

Ну и для факта - есть у меня словарь 3,5 млн слов
Так вот - даже программы ТТС (генераторы речи) обучаются всего на 200 000 слов МАКСИМУМ - больше не может переварить в априори ...
Сколько туда памяти , процессоров, и всего остального не пихай. Так написал разработчик синтезатора Мери ТТС..

Ну а вот пока на перспективу нейронки присматриваю что не говори - но там вроде все получшее...
Хотя опять же - Я ТАК ДУМАЮ...
Спасибо нам ПОМОЖЕТ..!
Alekss II
Сообщения: 3
Зарегистрирован: Чт мар 29, 2018 10:53 pm
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение Alekss II » Вт июл 10, 2018 10:03 am

zoldaten писал(а):
Пн июл 09, 2018 5:38 pm
кто как решает задачу - кто-то активные микрофоны тянет из одной точки. поищите по форуму - голосовое управление.
если будете искать микрофон, лучше сразу отказаться от тех перделок, которыми забит aliexpress,maxы и т.п.

самая простая схема реализации (мой рабочий вариант), которую можно использовать - respeaker шапка на raspberry или схожий форм-фактор,
chromegatemjd - "родное приложение" mjd. расстояние до микрофона - до 5 м, распознает правда только английский, но для
вкл/выкл подойдет.

ps. обучать там ничего не надо - сразу добавил сценарий -слово light - включил свет. dark - выключил
а у меня распознает на русском - благодаря этой "перделке" max9812 и поверьте звук пишет слышно даже что в соседних комнатах происходит, а мах9814 вообще что на улице.
Научить распознавать 20 слов и внести их в словарь - это да проблем не много.
По поводу гугла тоже думал над этим - но ведь потом вылезет это боком -ведь гугл тоже не всегда правильно распознает.
в режиме диалога - заманаешся...

Для основных команд в квартире и 100 шт хватит.

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

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

Кстати если кому то интересно можем поговорить по самому программированию на С pocketsphinx, может кто поделится своими наработками я своими или подумаем вместе.))
NooBAsTiK
Сообщения: 10
Зарегистрирован: Пн июл 09, 2018 12:34 am
Откуда: Иваново
Благодарил (а): 0
Поблагодарили: 0
Контактная информация:

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

Сообщение NooBAsTiK » Вт июл 10, 2018 4:37 pm

skysilver писал(а):
Пн июл 09, 2018 11:22 pm
Думаю, никто. Где купить, не понятно. Ценник, полагаю, будет конский. Покупать только ради массива микрофонов с DSP нецелесообразно, ибо там до кучи полно других фич, с помощью которых можно организовать IOT-шлюз.
Покупать не только ради микрофонов, есть же и камера и датчики влажности и температуры, гироскоп, nfc, ИК и пр. Эта коробка думаю будет дешевле всех тех датчиков, если их покупать отдельно в боксовом (красивом) исполнении. Вообщем заказал себе Raspberry 3B+, Matrix Creatort. Попробую что-то смастерить, побалуюсь пока время есть. Да и с линуксовыми системами на ты, так что придется долго и упорно наступать на грабли... посмотрим :)
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Вт июл 10, 2018 4:41 pm

NooBAsTiK писал(а):
Вт июл 10, 2018 4:37 pm
Вообщем заказал себе Raspberry 3B+, Matrix Creatort. Попробую что-то смастерить, побалуюсь пока время есть.
Не забывай только отписываться о результатах здесь, или в блоге в Коннекте. Интересно же. :)
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
NooBAsTiK
Сообщения: 10
Зарегистрирован: Пн июл 09, 2018 12:34 am
Откуда: Иваново
Благодарил (а): 0
Поблагодарили: 0
Контактная информация:

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

Сообщение NooBAsTiK » Вт июл 10, 2018 4:44 pm

skysilver писал(а):
Вт июл 10, 2018 4:41 pm
Не забывай только отписываться о результатах здесь, или в блоге в Коннекте. Интересно же. :)
Буду конечно, сначала тупить буду, да и помощь знающих нужна будет. На линуксовых кроме LAMP сервера и торрента ничего не поднимал :D Для меня пока темный лес как говорится, но интересно.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Вт июл 10, 2018 5:37 pm

Вот на дружественном форуме тема поднималась
https://ab-log.ru/forum/viewtopic.php?f=1&t=1172
За это сообщение автора Chainik поблагодарил:
drhellp (Пт авг 31, 2018 5:31 pm)
Рейтинг: 1.16%
drhellp
Сообщения: 20
Зарегистрирован: Чт мар 08, 2018 6:41 pm
Благодарил (а): 6 раз
Поблагодарили: 3 раза

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

Сообщение drhellp » Пт авг 31, 2018 5:31 pm

Пробовал PocketSphinx с разными словарями, моделями и файлами грамматики... Печально, всегда ложные срабатывания.
Chainik писал(а):
Вт июл 10, 2018 5:37 pm
Вот на дружественном форуме тема поднималась
https://ab-log.ru/forum/viewtopic.php?f=1&t=1172
Вот это помогло. Вывел для себя следующее:
  • Словарь нужно свой писать
  • При написании файлов словаря и грамматики избегать предлогов (в кухне/вкухне) и похожих слов (включить/выключить)
  • Распознанные команды проверять скриптом (сравнивать со списком комманд) и только потом отправлять на сервер для выполнения
Иначе у меня не сработало.
recognizer.php

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

<?php

/**
 * Конфигурация
 * homedir - корневая директория скриптов
 * hmm - акустическая модель
 * gram - файл грамматики
 * dict - словарь
 * command - файл с командами
 */
$homedir = "/home/voice/";
$hmm = "zero_ru.cd_cont_4000";
$gram = "rus_gram";
$dict = "rus_dict";
$command = "command.txt";

/**
 * Чтение команд из файла в массивы
 * данные разделяются |
 * arrline - строка для сравнения
 * arrvoice - голосовое подтверждение
 * arrcmd - команда для выполнения
 */

/* Разделитель строки символ | */
$delimeter = "|";

$lines = file($homedir . $command);

foreach ($lines as $line_num => $line) {
    $line = trim($line); // удаляем спец символы в конце строки
    $line = explode($delimeter, $line); // разрезаем строку
    $arrline[] = $line[0];
    $arrvoice[] = $line[1];
    $arrcmd[] = $line[2];
}

/* Комманда запуска */
$cmd = "pocketsphinx_continuous -hmm " . $homedir . $hmm . " -jsgf " . $homedir . $gram . " -dict " . $homedir . $dict . " -inmic yes";// -logfn /dev/null" включить после отладки;

while (@ ob_end_flush());

$proc = popen($cmd, 'r');

while (!feof($proc))
{
    $string = trim(fread($proc, 4096)); // читаем строку и удаляем спец символы в конце

    /**
     * Поиск строки для сравнения в массиве
     */
    $key = array_search($string, $arrline);
    // Проверяем полученный ключ
    if (is_integer($key)) {
        // Проверяем нужно ли выводить голосовое сообщение
        if (mb_strlen($arrvoice[$key]) > 0) {
            exec('echo "' . $arrvoice[$key] . '" | RHVoice-test -p elena');
        }

        // Проверяем нужно ли выполнять команду
        if (mb_strlen($arrcmd[$key]) > 0) {
            //exec($arrcmd[$key]);
        }

        /* Можно добавить запись распознанных команд в файл журнала */
    }

    @ flush();
}

?>

Файл команд command.txt

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

Степановна ты здесь|Да я здесь|command mjd1
Степановна включи свет|Включаю свет|command mjd2
Степановна погаси свет|Выключаю свет|command mjd3
за говнокод не пинайте :(
Ответить