[Приложение] Sound Direct Manager

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: [Приложение] Sound Direct Manager

Сообщение Bagir » Вт май 26, 2020 12:28 pm

Всем привет! Тему немного подутопил, каюсь и извиняюсь. Но сам продолжаю пользоваться своим костылем. Планирую вернуться в тему. За всё это время дописал несколько разных моментов, как в php код, так и в код SDM. Скоро выложу "на попробовать". У самого сейчас работают две копии. Одна на сервере с Алисой, вторая на ноутбуке, который часто гостит в бане.
Научил Алису гнать самогон ))) Так что очень понадобились голосовые сообщения на ноуте, который под Win7. Пока что всё радует. Только нужно дописать настройку в модуле SDM, что терминал может быть не постоянным. Ноут периодически выключен, и это записывает ошибку о недоступности копии SDM. Скоро сделаю это и выложу.
Ещё будет пример использования звуковых медиа файлов. Радио и плейлисты я у себя пока не использую, хотя в душе бы не отказался. Руки не доходят. А вот при тревожных событиях, таких как протечка, дым, охрана и т.п., звучат разные фоновые треки.
И как всегда, главной идеей SDM остается построение очереди сообщений. Причем как общих, так и отправленных на конкретный канал звуковой карты, чтобы не создавать хаос в динамиках.
В принципе, это всё можно было бы реализовать и в Алисе, и в данный момент я мог бы попытаться это сделать. Но опасаюсь не состыковки с идеей Сергея и его штатными функциями. Поэтому пока что очередью сообщений у меня будет командовать SDM, а Алиса не заботясь об этом, просто отправляет сообщения когда захочет и куда захочет.
Вопрос по поводу порта SDM под Linux. К сожалению вообще не знаком с Linux. SDM изначально exe приложение под винду. Но по идее ничто не мешает держать сервер Алисы на Linux, А SDM крутить на компе или ноутбуке под Win. отправка сообщений в SDM сейчас реализована двумя способами. Через командную строку SDM, или по средствам GET запроса. То есть передать сообщение можно просто из строки браузера. Это способ сейчас используется в модуле SDM, и вероятно нет никакой разницы под какой ОС работает сервер Алисы. Но сама программа SDM только для Win.
Для планшетов, как я в курсе, есть приложение МД Дроид. По идее, тут не будет конфликта. SDM просто подписывается на события say и sayTo, и смотрит параметр Destination, если сообщение адресовано конкретной комнате. Так что все устройства на андроид и Win должны работать нормально, озвучивая общие сообщения, и выбирая свои, адресованные в комнату.
За это сообщение автора Bagir поблагодарил:
Amarok (Вт май 26, 2020 12:53 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Kvantos
Сообщения: 295
Зарегистрирован: Вт окт 31, 2017 1:05 pm
Благодарил (а): 26 раз
Поблагодарили: 49 раз

Re: [Приложение] Sound Direct Manager

Сообщение Kvantos » Вт май 26, 2020 1:13 pm

Bagir писал(а):
Вт май 26, 2020 12:28 pm
И как всегда, главной идеей SDM остается построение очереди сообщений. Причем как общих, так и отправленных на конкретный канал звуковой карты, чтобы не создавать хаос в динамиках.
В принципе, это всё можно было бы реализовать и в Алисе, и в данный момент я мог бы попытаться это сделать. Но опасаюсь не состыковки с идеей Сергея и его штатными функциями. Поэтому пока что очередью сообщений у меня будет командовать SDM, а Алиса не заботясь об этом, просто отправляет сообщения когда захочет и куда захочет.
может вам скооперироваться с tarasfrompir, у него в модуле terminal2 viewtopic.php?f=5&t=6446 уже реализованы очереди сообщений и есть тип терминала (звуковая карта), но нет вывода на разные ее каналы
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Приложение] Sound Direct Manager

Сообщение tarasfrompir » Вт май 26, 2020 1:17 pm

Можешь написать прогу проигрывающую в разные звуковухи звук и с регулировкой громкости по каждой карте звкувой...
Ато в терминалах 2 для винды я реализовал - подобное но не все мне нравится
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: [Приложение] Sound Direct Manager

Сообщение Bagir » Вт май 26, 2020 7:05 pm

tarasfrompir писал(а):
Вт май 26, 2020 1:17 pm
Можешь написать прогу проигрывающую в разные звуковухи звук и с регулировкой громкости по каждой карте звкувой...
SDM изначально планировался для работы с несколькими звуковыми картами. Просто я эту идею не продвинул т.к. нашел способ играть на любом канале что угодно как раз с разной громкостью. В модуле для SDM есть указание DEVICE. это номер звуковой карты. Сделал на будущее.
Разные звуковухи SDM приравнивает к разным каналам звуковой карты. Общие сообщения без указания номера и канала карты звучат на всех устройствах одновременно в порядке очереди. Личные сообщения тоже выстраиваются в ту же очередь, но будут звучать на каналах вместе, на каждом своё. Единственный момент, это когда в очереди есть и общие и личные сообщения. Тогда общие сообщения будут ждать своей очереди, пока на всех каналах не закончатся личные сообщения. Это сделано, чтобы общее сообщение звучало на всех каналах синхронно чтобы динамики в соседних комнатах не создавали эхо.
Так что очень постараюсь допилить эту возможность в ближайшую неделю. У меня в сервере как раз есть две звуковые карты. В принципе тогда SDM подойдет, а управление (отправку задач в SDM) уже добавишь в свой модуль. Там всё очень просто.
Для регулировки громкости сообщения можно добавить параметр volumemessage. Попробовать можно в окне программы. В поле "Новая задача".
-volumemessage:40 Громкость этого сообщения уменьшена
Или сразу через строку браузера.
Ещё один момент. Общие сообщения на разных звуковых картах создадут небольшое эхо в любом случае. Их никак не синхронизировать. Но для твоей задачи, полагаю это не так важно, если речь идет об отправке только личных сообщений на разные звуковухи.

На данный момент можно попробовать просто запустить две версии SDM, настроив каждую слушать свой порт. Параметр в ini файле [ListenTCP] LocalPort=8090. А вот чтобы запустить несколько копий SDM на одном компе, нужно отключить передачу сообщения от последующих копий SDM в первую. Параметр в ini файле [SendMessage] Run=0. Этот способ передачи задач через командную строку использовался в самом начале написания SDM. Сейчас удобнее пользоваться GET запросами. Так что в варианте с SendMessage более нет нужды.
Ну а вскоре я допилю работу из одной копии с несколькими картами. В твоем коде модуля просто поменяешь порт на одинаковый.
Распознавание голоса тоже можно отключить в ini, если не нужно. При этом инициализация микрофона не проводится, и этот код в программе вообще не работает. Так что к лишним багам и нагрузке на проц не приведет.
Модуль terminal2 обязательно посмотрю! Очень интересно что там такое. Сегодня почитаю.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Приложение] Sound Direct Manager

Сообщение tarasfrompir » Вт май 26, 2020 7:13 pm

так меня интересует
1 - получение списка аудиоустройств на сервере
2. Регулирование уровня громкости по устройствам
3. очередь распознавние и все остальное пофиг (распознавание потом)
4. возможность проигрывания, файлов, поток и всего что может звчать
5. возможность получить состяние проигрываемого -
кратко все
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: [Приложение] Sound Direct Manager

Сообщение Bagir » Вт май 26, 2020 10:16 pm

1. тут всё просто. SDM умеет и получает список, заполняя поле для выбора устройства вывода. Алисе это никак не передается. Но можно легко добавить запрос к SDM, в ответе которого будет список устройств. Записал в задачник.
2. Это уже есть. Алиса будет помнить уровень громкости для нужного направления, и просто добавлять к началу сообщения параметр volumemessage при передаче его в SDM. По такой схеме я уменьшаю громкость ночных сообщений. Работает не один год безотказно.
3. Очередь не пофиг. Что будет если Алиса отправит сразу две команды из say или playsound? Как вариант, без дополнительной обработки читаемый текст надожится на звук динг-донг. Очередь нужна, хотябы локальная для выбранного направления. В SDM это есть.
4. На данный момент в очередь ставятся текст и короткие звуковые файлы. Есть возможность проигрывать медиафайлы. С mp3 проблем нет.
5. Тут суть такая, отправляем задачу играть mp3 файл. Воспроизведение начнется немедленно. SDM в ответ пришлет хендл этой задачи. Когда mp3 файл закончится, SDM пришлет событие завершения проигрывания. В ответ можно отправить новый файл для проигрывания. Примеры с подробностями выложу на первой странице. Там уже что то есть по этому поводу. На счет потока, можно, но пока не изучал.

Завтра выложу обновление с временными терминалами, такими как ноутбук например. Сейчас этот момент для меня очень актуален т.к. добавил новое направление. Его SDM стоит на ноутбуке, а он периодически выключен. Алиса регистрирует ошибки по этому поводу.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Приложение] Sound Direct Manager

Сообщение tarasfrompir » Ср май 27, 2020 12:12 am

Bagir писал(а):
Вт май 26, 2020 10:16 pm
1. тут всё просто. SDM умеет и получает список, заполняя поле для выбора устройства вывода. Алисе это никак не передается. Но можно легко добавить запрос к SDM, в ответе которого будет список устройств. Записал в задачник.
2. Это уже есть. Алиса будет помнить уровень громкости для нужного направления, и просто добавлять к началу сообщения параметр volumemessage при передаче его в SDM. По такой схеме я уменьшаю громкость ночных сообщений. Работает не один год безотказно.
3. Очередь не пофиг. Что будет если Алиса отправит сразу две команды из say или playsound? Как вариант, без дополнительной обработки читаемый текст надожится на звук динг-донг. Очередь нужна, хотябы локальная для выбранного направления. В SDM это есть.
4. На данный момент в очередь ставятся текст и короткие звуковые файлы. Есть возможность проигрывать медиафайлы. С mp3 проблем нет.
5. Тут суть такая, отправляем задачу играть mp3 файл. Воспроизведение начнется немедленно. SDM в ответ пришлет хендл этой задачи. Когда mp3 файл закончится, SDM пришлет событие завершения проигрывания. В ответ можно отправить новый файл для проигрывания. Примеры с подробностями выложу на первой странице. Там уже что то есть по этому поводу. На счет потока, можно, но пока не изучал.

Завтра выложу обновление с временными терминалами, такими как ноутбук например. Сейчас этот момент для меня очень актуален т.к. добавил новое направление. Его SDM стоит на ноутбуке, а он периодически выключен. Алиса регистрирует ошибки по этому поводу.
По поводу очереди терминалы2 далеко ушли по этому поводу
по поводу - списка устройств - очень надо
по поводу вообще - нужен простой плеер - который может отдать - список аудиоустройств, отдать свое состояние по названию аудиоустройства - а именно уровень громкости, что сейчас воспроизводит - и какая позиция воспроизводимого...
Должен уметь воспроизводить потоки внешние внутренние и пофиг вообще - по идее быть всеядным
По поводу совместимости - все версии винды от хп до 10ки
Есть набросанный вариант - но на питоне писанный ис компилированый
Вложения
Безымянный.jpg
Безымянный.jpg (142.28 КБ) 2790 просмотров
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: [Приложение] Sound Direct Manager

Сообщение Bagir » Ср май 27, 2020 10:45 am

tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
По поводу очереди терминалы2 далеко ушли по этому поводу
терминалы2 используют разные каналы звуковой карты? например у меня 6-ти канальная карта. Хватает на весь дом. В комнатах по одному динамику, которые рассчитаны в основном на сообщения. Дискотеку с ними не устроить, маленькие, но музон для фончика можно. Реализовано приглушение музыки при чтении уведомлений. Вторая звуковуха 2-х канальная. К ней подключены уже серьезные колонки. Тут можно и музыку послушать. Но для каждой комнаты 2 канала это роскошь в моем случае, да и лично мне не нужно. Но так то SDM может брать 3 пары каналов L+R из 6-ти канальной карты и воспроизводить на них стерео.
Еще в широком доступе есть 8-ми канальные карты. И самое интересное 2+6. Это когда одна карта может быть видна как два разных устройства 2-х и 6-ти каналки. Такой вариант как раз у меня. Весьма удобно.
Ну а там, где хочется стерео, а проводов от сервера нет, можно просто поставить дополнительный сервер SDM и творить на нем что душе угодно. Так сделано у меня в бане. Вопросы эхо от разных SDM тут меня не волнуют, здания разные.
tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
по поводу - списка устройств - очень надо
Вчера допилил "временные терминалы", утром полет нормальный. Так что сегодня хотел выложить. Тогда добавлю ещё запрос на список устройств. Будет возвращать ID и Название устройства, такое как в винде видится.
tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
нужен простой плеер - отдать свое состояние по названию аудиоустройства - а именно уровень громкости, что сейчас воспроизводит - и какая позиция воспроизводимого...
Тут надо подумать. Во первых для чего именно этот плеер. Если для медиа, то да. А если для чтения текста и всяких там динг донг, то разумней было бы отправлять сообщение Алисе при завершении задачи. Например вида "устройство 2 канал 6 свободно". Просто иначе придется с дикой частотой опрашивать плеер вопросом "ты уже всё или ещё нет". Раз в секунду как минимум.
т.к. очередью сообщений у меня заведует SDM, подобные вопросы меня не интересовали. Но я могу добавить такой запрос, или сообщения о завершении задачи. А вот в медиа вопрос иначе. Тут мне действительно нужно было знать, когда SDM закончит проигрывание файла. При этом SDM отправляет Алисе сообщение. Ну а Алиса действует далее по своему усмотрению. Так же можно отправить команду изменить или остановить файл. Это уже реализовано. Использую в алгоритме безопасности для проигрывания тревожных треков на случай протечки дыма охраны и т.п.
tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
- а именно уровень громкости, что сейчас воспроизводит
Этого нет, и даже прикрутить не к чему. В моем варианте Алиса сама помнит с какой громкостью отправила трек для воспроизведения. Для подробностей мне надо будет гнялуть свой код. Использую это для отправки ночных сообшений. Алиса знает, что ночью надо установить низкий уровень громкости, и отправляет не критичные сообщения с этим параметром.
tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
- и какая позиция воспроизводимого...
Тоже пока нет, но в библиотеке видел примеры. Можно и дописать в будущем. Не думаю что будут серьезные трудности в этом.
tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
Должен уметь воспроизводить потоки внешние внутренние и пофиг вообще - по идее быть всеядным
Тут всё упирается в возможности библиотеки, в моем случае это bass.dll Но эта штука весьма въсеядная, к тому же наверняка с тех давних пор уже вышло куча новых обновлений. Будем смотреть. В любом случае поток уже был в библиотеке ещё тогда.
tarasfrompir писал(а):
Ср май 27, 2020 12:12 am
По поводу совместимости - все версии винды от хп до 10ки
Сейчас проверяли уже на всех. Работает без проблем. Но есть нюанс в различии поведения с каналами на XP и на остальных. На XP тут как раз всё проще. Делай чего захочешь. А вот дальше винда начала глубже запускать свои корни в драйвер звуковой карты, накладывая некоторые сложности, но беды нет.
И ещё после XP изменился способ работы с громкостью. Основная громкость осталась так же, но на XP был микшер для устройств, таких как wav, midi, line и т.д., а win7+ рулит громкостью приложений. Плюсом ко всему в библиотеке bass.dll есть свой уровень громкости, который я сейчас и использую. Работает на всех осях одинаково.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: [Приложение] Sound Direct Manager

Сообщение Bagir » Чт май 28, 2020 11:36 pm

Версия 2.9, но по логике должна быть 3.0
Перед установкой дочитать до конца!

Добавил временные маршруты. Суть в том, что терминалы (по сути компьютеры с Windows) могут быть иногда выключены. К примеру ноутбук в бане или гараже. Если в эти "комнаты" нет возможность протянуть провод с каналом от сервера со звуковой картой, то можно разместить там временный терминал, и в модуле SDM у Алисы, указать, что данный маршрут временный. При этом не будет записываться ошибка о недоступности SDM, и ожидание ответа по этому ip адресу будет уменьшено.

По просьбе tarasfrompir добавлен запрос -getlistoutputdevices на список устройств вывода звука. По сути добавлен механизм отправки ответов на подобные запросы. В будущем возможно будут ещё пожелания. Реализовать это теперь проще. Вот пример как спросить:

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

$url = 'http://10.10.3.2:8090/-getlistoutputdevices';
// Ждать ответа от sdm не больше 2 секунд
$ctx = stream_context_create(array('http'=>array('timeout'=>2) ) ); 
// Отправка принимающей программе (программе SDM)
$ans = trim( file_get_contents($url, 0, $ctx) );
echo $ans;
Я использую функцию file_get_contents т.к. тут легко можно указать период ожидания ответа. Чтобы при недоступности SDM не возникало тормозов. Для проверки можно просто написать в строке браузера

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

http://10.10.3.2:8090/-getlistoutputdevices
ip и порт поправьте на свой. В ответ получите что то вроде этого:
Realtek HD Audio output;Realtek HD Audio 2nd output
в компьютере, где запущен SDM, две звуковые карты. Имена карт такие же как в операционной системе. Порядковые номера тоже. Разделитель точка с запятой. Легко преобразуйте в не именованный массив. Я надеюсь, что ; не встречается в именах звуковых карт.

Теперь о том, как обновить на новую версию.
Скопируйте содержимое архивов в модули и шаблоны Алисы, и по месту расположения SDM. В этом архиве поменялся только sdm.exe Не потрите свой sdm.ini если в нем есть что ценное. id гугла для распознавания речи например !!!
В SQL базе Алисы, в таблице sdm, добавлена колонка TEMPORARY с типом tinyint(1). Можете добавить её сами через phpmyadmin. Значение у маршрута NULL или 0 соответствует постоянному. 1 - временному.
Можно просто переустановить модуль в админке на вкладке Модули, или удалить файл installed затем перезапустив циклы.
Тут всё как и с другими модулями системы. Учтите, что при переустановке модуля, потеряйте настройки, но таблица маршрутов должна сохраниться.

3.0 выложу уже с поддержкой сразу нескольких звуковых карт.
Вложения
SDM 2.9.ZIP
Программа
(301.06 КБ) 155 скачиваний
MD 2.9.zip
Модуль для Алисы
(9.58 КБ) 123 скачивания
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Приложение] Sound Direct Manager

Сообщение tarasfrompir » Пт май 29, 2020 7:26 am

хотел опробовать - но компонент MCINET.OCX или его зависимости - не зарегестрировані....
Спасибо нам ПОМОЖЕТ..!
Ответить