ArtSamovar! Идея замечательная. Просмотрел ролик. Очень понравилось. Но... Есть некое но... Обучать систему "Настей" в течение часа - это много. Пусть даже база небольшая, 1000 с небольшим, но это УЖЕ наработанная база... Своя и апробированная...ArtSamovar писал(а):Что мы имеем?
Итак, принцип такой.
пишем wav файл, звук снимаем с микрофона, продолжительностью 2 секунды, он сохраняется. Далее запускается sndfile-spectrogram, который делает цветную картинку (и к сожалению, 640 на 640 минимум. Можно использовать sox. Он тоже это умеет. Я не стал читать мануал и поставил sndfile-tools). После этого, запускается php скрипт, который пропускает через фильтры это изображение, обрезает и сохраняет в виде черно-белой картинки 50х50 пикселей. Закончив работу, управление передается нейронной сети (О ней в соседней ветке), которая выдает результат.
Мне понравился Ваш принцип. Хотя я еще не использовал PHP в части раскладки изображения, но знаю, в нем есть такие функции.
Но я бы пошел несколько другим путем. Во первых, Гугл - интересная штука, но транслировать свою речь в него постоянно, как то не горю желанием (хотя пока еще и не пробовал, на данный момент другие задачи, в будущем попробую, надо же перенять опыт первопроходцев).
То есть идею, постоянно транслировать речь в Гугл, я как то не поддерживаю. Обращаться периодически, для сверки фраз - возможно...
Как бы я сделал у себя. В каком направлении пошел, бы... (Пока это только на уровне идеи, но любая идея может быть осуществима).
1. Когда то давно в старом журнале Радио видел схему управления машинкой по голосу. Микрофон. Полосовой простейший фильтр, настроенный на определенную частоту буквы. Сейчас в век атмелов, можно родить (наверняка можно) последовательное аппаратное распознавание слова. Например, у Вас Настя, у меня - Вики. Четыре, пять букв. И так, блок-схема. Микрофон. Частотный фильтр, аппаратный, последовательно распознающий несколько букв. Реле на выходе, или ключ (без разницы). Как только например, произношу "Вики", срабатывает сие устройство, загорается светодиод в удобном месте (скажем, под потолком) и - сигнал пошел на звуковую карту компа. Далее уже он распознается и т.п. Можно конечно же, придумать и завершающую фразу. Тем самым УЖЕ для анализа сигнала будет ЧЕТКО отмеренный кусок команды.
2. Микрофоны с АРУ это хорошо. Шорох-5, шорох-7. Это отдельная тема. Сигнал естественно, нужно пропускать через АРУ и некий полосовой фильтр. У меня где-то уже валяется отстроенная схема. Долго с ней в свое время возился, но ничего нового я в общем, то не придумал - взял несколько схем и объединил в одну, естественно, отстроив плату. Идея с микрофонной сетью ну просто замечательная... Но... у меня в свое время один микрофон, простой МЭК (давно было, не помню точное название, в радиодеталях по мелкой цене и сейчас они продаются), пару - тройку КТ315 и выход на УН7 - каждый шорох ловил, муха пролетит в другом конце комнаты - все слышно. Усиление специально гробил. Только ньанс один был - резонаторная трубка перед микрофоном, кусок пластика, 3-5 мм в диаметре. И длина см 10 где-то.
И так, микрофонная сеть для усиления голоса? Я бы не стал ее делать. Достаточно по микрофону в каждой комнате. По одному светодиоду под потолком, чтобы видеть реакцию Вики, Насти на команду. Управление светодиодом - по 1-ware или через контроллер (по Вашему вкусу).
Хотя вчера, бегло просматривая эту ветку форума (а вчера я для себя вообще сделал открытие, благодаря Андрею_Б, что на этом замечательном сайте есть замечательный форум), натолкнулся на какую-то внешнюю ссылку, вроде про микрофонную сеть, и там на рисунке увидел фото аппарата с микрофоном (вроде три светодиода посередине) эллипсоидного типа. Бегло перевел статью Гуглом, вскользь глянул на текст - и родилась идея - а не использовать бы два направленных микрофона, установленных на поворотнике (можно сервопривод использовать). То есть, некое подобие "головы" с ушами, которая бы в зависимости от источника звука поворачивалась. Схемку соорудить на компараторах думаю, не особо было бы трудно. СА3 можно использовать для сравнения. Что мы тогда поимеем? Узконаправленных два микрофонных луча, плюс - направление на собеседника. Последнее лично для меня не мало важно, так как следующая очередная задача после запуска 1-Ware, это определение перемещения членов семьи, да и гостей. Не только в пределах одной комнаты, но и по всему дому. Но это тема другой ветки форума.
3. Само распознавание. Первопроходцам - ОТДЕЛЬНОЕ СПАСИБО!!! Даже если результат - не результат, это тоже РЕЗУЛЬТАТ.
Вы изначально режете фрагменты. Берете ВЕСЬ поток и его анализируете. Комп постоянно на сравнении. Тут да, любой шорох, любая наложенная лишняя фонограмма на команду - делает систему неустойчивой. Обучать комп в течение часа - долго. Хотя это и хорошо, иметь свой собственный набор библиотек. Но.... Как бы я сделал. Я бы не обучал комп в цикле распознавать и раскладывать по папкам фрагменты речи, а пошел бы обратным путем - заготовил бы несколько вариаций одного слова. Например, мое имя Андрей можно произнести с разной интонацией и с разным ударением и по-разному тянуть гласные. Можно и окончание сказать приглушенно, задавлено (например, утром, спросонья). То есть, наваял бы разных вариантов одного и того же слова и на каждое бы записал эквивалент голоса.
А потом бы использовал Ваше картиночное сравнение на PHP.
Улавливаете разницу?
Вы берете ВЕСЬ звук и раскидываете его по папкам. А в моем варианте - просто СРАВНЕНИЕ уже готовых шаблонов с куском отсеченного (см. пункт 1) фрагмента команды.
Может Вам пригодятся мои мысли, потому что я сам подойду к этому вопросу чуть позже, пока самое простейшее надо реализовать (1-Ware, датчики, свет и т.п.)