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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

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

Сообщение x13dev » 25 июн 2013, 12:39

Копался на гитхабе, нашёл проект называется Jarvis, используется google

http://cranklin.wordpress.com/2012/06/2 ... is-part-2/

Ajerec
Сообщения: 2
Зарегистрирован: 15 июл 2013, 13:37

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

Сообщение Ajerec » 15 июл 2013, 13:43

Можете выслать сертификат с переименнованным .crt? Через Яндекс.Народ браузер сразу предлагает установить сертификат, а скачанный из Интернета при подключении выдаёт:

Код: Выделить всё

error setting certificate verify locations: CAfile: curl-ca-bundle.crt CApath: none 
Кто подскажет, как решить?
P.S. Решение найдено:
Для пользователей ОС Windows: укажите полный путь к сертификату D:\...т.д......\curl-ca-bundle.crt
Последний раз редактировалось Ajerec 15 июл 2013, 14:32, всего редактировалось 1 раз.

Ajerec
Сообщения: 2
Зарегистрирован: 15 июл 2013, 13:37

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

Сообщение Ajerec » 15 июл 2013, 14:03

Также нашёл библиотеку, в которой из .wav можно сжать в .flac прямо на PHP.
Скачать библиотеку можно тут.
Запуск с помощью команды

Код: Выделить всё

system('"D:\путь к распакованной папке библиотеки\FLAC\flac.exe" -f'.'H:\полный путь к файлу');

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 15 июл 2013, 15:44

Ajerec, вызов system() - это не библиотека "прямо из PHP", это такой же внешний вызов, как если бы flac.exe вызывался в cmd/shell-скрипте до выполнения PHP-скрипта.

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

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

Сообщение Андрей » 20 июл 2013, 04:10

Андрей,
в фестивале только мужской голос?
Если есть женский, то подскажите, пожалуйста, как его поставить?

скачал msu_ru_nsh_cg (вроде пишут в Нете, женский), а перенаправить фестиваль не могу.

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

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

Сообщение Андрей » 20 июл 2013, 04:11

Можно ли управлять громкостью в Линуксе программно из PHP?

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

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

Сообщение ArtSamovar » 20 июл 2013, 07:19

Андрей писал(а):Андрей,
в фестивале только мужской голос?
Если есть женский, то подскажите, пожалуйста, как его поставить?

скачал msu_ru_nsh_cg (вроде пишут в Нете, женский), а перенаправить фестиваль не могу.
RHVoice - основан на фестивале, есть мужской и женский. Говорит даже получше...

Само управление зависит от драйвера, например для альсы. amixer setmaster 20. Кажется так, точно не помню. Если карт несколько то ключ -c укажет на какую именно. А вызов с помощью exec или. shell_exec.
Лень — двигатель прогресса...

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

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

Сообщение ArtSamovar » 20 июл 2013, 08:20

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

У спектрограммы синтезатора речи (использовал RHvoice, мужской голос) и моей спектрограммы очень похожи группы звуков по частоте за небольшой разницой в несколько кГц. Например буква "с" у робота - это полоска с 500кГц и выше, у меня она тоньше и ярче, но начинается с 480кГц в 95% сказанных мной слов с этой буквой.
Так вот, взял первую попавшуюся книгу (в виде текста) на 1,4 Мб. (процессор на ноутбуке i3)
split --line-bytes=100 book.txt порезал книгу на фрагменты не превышающие 100 байт, что избавило от длинных строк. Получилось округленно 15300 фрагментов.
Затем озвучивал их
cat ./books/name | RHVoice -r=75 -p=60 > ./ogg/name.ogg - на выходе 15000 (грубо говоря), выкинуло пустые строки.
Времени на озвучку ушло 3,5 часа ))))))) папочка разрослась до 1,7 Гб

Следующим шагом спектрограммы - 2,5 Гб, и около 1 часа времени
sox ./ogg/name -n spectrogram && cp spectrogram.png ./sp/name
размер 591х...

Так как sox делает изображение с рамкой, пришлось динамический искать ширину для каждого файла (серая рамка) и вырезать, одновременно убирая цвет.
convert -crop ".$x."x510+58+31 -colorspace GRAY ./sp/name ./png/name
размер 510х...
В итоге папочка в 2Гб - 40 минут.

Это еще не всё )
Далее скалируем по времени наше изображение. Есть короткие фразы, а есть длинные. При скалировании, мы растягиваем или сжимаем относительно времени файла sox --info file. То есть "Я тут" и "Я хотел бы зайти сегодня к Вам" на выходе будут иметь одинаковую длину звуков. ведь sox делает не бесконечно широкие изображения :)
Отскалировав и изменив размеры
$h = 200;
$w = ($width - 310);
$cmd = "convert -resize ".$w."x".$h." -rotate 90 0.png 0.png";
начинается самое неблагодарное, поиск и выделение групп...
С помощью similar_text, уровень похожести в 190 (не в процентах, подобрано опытно) делится на группы и пишется в массив. levenshtein ругается на длинну и выдает странные цифры, расстояние хэмминга тут не к месту, так как сравниваются "5 35 95 12....." строки такого вида.

Затем, для каждой группы (а это звук), мы ищем среднее значение, в итоге мы сжимаем все изображение до 1+1+1+1... Сколько групп найденно, столько и будет ширина. Скрипт уже обрабатывает по времени около 40 секунд... Но этого мало, нужно посчитать новые, тоже похожие строки (бывшие группы), записать результаты в файл, в другой записать эти самые группы ))
Итого 1,20 на обработку изображения 200х(300) - (длинный потому что мы его скалировали)

Так как руки растут у меня не из того места :D в скрипте была допущена ошибка, и незамеченная отправлена на выполнение у меня получилось очень много не нужных цифр и файлов спустя 3 часа...
Сейчас оптимизирую скрипт и пытаюсь его ускорить, на ночь поставлю считаться ))

Так вот, к чему я всё. На пробнике, небольшой текстовый файл, озвученный, разделенный на группы и записанный в "таблицы" процент одинакоых групп, и процент частоты букв в тексте с небольшой разницей совпали ))) А это означает, что и мой голос, да и другой тоже с небольшой поправкой с течением времени (разность частот букв) должен раскладывать на текст...

В конечном итоге, после "обучения" почти в 10 часов и сортировки полученных групп по таблицам получается алфавит, который наговорил робот )
Программисты ленивый народ - однажды сказал мне коллега на работе, и я с ним полностью согласен.

Не отвлекаюсь... После получения живого голоса и динамического уничтожения шума на спектрограмме видны группы звуков, даже если произнести очень тихо или шепотом(!!!). Шум режется предельно просто, среднее значение цвета пикселей по всей длине вычитается из каждого в этой строке. В итоге остаются маленькие шумовые точки, а те "массы", которые даже не всегда видно на спектрограмме очень сильно выделяются.
Делим на группы и отправляем искать совпадения. Тут идеально использовать map reduse...

В общем, в понедельник ставлю ноут "учить" группы звуков и пишу шустренький скрипт для поиска.
О результатах как всегда - отпишусь...
Лень — двигатель прогресса...

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 20 июл 2013, 11:06

ArtSamovar, интересные результаты. Будем и дальше внимательно следить. Если все у вас получится, думаю, было бы неплохо получить пошаговую инструкцию, а также, может быть, выложить куда-нибудь готовую базу.

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

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

Сообщение Андрей » 20 июл 2013, 13:03

ArtSamovar, Молодец!!! Продолжайте Ваши поиски! Результаты несомненно интересные.

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

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

Сообщение Андрей » 20 июл 2013, 14:24

ArtSamovar писал(а): RHVoice - основан на фестивале, есть мужской и женский. Говорит даже получше...
Пытаюсь его поставить уже пару часов...

RHVoice -l
ERROR: ld.so: object '//build/linux2/lib/libRHVoice.so' from LD_PRELOAD cannot be preloaded: ignored.

Если можно, киньте ссылку, на правильную пошаговую установку RHVoice...

P/S Olga-Yakovleva-RHVoice-302e762 пакет скачал.
все вроде сделал. Но не может найти библиотеку...

arbuzmaster
Сообщения: 254
Зарегистрирован: 15 июл 2013, 23:43
Откуда: Астрахань

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

Сообщение arbuzmaster » 21 июл 2013, 16:22

Добрый день! Подскажите пожалуйста почему у меня не работает часть скрипта та что после
// Ищем в ответе Google наши команды.
// Если находим, выполняем заранее запрограммированное действие. В данном случае, вывод на экран
Хотя в $result содержится результат написанного выше скрипта а в $voice_cmd само слово. В чем может быть проблема ? Ошибок не выводит.Windows 7 php 5.3.27 apache 2.2.25

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

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

Сообщение ArtSamovar » 21 июл 2013, 18:59

Андрей писал(а): Если можно, киньте ссылку, на правильную пошаговую установку RHVoice...
https://github.com/Olga-Yakovleva/RHVoi ... master.zip
Вот пакетик с гитхаба... В файле INSTALL написано:
* A C/C++ compiler
* SCons build system (http://www.scons.org/)
* Python (http://www.python.org/)
* Flite 1.4 or later
* GNU libunistring 0.9.3 or later
* expat
* pcre
* libsox
..................



ld.so - ищет и загружает динамические библиотеки...
Судя по всему, проблема с компиляцией

gсс
scons
flite, flite-dev
libunistring-dev
Нужны пакеты разработчиков, обратите на это внимание

В любом случае, зайдя в папку RHVoice, после распоковки, запустите scons
И читайте его вывод, там он всё напишет, что вам не хватает.
затем scons install... Всё )
Проверить просто... echo "Я заговорил" | RHVoice - |play -
Лень — двигатель прогресса...

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

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

Сообщение ArtSamovar » 21 июл 2013, 19:06

arbuzmaster писал(а):Добрый день! Подскажите пожалуйста почему у меня не работает часть скрипта та что после
// Ищем в ответе Google наши команды.
// Если находим, выполняем заранее запрограммированное действие. В данном случае, вывод на экран
Хотя в $result содержится результат написанного выше скрипта а в $voice_cmd само слово. В чем может быть проблема ? Ошибок не выводит.Windows 7 php 5.3.27 apache 2.2.25
А что вы произносите? "Включить свет", или "включить"?

Тот массив, где написано array("включ", "свет") - это содержание фразы в целом, он не будет ничего выводить если не найдены оба кусочка.

Замените array("включ", "свет"), на array("свет"), попробуйте сказать "свет", должен вывести...
Лень — двигатель прогресса...

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

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

Сообщение ArtSamovar » 21 июл 2013, 19:14

Andrey_B писал(а):...было бы неплохо получить пошаговую инструкцию, а также, может быть, выложить куда-нибудь готовую базу.
Не может быть, а выложу ))

Не стал ждать понедельника, запустил вчера утром, посчиталась за 6 часов примерно. К трём после полудня закончил :D )
Отсортирую и выложу тогда полностью отсортированные группы звуков и выложу не обрезанные (но их я думаю он будет считать еще больше), в любом случае, несколько вариантов базы выложу.
С пошаговой инструкцией немного повременю, так как нужно еще "поиск" сделать, да и работа с человеческим голосом будет отличаться, от обучения по книжкам.

Поиграться бы с ядрами, "распараллелить" бы всё это обучение... Но пока руки не доходят :)
Лень — двигатель прогресса...

arbuzmaster
Сообщения: 254
Зарегистрирован: 15 июл 2013, 23:43
Откуда: Астрахань

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

Сообщение arbuzmaster » 21 июл 2013, 21:23

ArtSamovar писал(а):
arbuzmaster писал(а):Добрый день! Подскажите пожалуйста почему у меня не работает часть скрипта та что после
// Ищем в ответе Google наши команды.
// Если находим, выполняем заранее запрограммированное действие. В данном случае, вывод на экран
Хотя в $result содержится результат написанного выше скрипта а в $voice_cmd само слово. В чем может быть проблема ? Ошибок не выводит.Windows 7 php 5.3.27 apache 2.2.25
А что вы произносите? "Включить свет", или "включить"?

Тот массив, где написано array("включ", "свет") - это содержание фразы в целом, он не будет ничего выводить если не найдены оба кусочка.

Замените array("включ", "свет"), на array("свет"), попробуйте сказать "свет", должен вывести...

Попробовал и так и по другому и другую фразу эффекта ноль. не пойму в чём беда? Может в этом при запуске php.exe выдает derective register_long_arrays is deprecated in php 5.3 and greater in unknown on line 0

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

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

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

ArtSamovar, RHVoice по Вашей ссылке поставил. Спасибо. Вроде поставился, по крайней мере help выводит
При попытке:
Проверить просто... echo "Я заговорил" | RHVoice - |play -
из командной строки терминала выдает-
echo "Я заговорил" | RHVoice - |play -

play FAIL formats: can't open input `-': WAVE: RIFF header not found

Т.е. как бы он поставился... Но говорить отказывается...

Скачал базу Елена... но как и куда ее засунуть не знаю...
Подскажете?

В Нете о RHVoice только восторженные отзывы, не больше. И скромные (оч. скромные) рекомендации, в коих я так и не нашел ответа...

С фестивалем то же не хай фай. Минуту думает после запуска из PHP и ... накладывает две голосовые команды друг на друга...

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

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

Сообщение ArtSamovar » 21 июл 2013, 22:36

Андрей писал(а): play FAIL formats: can't open input `-': WAVE: RIFF header not found
Вам же сам sox пишет, что заголовок, описывающий формат не найден, используйте ключ -t чтобы явно указать его.

Советую посмотреть список библиотек
apt-cache search libsox

А затем махнув рукой, и произнеся заветную фразу "К чёрту!" установить всё...
apt-get install libsox-*

или урезаное "всё"
apt-get install libsox-fmt-all


Удачи )))

Кстати, что за система у Вас?



UPD:
echo "Вавки есть" | RHVoice > file.wav
echo "Огэгэшки тоже" | RHVoice > file.ogg
echo "И даже флац" | RHVoice > file.flac
echo "А это нам не надо..." | RHVoice > file.mp3
Лень — двигатель прогресса...

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

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

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

ArtSamovar писал(а):Кстати, что за система у Вас?
DEBIAN

arbuzmaster
Сообщения: 254
Зарегистрирован: 15 июл 2013, 23:43
Откуда: Астрахань

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

Сообщение arbuzmaster » 21 июл 2013, 23:28

arbuzmaster писал(а):
ArtSamovar писал(а):
arbuzmaster писал(а):Добрый день! Подскажите пожалуйста почему у меня не работает часть скрипта та что после
// Ищем в ответе Google наши команды.
// Если находим, выполняем заранее запрограммированное действие. В данном случае, вывод на экран
Хотя в $result содержится результат написанного выше скрипта а в $voice_cmd само слово. В чем может быть проблема ? Ошибок не выводит.Windows 7 php 5.3.27 apache 2.2.25
А что вы произносите? "Включить свет", или "включить"?

Тот массив, где написано array("включ", "свет") - это содержание фразы в целом, он не будет ничего выводить если не найдены оба кусочка.

Замените array("включ", "свет"), на array("свет"), попробуйте сказать "свет", должен вывести...

Попробовал и так и по другому и другую фразу эффекта ноль. не пойму в чём беда? Может в этом при запуске php.exe выдает derective register_long_arrays is deprecated in php 5.3 and greater in unknown on line 0
echo $cmd_matrix[0][0] $cmd_matrix[1][0]выдает array а $cmd_matrix[1][1] $cmd_matrix[0][1]switch off switch on соответственно

Ответить