Orange Pi Zero в качестве терминала?
Модератор: immortal
Re: Orange Pi Zero в качестве терминала?
Попробовал на WIN7, не хочет коннектиться, выдает ошибку:
Warning: fsockopen(): in C:\_majordomo\htdocs\lib\squeezephpapi\class.SqueezeConnection.php on line 222
192.168.0.5 - как я понимаю, это IP терминала со сквизом?
9090 - это порт, он фиксированый или меняется?
Warning: fsockopen(): in C:\_majordomo\htdocs\lib\squeezephpapi\class.SqueezeConnection.php on line 222
192.168.0.5 - как я понимаю, это IP терминала со сквизом?
9090 - это порт, он фиксированый или меняется?
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Orange Pi Zero в качестве терминала?
Добавлю для "потомков"... Обсуждали на канале в Телеграме.
Как воспроизвести голос Алисы на терминале.
...Из своего скрипта мы заставляем заговорить Алису и тем самым закешировать необходимый нам файл. Например:
В переменной $weather хранится информация о погоде в текстовом виде. Этот текст можно получить как угодно, например из какого либо погодного модуля.
Система проговаривает эту инфу на сервере и тем самым кеширует аудио файл в папку cms/cached/voice/. Теперь для того чтобы узнать имя файла, нам достаточно выполнить функцию:
То есть в переменной $md5hash будет хранится md5 хеш нашего текста о погоде.
Теперь для того чтобы сформировать ссылку на mp3 файл достаточно такой строки:
Прошу заметить что у меня Яндекс TTS, потому в конце "_yandex.mp3". Как там для других TTS, смотрите у себя в папке cms/cached/voice/.
Теперь имея ссылку на файл с нашим продиктованым текстом, мы можем эту ссылку отправить на проигрование на нужном нам терминале. Например так:
В переменной $terminal хранится имя терминала на котором необходимо воспроизвести файл. Можно задать ранее, можно передавать в скрипт как параметр, можно просто вместо имени переменной вручную вписать имя терминала или задать переменную перед запросом:
$terminal = "phone";
Так же для того чтобы сократить код вызова URL, то есть код отправки команды на проигрывание, можно вызвать ссылку кодом:
То есть конечный вид сценария будет иметь вид:
Ссылка на заметку в блоге: Проговаривание сообщений Алисы на терминалах(MPD, VLC, etc.)
Как воспроизвести голос Алисы на терминале.
...Из своего скрипта мы заставляем заговорить Алису и тем самым закешировать необходимый нам файл. Например:
Код: Выделить всё
$weather = "Погода такая погодная. Всё будет супер и солнечно.";
say($weather,1);Система проговаривает эту инфу на сервере и тем самым кеширует аудио файл в папку cms/cached/voice/. Теперь для того чтобы узнать имя файла, нам достаточно выполнить функцию:
Код: Выделить всё
$md5hash = md5($weather);Теперь для того чтобы сформировать ссылку на mp3 файл достаточно такой строки:
Код: Выделить всё
$link_on_mp3_file = "http://domain.com/cms/cached/voice/".$md5hash."_yandex.mp3";Теперь имея ссылку на файл с нашим продиктованым текстом, мы можем эту ссылку отправить на проигрование на нужном нам терминале. Например так:
Код: Выделить всё
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$url = "http://domain.com/popup/app_player.html?ajax=1&play_terminal=$terminal&command=refresh&play=".urlencode($link_on_mp3_file);
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
curl_close($ch);$terminal = "phone";
Так же для того чтобы сократить код вызова URL, то есть код отправки команды на проигрывание, можно вызвать ссылку кодом:
Код: Выделить всё
getURLBackground($url);Код: Выделить всё
$weather = "Погода такая погодная.";
say($weather,1);
$md5hash = md5($weather);
$link_on_mp3_file = "http://domain.com/cms/cached/voice/".$md5hash."_yandex.mp3";
$terminal = "phone";
$url = "http://domain.com/popup/app_player.html?ajax=1&play_terminal=$terminal&command=refresh&play=".urlencode($link_on_mp3_file);
getURLBackground($url);
Всё работает. Проверил только что.
При этом работает на:
1. MPD на OPi Zero.
2. Majordorid.
3. MPD на Android.
Последний раз редактировалось savenko_egor Ср дек 20, 2017 10:54 pm, всего редактировалось 4 раза.
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: Orange Pi Zero в качестве терминала?
А штатный getURL() не работает? (вместо curl)
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Orange Pi Zero в качестве терминала?
Не пробовал. Но думаю будет работать.skysilver писал(а):А штатный getURL() не работает? (вместо curl)
UPD:
Проверил. Работает. Обновил пост.
Re: Orange Pi Zero в качестве терминала?
Я так понимаю, этот вариант на сегодня уже не работает? Как тогда заставить говорить и петь в терминал? 3 дня поисков не дал рабочего варианта.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Orange Pi Zero в качестве терминала?
Плохо ищите. Парни давно сделали модуль mdmpiterminal. https://github.com/devoff/mdmPiTerminal/lihodeev писал(а):Я так понимаю, этот вариант на сегодня уже не работает? Как тогда заставить говорить и петь в терминал? 3 дня поисков не дал рабочего варианта.
Re: Orange Pi Zero в качестве терминала?
именно это и не работает. Ответа голосом от алисы на терминал добиться не смог(только на сервере), петь тоже не хочет. Управление голосом девайсами - работает.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Контактная информация:
Re: Orange Pi Zero в качестве терминала?
Ну так задавайте вопросы. Или пишите в Телегу: https://t.me/mdmPiTerminallihodeev писал(а): Чт сен 06, 2018 2:06 pm именно это и не работает. Ответа голосом от алисы на терминал добиться не смог(только на сервере), петь тоже не хочет. Управление голосом девайсами - работает.
Re: Orange Pi Zero в качестве терминала?
я даже не знаю как задать.. попробую - Алиса живет в малине есть два терминала на апельсине и на WIN7. Говорю в терминал - давай включим getURL('http://localhost/popup/app_101ru.html?a ... tion&id=88', 0); алиса отвечает на сервере ОК и так же послушно выполняет команду НО на сервере. как будто не понимает что мне надо в терминал или просто издевается.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Re: Orange Pi Zero в качестве терминала?
Конечно не понимает. Терминал он для общения - ввод/вывод звука. Всякие команды выполняются на сервере. Отправить файл на проигрывание на терминале можно командой playMedia($path, $host ), вроде бы текущая версия mdmPiTerminal позволяет это сделать. Файл должен быть виден на терминалеlihodeev писал(а): Чт сен 06, 2018 2:20 pm я даже не знаю как задать.. попробую - Алиса живет в малине есть два терминала на апельсине и на WIN7. Говорю в терминал - давай включим getURL('http://localhost/popup/app_101ru.html?a ... tion&id=88', 0); алиса отвечает на сервере ОК и так же послушно выполняет команду НО на сервере. как будто не понимает что мне надо в терминал или просто издевается.