Простое голосовое управление системой
Добавлено: Пт авг 10, 2012 12:36 pm
Обсуждение страницы Простое голосовое управление системой
Насчёт голосового поиска гугла - где-то мелькала информация о том, что их голосовой engine доступен (или будет в ближайшее время) в stand-alone виде внутри какого-то устройства, что по многим причинам гораздо интереснее, чем работа с удалённым сервером.sergejey писал(а):Обсуждение страницы Простое голосовое управление системой
Очень интересная идея. Как я сам до такого не додумался? Видать есть ещё над чем поработать...В доме у меня для этого предусмотрено по 4 потолочных микрофона в каждой комнате
Вот это да... Впечатлило. С такими людьми Умный Дом против нас долго не продержится- с них можно обрабатывать сигнал как с фазированной антенной решетки, т.е. достаточно эффективно фильтровать и отслеживать отдельные источники.
Без мобильных устройств можно сделать просто запустив хром с включенным голосовым вводом и зайдя на страницу http://ваш_сервер/command.php -- там в строке ввода нажать на микрофон и говорить команду. Но это, конечно, не очень удобно -- лучше было бы если б программа сама распознавала речь и отправляла её на гугл. На ab-log.ru в форуме есть большая дискуссия на эту тему -- там они подключают всякие фильтры и скрипты, но по-моему надёжного способа так и нет -- то распознаёт плохо, то качество записи хромает.Vip писал(а):А можно ли реализовать распознавание речи на уровне ПК, без привлечения мобильных устройств.
По примеру http://habrahabr.ru/post/117234/#comment_3812334
Как думаете, возможно?
К сожалению, не встречал. Под iOs я слышал, что делают в домашней сети специальный proxy-сервер для Siri, чтобы можно было перехватывать для неё команды и обрабатывать собственными средствами. Вот страница проекта https://github.com/plamoni/SiriProxyVadymkyr писал(а):а есть аналог этой программы для IOS?
Нет там никакой кнопки "нажать на микрофон" и нажимать не на что. Там только одна строка ввода sayVip писал(а):Без мобильных устройств можно сделать просто запустив хром с включенным голосовым вводом и зайдя на страницу http://ваш_сервер/command.php -- там в строке ввода нажать на микрофон и говорить команду. Но это, конечно, не очень удобно -- лучше было бы если б программа сама распознавала речь и отправляла её на гугл. На ab-log.ru в форуме есть большая дискуссия на эту тему -- там они подключают всякие фильтры и скрипты, но по-моему надёжного способа так и нет -- то распознаёт плохо, то качество записи хромает.
Код: Выделить всё
@import "/templates_alt/font-awesome/css/font-awesome.min.css";
Код: Выделить всё
<script>
// Создаем распознаватель
var recognizer = new webkitSpeechRecognition();
// Ставим опцию, чтобы распознавание началось ещё до того, как пользователь закончит говорить
recognizer.interimResults = false;
// Какой язык будем распознавать?
recognizer.lang = 'ru-Ru';
recognizer.onstart = function () {
//После старта
$('#voiceBtn').attr('style', 'position: fixed;z-index: 99;padding: 15px;border-radius: 50px;bottom: 0px;right: 0px;margin-right: 10px;background:lime;margin-bottom: 10px;animation: pulse;animation-iteration-count: infinite;animation-duration: 1s;');
$('#voiceBtn').attr('class', 'bg-gradient-06-anim-fast');
};
recognizer.onerror = function (event) {
//Если ошибка
};
// Используем колбек для обработки результатов
recognizer.onresult = function (event) {
var result = event.results[event.resultIndex];
if (result.isFinal) {
voiceStr = result[0].transcript.toLowerCase();
//Вот тут ключевое слово маленькими буквами, если ключего слова нет - будет слать все подряд на сервер
keyWords = voiceStr.indexOf('');
if(keyWords != '-1') {
//Часть запросов будем отрабатывать прямо из JS
if(voiceStr.substring(keyWords).toLowerCase() == 'алиса включи музыку') {
startPlayMusic();
} else {
//AJAX на сервер
$.getJSON({
url: '/objects/?script=VoiceTest&voice='+encodeURI(voiceStr.substring(keyWords)),
success: function(responce) {
//Возврат от скрипта MJDM
},
error: function(responce) {
console.log('Ошибка отправки AJAX');
}
});
}
}
}
};
recognizer.onend = function () {
//По окончании
$('#voiceBtn').attr('style', 'position: fixed;z-index: 99;padding: 15px;border-radius: 50px;bottom: 0px;right: 0px;margin-right: 10px;background: purple; margin-bottom: 10px;');
$('#voiceBtn').removeAttr('class');
//Если сюда вписать recognizer.start(); будет слушать эфир вечно
};
</script>
<div id="voiceBtn" style="position: fixed;z-index: 99;padding: 15px;border-radius: 50px;bottom: 0px;right: 0px;margin-right: 10px;background: purple;margin-bottom: 10px;" onclick="recognizer.start();">
<i class="fa fa-microphone" style="font-size: 3rem;color: white;"></i>
</div>
Код: Выделить всё
url: '/objects/?script=VoiceTest&voice='+encodeURI(voiceStr.substring(keyWords)),
Код: Выделить всё
url: '/command.php?qry='+encodeURI(voiceStr.substring(keyWords)),
Код: Выделить всё
$voice = urldecode($_GET['voice']);
debMes($voice);
sg('VoiceMD.text',urldecode($_GET['voice']));
echo 'ok';