Управление Умным Домом с помощью голоса

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 05 июн 2013, 12:40

ArtSamovar писал(а):Что мы имеем?
Итак, принцип такой.
пишем wav файл, звук снимаем с микрофона, продолжительностью 2 секунды, он сохраняется. Далее запускается sndfile-spectrogram, который делает цветную картинку (и к сожалению, 640 на 640 минимум. Можно использовать sox. Он тоже это умеет. Я не стал читать мануал и поставил sndfile-tools). После этого, запускается php скрипт, который пропускает через фильтры это изображение, обрезает и сохраняет в виде черно-белой картинки 50х50 пикселей. Закончив работу, управление передается нейронной сети (О ней в соседней ветке), которая выдает результат.
ArtSamovar! Идея замечательная. Просмотрел ролик. Очень понравилось. Но... Есть некое но... Обучать систему "Настей" в течение часа - это много. Пусть даже база небольшая, 1000 с небольшим, но это УЖЕ наработанная база... Своя и апробированная...

Мне понравился Ваш принцип. Хотя я еще не использовал PHP в части раскладки изображения, но знаю, в нем есть такие функции.
Но я бы пошел несколько другим путем. Во первых, Гугл - интересная штука, но транслировать свою речь в него постоянно, как то не горю желанием (хотя пока еще и не пробовал, на данный момент другие задачи, в будущем попробую, надо же перенять опыт первопроходцев).

То есть идею, постоянно транслировать речь в Гугл, я как то не поддерживаю. Обращаться периодически, для сверки фраз - возможно...

Как бы я сделал у себя. В каком направлении пошел, бы... (Пока это только на уровне идеи, но любая идея может быть осуществима).

1. Когда то давно в старом журнале Радио видел схему управления машинкой по голосу. Микрофон. Полосовой простейший фильтр, настроенный на определенную частоту буквы. Сейчас в век атмелов, можно родить (наверняка можно) последовательное аппаратное распознавание слова. Например, у Вас Настя, у меня - Вики. Четыре, пять букв. И так, блок-схема. Микрофон. Частотный фильтр, аппаратный, последовательно распознающий несколько букв. Реле на выходе, или ключ (без разницы). Как только например, произношу "Вики", срабатывает сие устройство, загорается светодиод в удобном месте (скажем, под потолком) и - сигнал пошел на звуковую карту компа. Далее уже он распознается и т.п. Можно конечно же, придумать и завершающую фразу. Тем самым УЖЕ для анализа сигнала будет ЧЕТКО отмеренный кусок команды.

2. Микрофоны с АРУ это хорошо. Шорох-5, шорох-7. Это отдельная тема. Сигнал естественно, нужно пропускать через АРУ и некий полосовой фильтр. У меня где-то уже валяется отстроенная схема. Долго с ней в свое время возился, но ничего нового я в общем, то не придумал - взял несколько схем и объединил в одну, естественно, отстроив плату. Идея с микрофонной сетью ну просто замечательная... Но... у меня в свое время один микрофон, простой МЭК (давно было, не помню точное название, в радиодеталях по мелкой цене и сейчас они продаются), пару - тройку КТ315 и выход на УН7 - каждый шорох ловил, муха пролетит в другом конце комнаты - все слышно. Усиление специально гробил. Только ньанс один был - резонаторная трубка перед микрофоном, кусок пластика, 3-5 мм в диаметре. И длина см 10 где-то.

И так, микрофонная сеть для усиления голоса? Я бы не стал ее делать. Достаточно по микрофону в каждой комнате. По одному светодиоду под потолком, чтобы видеть реакцию Вики, Насти на команду. Управление светодиодом - по 1-ware или через контроллер (по Вашему вкусу).

Хотя вчера, бегло просматривая эту ветку форума (а вчера я для себя вообще сделал открытие, благодаря Андрею_Б, что на этом замечательном сайте есть замечательный форум), натолкнулся на какую-то внешнюю ссылку, вроде про микрофонную сеть, и там на рисунке увидел фото аппарата с микрофоном (вроде три светодиода посередине) эллипсоидного типа. Бегло перевел статью Гуглом, вскользь глянул на текст - и родилась идея - а не использовать бы два направленных микрофона, установленных на поворотнике (можно сервопривод использовать). То есть, некое подобие "головы" с ушами, которая бы в зависимости от источника звука поворачивалась. Схемку соорудить на компараторах думаю, не особо было бы трудно. СА3 можно использовать для сравнения. Что мы тогда поимеем? Узконаправленных два микрофонных луча, плюс - направление на собеседника. Последнее лично для меня не мало важно, так как следующая очередная задача после запуска 1-Ware, это определение перемещения членов семьи, да и гостей. Не только в пределах одной комнаты, но и по всему дому. Но это тема другой ветки форума.

3. Само распознавание. Первопроходцам - ОТДЕЛЬНОЕ СПАСИБО!!! Даже если результат - не результат, это тоже РЕЗУЛЬТАТ.
Вы изначально режете фрагменты. Берете ВЕСЬ поток и его анализируете. Комп постоянно на сравнении. Тут да, любой шорох, любая наложенная лишняя фонограмма на команду - делает систему неустойчивой. Обучать комп в течение часа - долго. Хотя это и хорошо, иметь свой собственный набор библиотек. Но.... Как бы я сделал. Я бы не обучал комп в цикле распознавать и раскладывать по папкам фрагменты речи, а пошел бы обратным путем - заготовил бы несколько вариаций одного слова. Например, мое имя Андрей можно произнести с разной интонацией и с разным ударением и по-разному тянуть гласные. Можно и окончание сказать приглушенно, задавлено (например, утром, спросонья). То есть, наваял бы разных вариантов одного и того же слова и на каждое бы записал эквивалент голоса.

А потом бы использовал Ваше картиночное сравнение на PHP.

Улавливаете разницу?

Вы берете ВЕСЬ звук и раскидываете его по папкам. А в моем варианте - просто СРАВНЕНИЕ уже готовых шаблонов с куском отсеченного (см. пункт 1) фрагмента команды.

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

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Управление Умным Домом с помощью голоса

Сообщение ArtSamovar » 05 июн 2013, 18:40

Андрей писал(а):
ArtSamovar писал(а): ....Вы берете ВЕСЬ звук и раскидываете его по папкам. А в моем варианте - просто СРАВНЕНИЕ уже готовых шаблонов с куском отсеченного (см. пункт 1) фрагмента команды.
...по папкам - это самообучение. Интонация всегда разная ))) Вот суммарно и вышло более 1000...

Сравнение уже готовых шаблонов - например десяти приведёт к очень частым ложным срабатыванием (или наоборот, редким). На практике voicecontrol, первый опыт на php и некоторые виндовые программы.

Да, я беру весь звук, потому что я не знаю С++ и способов снятия позвучно с sox'а в режиме реального времени, как делает это Гугл. )))

По поводу распознавания на ардуино, по высоте звуков. Да есть, да "работает". Принципы именно такие, по высоте ))) Но она настолько криво работает, что добиться внятного от неё невозможно. 1 ссылка, 2 ссылка.
Сайт на русском не отвечает, вот кэш 3 ссылка

То, что бегло прочли ветку...
2 варианта - google и локальное распознавание.
1 всё слушает
2 ошибается
Я попытался скрестить ежа и ужа.
Вика, Даша, Саша, Маша локально (!), а все остальное уже в google)

Микрофон в моем случае пишет все (sox точнее, по тишине), и пару простых проверок. Если файл весит примерно N кб, то запускаем скрипт, получаем img, далее или сравниваем с простым шаблоном (отчего в итоге ушёл), или режим на звуки, и отправляем в нейронную (или свою упрощенную), где приблизительно, по базе (привет самообучению, где участвует google, хоть и не всегда) вытаскиваются "знакомые" свуки и собирается слово. Затем оно сравнивается с массивом слов. И только в том случае, если процент совпадения высок, то активизируется уже 2-ой скрипт, работающий с гуглом (или по такой же системе с локальной базой). До этого момента, в интернеты ничего не отправляется, ресурсы машинки впустую не тратятся.

Сейчас мучаюсь с текстовой "нейронной" сетью :D Звучит забавно, понимаю... Пока результаты слабые, но все впереди.

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

Что касается микрофонов. Ответ неоднозначный и зависит от использования.
Микрофонная сеть - это упрощенный кинект, разница и сила звука и есть координаты человека (2 микрофона, но хороших на одну комнату)
под этим подразумеваю сетевой микрофон, звук снимать по сети, а не через единственный вход материнской платы встроенной звуковой карты
Микрофонная матрица - это очень дорого и нет места )))

Узконаправленный или нет?
Я за второе... Компактнее, проще (наверное) срезать шумы и пролетающих мух.
А так же радиус действия.
При открытом окне - шорох, еле слышит что там (2 этаж), звук от окна разбираем (около 4,5 метров), дальше пока и гугл бессилен, не понимает речь более 4-4,5 метров от 7-ми метрового Шороха. За то в Скайпе, хоть по всей квартире ходи и обычным голосом разговаривай ))))

Подытожу...
В гугл ничего не отправляется пока не будет кодового слова (Настя, Вики...)
Простыми шаблонами, черевато ошибками, но зато скорость большая
Разбор изображения и отправка в нейронную сеть или поиск по базе чуть уступает в скорости по шаблонам, но качество куда выше. (Обучать - это минус)
Узконаправленный микрофон полезно ставить например на улицу, что бы захватывал только часть крыльца и не слушал деревья (например), но не в помещение (гостинная, спальня)
Лень — двигатель прогресса...

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 05 июн 2013, 22:55

Спасибо за развернутый ответ. Все Ваши достижения очень хочется повторить на практике. Только, к сожалению, нету времени все охватить, чтобы хотелось. Чтобы понять как у Вас все работает, мне нужно шаг за шагом повторить Ваши действия - тогда родятся новые мысли.

Пока слабо представляю, что такое нейронная сеть. Но этот пробел скоро восполню - где-то на форуме или на сайте у Андрея_Б видел что-то про это.

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

Видел выше по этой ветке высказывания kost:
kost писал(а):Здравствуйте форумчане!
Мы в компании Speereo занимаемся вопросами речевого управления...
...Короче забейте....
Точно не для домашнего ковыряния задача, больно трудоемкоая, хотя, признаюсь, интресная.
ArtSamovar! Я как то считаю несколько иначе... Забивать как-то не хочется, пусть эта наука и трудоемкая, но оно того стоит. Не боги горшки обжигают. Сначала мысль появляется - рождается алгоритм программы, потом она реализуется на практике. Методом проб и ошибок. С результатом и без. Пусть те ребята каждодневно этим и занимаются, но Вы и другие энтузиасты от них ничем не отличаетесь - Та же Мысли и те же действия. То что опыта нету в Си++, это наживное. У меня ведь тоже нету опыта в Си++, и в PHP я не гений. Но мне это просто интересно - и поэтому я этим также скоро займусь. Как то дом без нормального голосового управления - как то не дом вовсе...

Мне чем понравился этот форум - напоминает НИИ, где одна команда как бы работает над одним общим делом...

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Управление Умным Домом с помощью голоса

Сообщение ArtSamovar » 05 июн 2013, 23:12

Андрей, смысл прост.
Если у вас линукс, тогда установите php, imagemagick, sox, flac и сопутствующие программы.
Записываете по тишине или по N секунд, фильтруете по тишине, снимаете спектрограмму.
Далее imagemagick градации серого, контраст... Что бы получилось "чистенькое" изображение 100 на 100 (хотя бы)
После скрипты... Читаете индекс цвета каждого пикселя, округляете от 0 до 9 и сохраняете с этим именем. Это и будет некий хэш спектрограммы.
Затем читаете имена всех файлов в папке и по расстоянию Хэмминга, или Левенштейна, или или или... Находите похожие. Если их несколько, то это верный результат. Если много, то можно и обучить, добавив новый файл. Если мало, то нет... Алгоритм прост.

А по поводу нейронных сетей почитайте. Довольно интересная тема.
Было бы здорово для распознавания использовать BOINC, но он занимается более важными вещами )))
Лень — двигатель прогресса...

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 05 июн 2013, 23:22

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

PHP уже есть и установлено на Debiane.
Осталось дело за малым - внимательно прочитать с самого начала всю эту ветку и начать экспериментировать...

dima
Сообщения: 42
Зарегистрирован: 19 фев 2012, 01:50

Re: Управление Умным Домом с помощью голоса

Сообщение dima » 16 июн 2013, 00:08

ArtSamovar писал(а):Андрей, смысл прост.
Если у вас линукс, тогда установите php, imagemagick, sox, flac и сопутствующие программы.
Записываете по тишине или по N секунд, фильтруете по тишине, снимаете спектрограмму.
Далее imagemagick градации серого, контраст... Что бы получилось "чистенькое" изображение 100 на 100 (хотя бы)
После скрипты... Читаете индекс цвета каждого пикселя, округляете от 0 до 9 и сохраняете с этим именем. Это и будет некий хэш спектрограммы.
Затем читаете имена всех файлов в папке и по расстоянию Хэмминга, или Левенштейна, или или или... Находите похожие. Если их несколько, то это верный результат. Если много, то можно и обучить, добавив новый файл. Если мало, то нет... Алгоритм прост.

А по поводу нейронных сетей почитайте. Довольно интересная тема.
Было бы здорово для распознавания использовать BOINC, но он занимается более важными вещами )))
1. есть смысл делать оптимизацию хранения названий файлов в папке в базе (ну хотя бы sqllite)?
2. давно слежу за развитием данного топика, очень нравиться появление реальных решений. от себя хотел бы добавить, считаю целесообразным в каждом помещении делать некий контроллер на одноплатном ПК с функциями сбора стандартных показаний (датчики темературы, движения, освещения) и ввода вывода аудио информации (микрофон и усилок с колонкой). одноплатные ПК обычно имеют небольшое количество GPIO, i2c - повесить датчики нет проблем. Мощности таких пк хватит чтобы записывать звук с микрофона, отправлять гугл, воспроизводить аудио и видео. Самое главное одновременная обработка управления голосом из нескольких помещений не создает сложностей, трансляция звука на любой такой контроллер тоже не проблема, никаких дополнительных проводов для микрофонов от центрального сервера не надо - так скажем концепция ip контроллера.
В данный момент одноплатных ПК rasberri pi, cubieboard, beeaglebone не хватает для обработки видео (usb web камера), а так было бы вообще супер.)))
Обещать ничего не буду, постараюсь реализовать такую штучку)))

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Управление Умным Домом с помощью голоса

Сообщение ArtSamovar » 16 июн 2013, 00:38

dima писал(а):1. есть смысл делать оптимизацию хранения названий файлов в папке в базе (ну хотя бы sqllite)?
Конечно смысл есть... Если допилить скрипты ))) Сделать нормальное самообучение )

По простым подсчетам нужно много места и времени для "живого" (естественного) самообучения без интернета.
Об этом потом напишу, есть пару идей пассивного распознавания.

Что кстати заметил, обрабатывая спектрограммы. Шум от обычного микрофона и шум от качественного явно отличается, из этого следует, что шум нужно убирать динамически в зависимости от микрофона (это избавит от привязки к определённому железу). Вторым моментом являются гласные звуки, они очень отчетливо выделяются. А так же согласные: ш, с, з и некоторые другие.

Всё конечно здорово, но долго. Нужен движок на Си. Скрипты + 2 отдельные программы - очень и очень долго.

Ещё один интересный момент. Человеческие уши "работают" по разному, левое слышит мелодичные, а правое более грубые звуки. Заводилась тема про микрофонную сетку, в ней есть громадный плюс - это 3D звук. Если поиграться с двумя микрофонами, вполне реально получить локализованный звук. Это огромный плюс к качеству звука и отсеивания посторонних шумов или той же музыки. По мере свободного времени поиграюсь с двумя шорохами и с частотой... О результатах напишу.

P.S. Идея написания на Си меня не покидает :D Учу матчасть
Лень — двигатель прогресса...

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 00:06

dima писал(а): 2. давно слежу за развитием данного топика, очень нравиться появление реальных решений. от себя хотел бы добавить, считаю целесообразным в каждом помещении делать некий контроллер на одноплатном ПК с функциями сбора стандартных показаний (датчики темературы, движения, освещения) и


Долго не мог понять... что же мне не нравится в одноплатном ПК... Со всех сторон вертел эту Вашу идею...
В принципе, что ребята с этого форума делают на самодельном контроллере, то Вы тоже самое будете иметь на одноплатном. Хотя я сам с одноплатными ни разу не общался (интересно, сколько же они стоят? 2-3 тыс.?), но я все же за контроллер в каждой комнате (или почти в каждой), но не на одноплатном ПК, а на самодельных, примерно вроде того, что описывает Андрей_Б.
dima писал(а): ввода вывода аудио информации (микрофон и усилок с колонкой). одноплатные ПК обычно имеют небольшое количество GPIO, i2c - повесить датчики нет проблем. Мощности таких пк хватит чтобы записывать звук с микрофона, отправлять гугл, воспроизводить аудио и видео.
Лично мне как то не хочется (для себя) нагружать миникомп (он же одноплатный ПК) для банального ввода-вывода звука, также было бы круто использовать именно этот же миникомп для анализа примитивных датчиков.
Идея, конечно же замечательная, если бы у меня было бы штук 10 халявных одноплатников и я бы чесал репу на тему, куда бы их деть, чтобы не валялись без дела.
dima писал(а): Самое главное одновременная обработка управления голосом из нескольких помещений не создает сложностей, трансляция звука на любой такой контроллер тоже не проблема, никаких дополнительных проводов для микрофонов от центрального сервера не надо - так скажем концепция ip контроллера.
В данный момент одноплатных ПК rasberri pi, cubieboard, beeaglebone не хватает для обработки видео (usb web камера), а так было бы вообще супер.)))
Обещать ничего не буду, постараюсь реализовать такую штучку)))
Специально подчеркнул Вашу фразу и вывел цветом, для того чтобы озвучить мою главную Мысль, почему бы я не стал для себя использовать одноплатники (даже Халявные!!!)

... что же мне не нравится в одноплатном ПК...
В умном доме Самая Главная Деталь - это УПРАВЛЯЮЩАЯ программа... Ну на мой взгляд, естественно...
Как программист, считаю, что сложно было бы синхронизировать каждый одноплатник между собой - в плане именно управляющего ПО.

Андрей_Б описывает свою прогу на PHP. Но, почти уверен - у него одна прога и она на Серваке. Врядли он пошел бы путем - на каждом одноплатнике самостоятельная прога, + общие файлы для синхронизации... Геморойно. Да и не интересно. Лучше нацелиться на что-то одно (один сервер и на нем ОДНА Прога - для централизированного управления всеми возможными и невозможными устройствами умного дома).

Я не беру во внимание - просто управлять с компа светом и просматривать температуру за период - для это одноплатники может быть и подойдут. Я говорю о неком Интеллекте, который должен же все же быть в этом умном доме.
dima писал(а): Обещать ничего не буду, постараюсь реализовать такую штучку)))
Фраза на самом деле очень хорошая. Ключевая.
Пробовать нужно... Может быть Вам и подойдут одноплатники.

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 00:11

ArtSamovar!!!
Можно вопрос?

Как Вы считаете, как можно реализовать функцию - по тембру речи - определение пола говорящего.
Если, например, анализировать спектр звука, как Вы и делаете, то можно ли каким-либо образом разделять речь на две группы - Мужскую и Женскую.
В смысле - просто в одну переменную выводить пол.
Как бы Вы это сделали?

Заранее, Спасибо.

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 00:13

Еще добавлю - к полу (муж, жен) хотелось бы еще добавить разделение на взрослых и детей. Опять же по тембральной окраске.

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 00:28

ArtSamovar писал(а):
Что кстати заметил, обрабатывая спектрограммы. Шум от обычного микрофона и шум от качественного явно отличается, из этого следует, что шум нужно убирать динамически в зависимости от микрофона (это избавит от привязки к определённому железу).
Подкину еще одну идейку - к примеру, в комнате играет музыка. Из колонок. И хотелось бы вычленить голос, которым вы говорите на фоне этой музыки...
Возможная реализация - с линейного выхода, от источника музыки, подать сигнал на некое устройство, которое просто из фона комнаты вычтет музыку и оставит речь...

Даже при открытом окне - можно вычленить шум за окном из фона комнаты - достаточно за окном установить микрофон и вычесть сигнал.

Как вычесть сигнал? На вход некой УДешки (усилитель на микросхеме) подать сигнал с микрофона, а на её же инверсный вход - подмешать сигнал, который нужно исключить. На выходе - "чистый" звук.

Хорошо бы еще на каждый из входов поставить по АРУ (поэкспериментировать и опытным путем определить - с какой амплитудой подавать исключающий сигнал).

Только все это всего лишь теория... Хотя... может быть и вполне работоспособная на практике...
ArtSamovar писал(а): Вторым моментом являются гласные звуки, они очень отчетливо выделяются. А так же согласные: ш, с, з и некоторые другие.
За это наблюдение - спасибо!
ArtSamovar писал(а): Ещё один интересный момент. Человеческие уши "работают" по разному, левое слышит мелодичные, а правое более грубые звуки.
Еще одно Спасибо от меня! не знал об этом...

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 00:51

ArtSamovar!
Все же Ваша идея мне по душе...
Может я ранее не особо точно выразился, попробую сделать это сейчас.
Пример такой житейский:
-Настя!
-Да, Василий! (ответ системы)
- Включи, пожалуйста, свет в комнате!
- Василий! Я распознала все Ваши слова, кроме одного. Только одно Ваше слово мне еще не знакомо.
Не могли бы Вы ввести его с клавиатуры? Я бы тогда быстрее училась.

Василий подходит к компу. На мониторе он видит надпись:
Включи, * * *, свет в комнате!

Василий набирает на клаве - "пожалуйста" и говорит в микрофон:
Настя! Тебе понятно? Можешь повторить?

- Да, Василий!
Ваше слово -Пожалуйста-

На мониторе три раза мигнуло слово - Пожалуйста.

P/S - Вы слушаете "эфир" комнаты. Постоянным потоком.
Как я уже писал ранее - и на примере этой сказки -

что нам нужно от компа? Чтобы на выходе было русское слово, написанное в буквах. Которое мы бы программно сравнили с нужной нам командой и система бы выполнила команду.

- Включи, пожалуйста, свет в комнате!

Если Звук="Включи свет в комнате" Тогда
Послать импульс на управляющее устройство;
КонецЕсли;

Банк наговоренных семплов (слов) - и своими ручками прописанный ихний эквивалент.

Я же говорю, Идея мне Ваша нравится! Способ сравнения звука - а ля сравнение как картинка.
Только чего то не хватает... Скорости бы побольше, да проц поменьше, я про комп (на простеньком чтоб все шло).
Может "слушать" постоянно эфир (именно все услышанные фразы попытаться распознать системой) - грузят проц и тормозят Вашу Идею...

Я же говорю...Нравится мне Ваше сравнение. Просто и со вкусом. Может быть чуть-чуть изменить схему обучения Насти?
Например, на такую:
1. Написать слово, тыкая по клаве.
2. Нажать кнопку (клавишу, не важно что - лишь бы система знала, что Вы пишете эквивалент)
3. Сопрячь звук и эквивалент в буквах.
4. А дальше - PHP, управление Умным Домом с помощью голоса.

Мне интересно, что Вы об этом думаете?

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 01:13

ArtSamovar!!!
Наверное, следующая конструкция окончательно сделает мою мысль для Вас понятной:

Переменная Звук -> это то, что мы получили на идеальном выходе. Распознанное машиной слово.

Начало Цикла....

Если Звук="Включи свет в комнате" Тогда
Послать импульс на управляющее устройство;
ИначеЕсли Звук="Выключи свет в комнате" Тогда
Послать импульс на управляющее устройство;
ИначеЕсли Звук="Включи телевизор" Тогда
Послать импульс на управляющее устройство;
ИначеЕсли Звук="... Любая фраза из 100 принудительно подсунутых машине голосовых команд.." Тогда
Послать импульс на управляющее устройство;
Иначе
Не анализировать фразы (они нам не нужны. Если нужна новая команда, мы ее запросто по этой же схеме и добавим)

КонецЕсли;

КонецЦикла; <- Цикл бесконечный (конечно, бесконечных циклов лучше не использовать, здесь я написал просто для примера, чтоб было понятнее)

P/S Сам бы сделал, с удовольствием. Но, пока я воюю с Линуксом на предмет его постижения.
Поэтому пока у меня это затянется во времени, этот опыт, Вы можете запросто эту Идею реализовать.

plusQ
Сообщения: 115
Зарегистрирован: 01 фев 2013, 15:29
Контактная информация:

Re: Управление Умным Домом с помощью голоса

Сообщение plusQ » 17 июн 2013, 13:28

Андрей писал(а):ArtSamovar!!!
Наверное, следующая конструкция окончательно сделает мою мысль для Вас понятной:

Переменная Звук -> это то, что мы получили на идеальном выходе. Распознанное машиной слово.

Начало Цикла....

Если Звук="Включи свет в комнате" Тогда
Послать импульс на управляющее устройство;
ИначеЕсли Звук="Выключи свет в комнате" Тогда
Послать импульс на управляющее устройство;
ИначеЕсли Звук="Включи телевизор" Тогда
Послать импульс на управляющее устройство;
ИначеЕсли Звук="... Любая фраза из 100 принудительно подсунутых машине голосовых команд.." Тогда
Послать импульс на управляющее устройство;
Иначе
Не анализировать фразы (они нам не нужны. Если нужна новая команда, мы ее запросто по этой же схеме и добавим)

КонецЕсли;

КонецЦикла; <- Цикл бесконечный (конечно, бесконечных циклов лучше не использовать, здесь я написал просто для примера, чтоб было понятнее)

P/S Сам бы сделал, с удовольствием. Но, пока я воюю с Линуксом на предмет его постижения.
Поэтому пока у меня это затянется во времени, этот опыт, Вы можете запросто эту Идею реализовать.
Думаю что нужно использовать идеи с обычных фантастических фильмов, суть таков,а что обычно перед вводом голосовой команды произноситься ключевая фраза. Произноситься имя виртуального устройства которая имеет минимальный процент ложного срабатывания, например "Дом", а затем команда. Если команда не последовала или не распознана в течении короткого времени, то вновь ждем ключевую фразу.

ЗЫ. Скорее всего нужно использовать иерархию
Дом -> (Включить/Выключить) ->(Свет/Телевизор) -> (Гостиная/Ванна/Туалет/....)
ИМХО при таком подходе ложных срабатываний будет мало, т.к. на каждом этапе у нас делается выбор из 2-5 фраз.

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Управление Умным Домом с помощью голоса

Сообщение x13dev » 17 июн 2013, 14:01

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

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

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 14:31

x13dev писал(а): К сожалению такие явления как конечная скорость звука и эхо переводят данную задачу из области простой электроники в программирование с зубодробительной математикой.
Надо просто пробовать... делать... тестировать...
По крайней мере можно добиться снижения нежелательного шума, подав разнофазный сигнал
x13dev писал(а): Хотя можно посмотреть в сторону handsfree устройств, там эта задача частично решена.
Не знал. Спасибо. Пролистаю что-нибудь на эту тему

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Управление Умным Домом с помощью голоса

Сообщение ArtSamovar » 17 июн 2013, 16:51

PlusQ прав, иерархии тут место быть. По крайней мере у меня она так переспрашивает и уточняет.

Андрей, известные слова должны обрабатываться, но немного по другому в отличии от неизвестных.
Известные должны "поправлять" то что уже известно, то есть дополнять и "выравнивать" базу слова или звуков. В роли самообучения они играют не маленькую роль )) Надеюсь понимаете.
А в самом "распознавании" они роли не играют, так как обрабатываются только неизвестные слова...
И небольшое уточнение по поводу "А что между первым и третьим словом?" - Пока это фэнтези, так как компьютер явно не определит, что пропущено слово. Не так ярко как человек. Он его обрабатывает, как слабый звук и пытается додумать (На примере гугла... Map Reduse) Если Вы скажете "Сколько по ту сторону людей?" - смягчив середину предложения, железка может обработать как "Сколько потусторонний(-их) людей?", окончание ий, их, ей - он додумает =) Сейчас комп - это глухой дедушка лет 88, который сидит со слуховым аппаратом и пытается что-то услышать... Может сравнение ни к черту, да простит меня старшее поколение, но оно примерно так и есть.
Я не знаю ни одной системы, которой можно давать команды слабым и не четким голосом...

База Гугла (было на Хабре кажется) выкладывалась и весила... Прочтите ))

Голосовое распознавание оффлайн на андроиде (русский) 15 Мб )))) (специальные возможности)

Алгоритм дальнейшей обработки может быть совершенно любым. Главная задача - само распознавание, затем обучение, потом смысловая сборка фразы и только потом алгоритмы для действия команд )
Лень — двигатель прогресса...

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 17:33

Андрей писал(а): ArtSamovar! ...
3. Само распознавание. ...Как бы я сделал. Я бы не обучал комп в цикле распознавать и раскладывать по папкам фрагменты речи, а пошел бы обратным путем - заготовил бы несколько вариаций одного слова. Например, мое имя Андрей можно произнести с разной интонацией и с разным ударением и по-разному тянуть гласные. Можно и окончание сказать приглушенно, задавлено (например, утром, спросонья). То есть, наваял бы разных вариантов одного и того же слова и на каждое бы записал эквивалент голоса.
... А в моем варианте - просто СРАВНЕНИЕ уже готовых шаблонов с куском отсеченного (см. пункт 1) фрагмента команды.
Если железяке подкинуть к примеру штук тридцать уже готовых эквивалентов управляющего слова - тогда, опираясь на базу, которая уже будет созданная за пару часов - то УЖЕ будет можно включать в систему управление Умным домом.

Слова записаны в фотозаготовки. Разные варианты эквивалентов на одно слово.
Тем самым - добиваемся почти 100% псевдораспознавания. И напрочь отказываемся от Гугла...

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Управление Умным Домом с помощью голоса

Сообщение ArtSamovar » 17 июн 2013, 18:00

Андрей писал(а):
Если железяке подкинуть к примеру штук тридцать уже готовых эквивалентов управляющего слова - тогда, опираясь на базу, которая уже будет созданная за пару часов - то УЖЕ будет можно включать в систему управление Умным домом.

Слова записаны в фотозаготовки. Разные варианты эквивалентов на одно слово.
Тем самым - добиваемся почти 100% псевдораспознавания. И напрочь отказываемся от Гугла...
Вы кажется не поняли меня. А может и я плохо объяснил. Если это так, то извиняюсь.

Ещё раз...

Эти шаблоны, эта база, эти заготовки - создаются динамически в процессе работы скрипта с течением времени.
То, что складывается по папкам - это и есть этот массив шаблонов, заготовок и примеров, называйте как хотите )
Есть же разница - сидеть 2 часа говорить "Настя, Вика, Настя, Вика....". А затем снова сидеть часа два-три и диктовать "включи, выключи".
Или в первый день работы скрипта с пятого-седьмого раза она откликнется, на второй день - уже с четвертого - третьего. Спустя неделю - уже 90% точности. Так помимо этого - она изучает не только своё имя, но и сами команды (выключить свет, включить свет, помигать и так далее.)
Роль гугла второстепенна здесь... Банально из-за лени самому не кидать в папочки текстовую фразу или слово.
Это раскидывание по папочкам и есть самообучение. В папки закидываются ТОЛЬКО файлы с высоким процентажом совпадения - более 95% и количеством не менее 10-15 штук (слов с разной интонацией). Если Вы за неделю наговорите "Включи свет", то эта фраза через две недели - будет уже практически безошибочно "угадана" (останется только кинуть в папку текстовый файл с буквами (или доверить гуглу, автоматизировать, так сказать)

Зачем её учить только одному? Пусть учит всё подряд, сама. За-то потом можете сделать статистику наиболее частых слов )))
Пусть она будет как маленький ребёнок, как попугай или айфоновский кот, который повторяет то, что часто услышит.
Я не вижу смысла в статическом обучении... А то что сидел пару часов и надиктовывал имя в микрофон - увы, была необходимость...
Если все это запихнуть в одноплатный ПК, то да - я согласен посидеть несколько часов и обучить её.

Скорость сравнения произнесенной фразы и то что уже имеется довольно высокая, она сравнивает имена "подобных" слов, если нет, то остаётся в папке, если да, то выполняется, если прекрасно, то сохраняется. А то барахло, что осталось в общей папке фильтруется еще одним скриптом, который чистит мусор. Если не чистить, то она будет реагировать на шум...

В интернеты ничего не отправляется! (У меня гугл - это автоматическая печатная машинка заученных фраз, потому что самому - лень...)
Лень — двигатель прогресса...

Андрей
Сообщения: 77
Зарегистрирован: 04 июн 2013, 16:37

Re: Управление Умным Домом с помощью голоса

Сообщение Андрей » 17 июн 2013, 18:05

ArtSamovar!
Спасибо за ответ.

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

Пока все понятно. В принципе - то что Вы написали - это как раз та модель, о которой я пытаюсь рассказать...

Ответить