Частота NFC помоему 13,5 Мегагерц. Вот ссылка на ридер который я юзал.electric писал(а):Проблема только в частоте работы NFC - она может различаться...
Голосовое управление. Микрофоны сервера.
Модератор: immortal
-
- Сообщения: 242
- Зарегистрирован: Вт мар 11, 2014 8:36 pm
- Откуда: Челябинск
- Благодарил (а): 107 раз
- Поблагодарили: 7 раз
Re: Голосовое управление. Микрофоны сервера.
СпойлерПоказать
Majordomo на Orange Pi Zero.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Голосовое управление. Микрофоны сервера
Возвращаемся к теме и составляем план атаки:
Часть 1
Вначале определимся как вообще будем распознавать голос.
1. Нужно его записать. Причем записать от первой тишины и до второй.
2. Было бы очень уместно почистить фильтром на основе ранее записанной тишины.
3. Переконвертировать в требуемый формат.
4. Отправить в Гугл и получить ответ.
Часть 2
Нагружать МД этими заданиями мне бы не хотелось. Всё это добро требует много ресурсов и времени, поэтому будет сильно тормозить и вешать циклы. А если мы захотим "поговорить" из двух разных комнат одновременно?
Вариант решения только один. Сторонняя программа, которая и будет всем этим заниматься. У меня есть небольшая разработка на этот счет. Но возможно кто нибудь решит сделать лучше. В любом случае надо обсудить алгоритм.
1. Алиса, когда ей самой захочется, Отправит запрос программе на получения ответа. При этом добавив к нему случайный и в какой то степени уникальный id.
2. Программа выполнит все шаги записи - распознавания, и вернет Алисе текст с указанием этого id. Таким образом всегда будет понятно на какой запрос получен ответ. В id можно и данные о комнате зашить для мультирума.
Вначале для связки я хотел использовать свой отдельный класс. Но это оказалось лишнее. Думаю правильнее будет передавать ответ сразу методу commandReceived объекта ThisComputer.
Часть 3
Ключевое слово (имя персонажа)
Тут пока что болт. Ничего стоящего внимания я не нашел. Отправлять все в Гугл я не хочу. Полюбому требуется оффлайн распознавание ключевого слова. Без него все диалоги сможет начинать только Алиса, например по срабатыванию датчика движения. Ну а когда решение будет найдено, то дальше уже сработает наш алгоритм.
1. Программа распознает ключевое слово.
2. Программа отправляет Алисе сообщение об этом с указанием комнаты.
3. Алиса откликается.
4. далее работает алгоритм части 2
mirsum писал о железяке, которая может помочь. http://smartliving.ru/forum/viewtopic.p ... =10#p16870 Мне конечно больше нравится программное решение. Все же аппаратная часть для этого у нас будет. Но пока выбирать не из чего. Надо пробовать любые варианты.
Часть 1
Вначале определимся как вообще будем распознавать голос.
1. Нужно его записать. Причем записать от первой тишины и до второй.
2. Было бы очень уместно почистить фильтром на основе ранее записанной тишины.
3. Переконвертировать в требуемый формат.
4. Отправить в Гугл и получить ответ.
Часть 2
Нагружать МД этими заданиями мне бы не хотелось. Всё это добро требует много ресурсов и времени, поэтому будет сильно тормозить и вешать циклы. А если мы захотим "поговорить" из двух разных комнат одновременно?
Вариант решения только один. Сторонняя программа, которая и будет всем этим заниматься. У меня есть небольшая разработка на этот счет. Но возможно кто нибудь решит сделать лучше. В любом случае надо обсудить алгоритм.
1. Алиса, когда ей самой захочется, Отправит запрос программе на получения ответа. При этом добавив к нему случайный и в какой то степени уникальный id.
2. Программа выполнит все шаги записи - распознавания, и вернет Алисе текст с указанием этого id. Таким образом всегда будет понятно на какой запрос получен ответ. В id можно и данные о комнате зашить для мультирума.
Вначале для связки я хотел использовать свой отдельный класс. Но это оказалось лишнее. Думаю правильнее будет передавать ответ сразу методу commandReceived объекта ThisComputer.
Часть 3
Ключевое слово (имя персонажа)
Тут пока что болт. Ничего стоящего внимания я не нашел. Отправлять все в Гугл я не хочу. Полюбому требуется оффлайн распознавание ключевого слова. Без него все диалоги сможет начинать только Алиса, например по срабатыванию датчика движения. Ну а когда решение будет найдено, то дальше уже сработает наш алгоритм.
1. Программа распознает ключевое слово.
2. Программа отправляет Алисе сообщение об этом с указанием комнаты.
3. Алиса откликается.
4. далее работает алгоритм части 2
mirsum писал о железяке, которая может помочь. http://smartliving.ru/forum/viewtopic.p ... =10#p16870 Мне конечно больше нравится программное решение. Все же аппаратная часть для этого у нас будет. Но пока выбирать не из чего. Надо пробовать любые варианты.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Часть 1
Часть 1
Написать программу, которая все делает сама я не смогу еще долго. А может не смогу и вообще. Это совершенно не мой профиль и никак не пригодится по работе. Но можно прикрутить сторонние утилиты и управлять ими. Все они будут лежать в архиве с программой.
Рекомендую протестить каждый шаг по отдельности. Чтобы получить хорошее распознавание нужно хотя бы самому послушать, что мы в Гугл отправляем, и на сколько разборчиво звучит голос в записи.
1. Записать файл до тишины.
Тут поможет sox. Штука эта очень мудрая, и содержит уйму аргументов. Вот пример вызова, чтобы записать звуковой файл current.wav от первой тишины и до второй.
sox -d -c 2 -r 44100 -b 16 current.wav silence -l 1 0.1 0.1% 1 2.0 0.1%
Все параметры подбираются индивидуально. Первая группа 1 0.1 0.1% это характеристики первой тишины после которой начнется запись. Вторая группа 1 2.0 0.1% характеристики второй тишины после которой запись завершится. Параметр -l означает, что в файл нужно писать и тишину паузы в конце. Но я не нашел такого параметра для тишины вначале, и поэтому часто самое начало не пишется. И например вместо слова "Скажи" получается "Кажи", или вообще первое короткое негромкое слово теряется. Пришлось отказаться от тишины вначале и писать все сразу до тишины в конце. Вот как это выглядит:
sox -d -c 2 -r 44100 -b 16 current.wav silence -l 0 1 2.0 0.1%
В первой группе 0 и больше ничего. Это означает, что пишем сразу. После этого sox завершит свою работу и передаст управление дальше. Вот хороший сайт с описанием http://sox.sourceforge.net/sox.html
2. Удалить шум.
Тут тоже поможет sox. Но я пока что это не изучал. Примеры в Интернете есть. Суть в том, чтобы для фильтра использовать файл с шумом именно вашей системы. Может быть кто нибудь работал с sox и сможет помочь примерами.
3. Переконвертировать в требуемый формат.
Гугл хочет получить файл именно во flac формате. wav не годится. Нужно либо сразу писать со flac, либо переконвертировать. Опять же может помочь sox, и я находил примеры. Но нужна версия с такими возможностями. Я чего то не нашел... Кроме sox переконвертировать может и сам flac например вот так:
flac -f current.wav
После этого будет создан файл current.flac и утилита вернет управление чтобы продолжить дальше.
4. Гугл
Моя программа написана на VB6. Это конечно очень старый язык, но по своей работе, я неплохо знаю VBA, а VB6 это почти тоже самое. Для общения с Гуглом используется curl. Я ранее не сталкивался с ним, но у меня получилось причесать похожий пример и заставить его работать. Но я пока что не переиначил его на VB6 и поэтому из своей программы просто обращаюсь к файлу voice_recognition.php Вообще конечно можно было весь код засунуть в voice_recognition.php, да и вообще даже в методы МД. Не делать это я не хочу. Как уже писал, при работе, циклы будут вешаться.
Ранее Гугл всем и просто так разрешал пользоваться своим сервисом распознавания голоса. Но потом ему похоже это поднадоело. И они решили закрыть эту публичную вечеринку, но пускать туда всех желающих. Чтобы иметь возможность пользоваться их сервисом, нужно стать разработчиком Гугла и получить уникальный код. Только при его наличии сервис будет общаться. Причем каждому коду дали только по 50 обращений в сутки. Но тут опять странность. Если обращений будет больше 50, то все равно сервер продолжает отвечать. Более того, народ писал, что и 500 работает. Вообщем даже бутылки водки не хватит чтобы столько за день наговорить )) Кроме того, в Интернете можно выловить еще действующие коды. Несколько их я записал в файле, чтобы сразу не тратить время на регистрацию. А вообще можно без труда получить код на свой акк в гугле или даже создать новый, а можно и сразу 2, если ограничение в 50 все же вступит в силу.
Написать программу, которая все делает сама я не смогу еще долго. А может не смогу и вообще. Это совершенно не мой профиль и никак не пригодится по работе. Но можно прикрутить сторонние утилиты и управлять ими. Все они будут лежать в архиве с программой.
Рекомендую протестить каждый шаг по отдельности. Чтобы получить хорошее распознавание нужно хотя бы самому послушать, что мы в Гугл отправляем, и на сколько разборчиво звучит голос в записи.
1. Записать файл до тишины.
Тут поможет sox. Штука эта очень мудрая, и содержит уйму аргументов. Вот пример вызова, чтобы записать звуковой файл current.wav от первой тишины и до второй.
sox -d -c 2 -r 44100 -b 16 current.wav silence -l 1 0.1 0.1% 1 2.0 0.1%
Все параметры подбираются индивидуально. Первая группа 1 0.1 0.1% это характеристики первой тишины после которой начнется запись. Вторая группа 1 2.0 0.1% характеристики второй тишины после которой запись завершится. Параметр -l означает, что в файл нужно писать и тишину паузы в конце. Но я не нашел такого параметра для тишины вначале, и поэтому часто самое начало не пишется. И например вместо слова "Скажи" получается "Кажи", или вообще первое короткое негромкое слово теряется. Пришлось отказаться от тишины вначале и писать все сразу до тишины в конце. Вот как это выглядит:
sox -d -c 2 -r 44100 -b 16 current.wav silence -l 0 1 2.0 0.1%
В первой группе 0 и больше ничего. Это означает, что пишем сразу. После этого sox завершит свою работу и передаст управление дальше. Вот хороший сайт с описанием http://sox.sourceforge.net/sox.html
2. Удалить шум.
Тут тоже поможет sox. Но я пока что это не изучал. Примеры в Интернете есть. Суть в том, чтобы для фильтра использовать файл с шумом именно вашей системы. Может быть кто нибудь работал с sox и сможет помочь примерами.
3. Переконвертировать в требуемый формат.
Гугл хочет получить файл именно во flac формате. wav не годится. Нужно либо сразу писать со flac, либо переконвертировать. Опять же может помочь sox, и я находил примеры. Но нужна версия с такими возможностями. Я чего то не нашел... Кроме sox переконвертировать может и сам flac например вот так:
flac -f current.wav
После этого будет создан файл current.flac и утилита вернет управление чтобы продолжить дальше.
4. Гугл
Моя программа написана на VB6. Это конечно очень старый язык, но по своей работе, я неплохо знаю VBA, а VB6 это почти тоже самое. Для общения с Гуглом используется curl. Я ранее не сталкивался с ним, но у меня получилось причесать похожий пример и заставить его работать. Но я пока что не переиначил его на VB6 и поэтому из своей программы просто обращаюсь к файлу voice_recognition.php Вообще конечно можно было весь код засунуть в voice_recognition.php, да и вообще даже в методы МД. Не делать это я не хочу. Как уже писал, при работе, циклы будут вешаться.
Ранее Гугл всем и просто так разрешал пользоваться своим сервисом распознавания голоса. Но потом ему похоже это поднадоело. И они решили закрыть эту публичную вечеринку, но пускать туда всех желающих. Чтобы иметь возможность пользоваться их сервисом, нужно стать разработчиком Гугла и получить уникальный код. Только при его наличии сервис будет общаться. Причем каждому коду дали только по 50 обращений в сутки. Но тут опять странность. Если обращений будет больше 50, то все равно сервер продолжает отвечать. Более того, народ писал, что и 500 работает. Вообщем даже бутылки водки не хватит чтобы столько за день наговорить )) Кроме того, в Интернете можно выловить еще действующие коды. Несколько их я записал в файле, чтобы сразу не тратить время на регистрацию. А вообще можно без труда получить код на свой акк в гугле или даже создать новый, а можно и сразу 2, если ограничение в 50 все же вступит в силу.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Голосовое управление. Микрофоны сервера.
Давайте пробовать. Вместе будем доделывать дальше http://smartliving.ru/forum/viewtopic.p ... 102#p13102
Обсуждение распознавания речи будем продолжать в этом топике.
Обсуждение распознавания речи будем продолжать в этом топике.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Голосовое управление. Микрофоны сервера.
Новое обновление в ветке с программой.
Сегодня проверена работа на Windows 7 64
Пишите комментарии!
Сегодня проверена работа на Windows 7 64
Пишите комментарии!
-
- Сообщения: 43
- Зарегистрирован: Пт дек 26, 2014 6:37 pm
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
Re: Голосовое управление. Микрофоны сервера.
эх, жаль что решение не кросcплатформенное. Недавно перетащил все на RPi
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Голосовое управление. Микрофоны сервера.
Главное идея. Возможно кто нибудь напишет лучше и не только под винды. Кроме возможностей, тут основная тема в создании очереди из звуков, текста и задач на распознавание. Правда с этим пока что тоже грабли. Не получается видеть окончание чтения текста. Придется переписывать этот модуль на другой библиотеке. Найти бы хороший пример чисто на api вот было бы дело.
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Голосовое управление. Микрофоны сервера.
Bagir! Нужно Ваше мнение.
Пробовал (эксперимент) с обработкой звука. Схема такая. Сервер расположен в прихожей, там же установлен котел, он при работе естественно гудит (турбины и насос) так вот на сервере установлена Веб камера которая "смотрит" на входную дверь
А в камере есть хороший микрофон. Пробовал звук от него замечательный, но есть наложение гула от котла ... система как бы реагирует на голос без ошибок.
Но вот заметил что при тестах котла он издает характерный звук (перезапуск) и на него реагирует сервер (вижу по оживлению записи на диск и IP активность).
Как у Вас подобная задача решалась или не было такой "проблемы".
Можно как бы камеру перевесить но тогда страдает ее прямая задача.
А так здорово зашел в дом .."включи свет". и тд... красота
Пробовал (эксперимент) с обработкой звука. Схема такая. Сервер расположен в прихожей, там же установлен котел, он при работе естественно гудит (турбины и насос) так вот на сервере установлена Веб камера которая "смотрит" на входную дверь

А в камере есть хороший микрофон. Пробовал звук от него замечательный, но есть наложение гула от котла ... система как бы реагирует на голос без ошибок.
Но вот заметил что при тестах котла он издает характерный звук (перезапуск) и на него реагирует сервер (вижу по оживлению записи на диск и IP активность).
Как у Вас подобная задача решалась или не было такой "проблемы".
Можно как бы камеру перевесить но тогда страдает ее прямая задача.

А так здорово зашел в дом .."включи свет". и тд... красота

- Рейтинг: 1.16%
-
- Сообщения: 309
- Зарегистрирован: Вт сен 17, 2013 10:11 pm
- Благодарил (а): 3 раза
- Поблагодарили: 56 раз
Re: Голосовое управление. Микрофоны сервера.
Кто бы сделал подробную инструкцию для юзеров?))
Планирую развернуть под debian+cubietruck+USB-звуковуха с мкрофоном.
Пока чем больше читаю и разбираюсь с кодом в гитхаб-исходниках, тем больше понимаю, что я нифига не понимаю((
Планирую развернуть под debian+cubietruck+USB-звуковуха с мкрофоном.
Пока чем больше читаю и разбираюсь с кодом в гитхаб-исходниках, тем больше понимаю, что я нифига не понимаю((
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Голосовое управление. Микрофоны сервера.
Та точно так же! Но потихоньку пазлы все же складываютсяelectric писал(а):тем больше понимаю, что я нифига не понимаю((

shemnik69 У меня на кухне котелок тоже гудит. Но микрофон не рядом, и он его не беспокоит. Перевешивать камеру конечно не очень. Да и выносной микрофон тоже навешивать не хочется, если звук хороший. На будущее, конечно нужно офлайн распознавание ключевого слова. А пока что как вариант датчик долгая не активность + движения. Тогда Алиса здоровается и запускает сессию распознавания. Такой план буду делать у себя завтра. Все уже есть, только время не хватает ))