Re: Управление Умным Домом с помощью голоса
Добавлено: 24 июл 2014, 10:04
А почему бы не использовать модуль http://dvrobot.ru/shop/i275.Arduino_-_m ... _rechi.htm и USB-UART переходник для стартового слова?
Не забудь приготовить 650 долларов.flighttothemoon писал(а):Вот вам микрофон для умного дома
http://www.voicepod.com/home.asp
Демонстрация здесь
https://www.youtube.com/watch?v=uyLtcPIqcUo
Tasker-ом пользуюсь давно , управлять голосом удобно, отклик 2-4 секунды от google(в зависимости от соединения интернет) но нужно заготовить некоторое количество фраз на одно действие, например "Выключить свет на кухне", "Выключить на кухне свет", "Выключи свет на кухне", "Выключи на кухне свет" и т.д. Столько фраз нужно потому что трудно контроллировать себя в произношении, получается самопроизвольно, поэтому постоянно добавляются новые/похожие фразы. А так очень удобно опрашивать голосом например температуру, и для этого можно напрямую обратиться к Megad, распарсить страничку ответа tasker-ом и тут же проинести в ответ и влажность и температуру, и состояние вх/вых и для этого нам не нужна ни база ни web-интерфейс, все самое простое можно делать через tasker.kellas писал(а):Рекомендую обратить внимание на autovoice и tasker под android.
Код: Выделить всё
audio
Код: Выделить всё
<script type="text/javascript">
navigator.vibrate([3000, 2000, 1000]);
</script>
Интересная штука! Но вот вопрос зачем - ведь например в Androide есть Настройки голосового ввода google где можно скачать словарь и так же распознавать слова в chrome в offline У меня прекрасно распознаёт короткие фразы тип (свет ,светильник, даже - температура в комнате , погода в городе"я так даже подозреваю что и обучается новым фразам так как при сбросе системы тупеет") Я не скажу за iPhone т.к. он мне не нравится(поэтому у меня его нет!!!), вполне возможно и там будет работать если на него chrome поставить! Если кто нибудь сможет проверить код на 16 странице на iPhone то буду благодарен!!Aquarius писал(а):На хабре появилась статья распознавания голоса оффлайн на опенсорсе.
Да, про это тоже говорится в статье, но я заметил интересную штуку у этого проекта - "волшебное слово". На сколько я знаю распознавание в гугле работает, но с непрерывным распознаванием какие-то проблемы, а с этим проектом можно запускать распознавание после того, как система услышит "волшебное слово".arbuzmaster писал(а): Интересная штука! Но вот вопрос зачем - ведь например в Androide есть Настройки голосового ввода google где можно скачать словарь и так же распознавать слова в chrome в offline
Я тестировал по http распознает непрерывно до образования тишины и через 5-10 сек сбрасывается доступ к микрофону, по https доступ к микрофону не спрашивает, просто начинает заново распознавать (если распознавание поставить в цикл) на Androide также работает и при выключенном экране т.е в фоне. У меня на Sony распознавал приблизительно с 2-3 метров(видимо микрофон хороший)Aquarius писал(а): На сколько я знаю распознавание в гугле работает, но с непрерывным распознаванием какие-то проблемы, а с этим проектом можно запускать распознавание после того, как система услышит "волшебное слово".
Чуть не соглашусь по поводу гугла, он беглую речь вполне понимает. И "Ok Google" теперь доступен и в браузере на PC, как раз по "волшебному слову".Aquarius писал(а): Да, про это тоже говорится в статье, но я заметил интересную штуку у этого проекта - "волшебное слово". На сколько я знаю распознавание в гугле работает, но с непрерывным распознаванием какие-то проблемы, а с этим проектом можно запускать распознавание после того, как система услышит "волшебное слово".
Микрофоны были параллельны как-то подключены или были независимыми друг от друга?ArtSamovar писал(а):Лично тестил у себя дома с тремя "Шорохами".
Они независимы друг от друга.Aquarius писал(а):Микрофоны были параллельны как-то подключены или были независимыми друг от друга?ArtSamovar писал(а):Лично тестил у себя дома с тремя "Шорохами".
Код: Выделить всё
<?
// Используем cURL для формирования HTTP POST-запроса к Google API
// AIzaSyAqk7vE0vQDR3JItUPgFp6bcPqgJz8h8tI
// AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw
/* Если возникает ошибка
URL error number:60
URL error:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Можно либо подсунуть найденный в просторах Интернета давно устаревший сертификат curl-ca-bundle.crt, либо просто отключить проверку
*/
/* Format *.flac
Channels : 2
Sample Rate : 44100
Precision : 32-bit
Sample Encoding: 32-bit Float
*/
$file_to_upload = array('myfile'=>'@'.'D:\Server\www\majordomo\current.flac');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-RU&key=AIzaSyAqk7vE0vQDR3JItUPgFp6bcPqgJz8h8tI');
// curl_setopt($ch, CURLOPT_CAINFO, 'd:\server\apps\curl-ca-bundle.crt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Отключить ошибку "SSL certificate problem, verify that the CA cert is OK"
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Отключить ошибку "SSL: certificate subject name 'hostname.ru' does not match target host name '123.123.123.123'"
curl_setopt($ch, CURLOPT_POST,1);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: audio/l16; rate=16000;')); // для wav файлов, но по слухам ни у кого не работает
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: audio/x-flac; rate=44100;'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_to_upload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
// показать инфу и ошибки
print_r(curl_getinfo($ch));
echo '<br>URL error number:' . curl_errno($ch);
echo '<br>URL error:' . curl_error($ch);
echo '<br>';
curl_close ($ch);
// Покачать весь ответ гугла
echo '<br>result='.$result;
echo "<br>";
// По не выясненным пока причинам, в версии V2 первый ответ всегда пустой. Берем второй.
$result_arr = split("\n", $result); $result = $result_arr[1];
// Google возвращает JSON, поэтому парсим стандартной функцией. Доступна в PHP 5.2
$json_array = json_decode($result, true);
$voice_cmd = $json_array['result'][0]['alternative'][0]['transcript'];
$confidence = $json_array['result'][0]['alternative'][0]['confidence'];
echo('<br>voice_cmd='.$voice_cmd);
echo('<br>confidence='.$confidence);
?>
Знак собаки "говорит" cURL'у, что это данные для загрузки. Они будут отправлены POST запросом.Bagir писал(а): Где то вычитал, что отключает проверки и curl будет выполняться дальше. Бред какой то, но без @ действительно не работает.
Что касается Андроида то конструктор приложений.arbuzmaster писал(а):У меня собственно созрели вопросы - А как вы записываете файл с голосом и отправляете на сервер? В связи с чем есть еще один вопрос - если файл записывается посредством Flash то это не работает на Смартфонах по крайней мере с Android или есть какие то другие варианты записать и передать файл на сервер? У меня это реализовано без передачи аудио файлов на сервер - т.е напрямую c google работает (код Javascript в одном из пед идущих сообщений) Работает везде и на компах и на смартфонах только при наличии Google Chromre браузера (без ключей и сертификатов).
Если не сложно то можно рабочий пример (node.js установлен)Что касается браузера, то UserMedia и через сокет на домашний сервер, а дальше что угодно... Хоть в Google, хоть в Sphinx4.
На микрофонах (через adc порт Меги) были попытки, но качество не очень, хоть и работает.
Вот статья на Хабре, почитайте. Думаю многое прояснитсяarbuzmaster писал(а):Если не сложно то можно рабочий пример (node.js установлен)