Страница 6 из 9

Re: Orange Pi Zero в качестве терминала?

Добавлено: Пт янв 27, 2017 12:06 pm
chief
Попробовал на WIN7, не хочет коннектиться, выдает ошибку:
Warning: fsockopen(): in C:\_majordomo\htdocs\lib\squeezephpapi\class.SqueezeConnection.php on line 222

192.168.0.5 - как я понимаю, это IP терминала со сквизом?
9090 - это порт, он фиксированый или меняется?

Re: Orange Pi Zero в качестве терминала?

Добавлено: Вт дек 19, 2017 11:31 pm
savenko_egor
Добавлю для "потомков"... Обсуждали на канале в Телеграме.

Как воспроизвести голос Алисы на терминале.

...Из своего скрипта мы заставляем заговорить Алису и тем самым закешировать необходимый нам файл. Например:

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

$weather = "Погода такая погодная. Всё будет супер и солнечно.";
say($weather,1);
В переменной $weather хранится информация о погоде в текстовом виде. Этот текст можно получить как угодно, например из какого либо погодного модуля.
Система проговаривает эту инфу на сервере и тем самым кеширует аудио файл в папку cms/cached/voice/. Теперь для того чтобы узнать имя файла, нам достаточно выполнить функцию:

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

$md5hash = md5($weather);
То есть в переменной $md5hash будет хранится md5 хеш нашего текста о погоде.
Теперь для того чтобы сформировать ссылку на mp3 файл достаточно такой строки:

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

$link_on_mp3_file = "http://domain.com/cms/cached/voice/".$md5hash."_yandex.mp3";
Прошу заметить что у меня Яндекс TTS, потому в конце "_yandex.mp3". Как там для других TTS, смотрите у себя в папке cms/cached/voice/.
Теперь имея ссылку на файл с нашим продиктованым текстом, мы можем эту ссылку отправить на проигрование на нужном нам терминале. Например так:

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

$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 хранится имя терминала на котором необходимо воспроизвести файл. Можно задать ранее, можно передавать в скрипт как параметр, можно просто вместо имени переменной вручную вписать имя терминала или задать переменную перед запросом:
$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);
Ссылка на заметку в блоге: Проговаривание сообщений Алисы на терминалах(MPD, VLC, etc.)
Всё работает. Проверил только что.
При этом работает на:
1. MPD на OPi Zero.
2. Majordorid.
3. MPD на Android.

Re: Orange Pi Zero в качестве терминала?

Добавлено: Ср дек 20, 2017 10:31 am
skysilver
А штатный getURL() не работает? (вместо curl)

Re: Orange Pi Zero в качестве терминала?

Добавлено: Ср дек 20, 2017 10:48 am
savenko_egor
skysilver писал(а):А штатный getURL() не работает? (вместо curl)
Не пробовал. Но думаю будет работать.

UPD:
Проверил. Работает. Обновил пост.

Re: Orange Pi Zero в качестве терминала?

Добавлено: Чт сен 06, 2018 1:44 pm
lihodeev
Я так понимаю, этот вариант на сегодня уже не работает? Как тогда заставить говорить и петь в терминал? 3 дня поисков не дал рабочего варианта.

Re: Orange Pi Zero в качестве терминала?

Добавлено: Чт сен 06, 2018 2:01 pm
savenko_egor
lihodeev писал(а):Я так понимаю, этот вариант на сегодня уже не работает? Как тогда заставить говорить и петь в терминал? 3 дня поисков не дал рабочего варианта.
Плохо ищите. Парни давно сделали модуль mdmpiterminal. https://github.com/devoff/mdmPiTerminal/

Re: Orange Pi Zero в качестве терминала?

Добавлено: Чт сен 06, 2018 2:06 pm
lihodeev
именно это и не работает. Ответа голосом от алисы на терминал добиться не смог(только на сервере), петь тоже не хочет. Управление голосом девайсами - работает.

Re: Orange Pi Zero в качестве терминала?

Добавлено: Чт сен 06, 2018 2:12 pm
savenko_egor
lihodeev писал(а):
Чт сен 06, 2018 2:06 pm
именно это и не работает. Ответа голосом от алисы на терминал добиться не смог(только на сервере), петь тоже не хочет. Управление голосом девайсами - работает.
Ну так задавайте вопросы. Или пишите в Телегу: https://t.me/mdmPiTerminal

Re: Orange Pi Zero в качестве терминала?

Добавлено: Чт сен 06, 2018 2:20 pm
lihodeev
я даже не знаю как задать.. попробую - Алиса живет в малине есть два терминала на апельсине и на WIN7. Говорю в терминал - давай включим getURL('http://localhost/popup/app_101ru.html?a ... tion&id=88', 0); алиса отвечает на сервере ОК и так же послушно выполняет команду НО на сервере. как будто не понимает что мне надо в терминал или просто издевается.

Re: Orange Pi Zero в качестве терминала?

Добавлено: Чт сен 06, 2018 3:09 pm
fandaymon
lihodeev писал(а):
Чт сен 06, 2018 2:20 pm
я даже не знаю как задать.. попробую - Алиса живет в малине есть два терминала на апельсине и на WIN7. Говорю в терминал - давай включим getURL('http://localhost/popup/app_101ru.html?a ... tion&id=88', 0); алиса отвечает на сервере ОК и так же послушно выполняет команду НО на сервере. как будто не понимает что мне надо в терминал или просто издевается.
Конечно не понимает. Терминал он для общения - ввод/вывод звука. Всякие команды выполняются на сервере. Отправить файл на проигрывание на терминале можно командой playMedia($path, $host ), вроде бы текущая версия mdmPiTerminal позволяет это сделать. Файл должен быть виден на терминале