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

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

Модератор: immortal

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

Re: Sound Direct Manager

Сообщение Bagir » Вс апр 17, 2016 10:21 pm

Да, все верно! И еще в настройках самого пользователя можно указать Хост (адрес), тогда если у терминала статичный ip адрес в локальной сети (что не трудно добиться), то он сразу будет выбирать этого пользователя сам.
У меня в комнатах пользователи так и называются по имени комнаты. А мобильные устройства уже по имени их хозяев. Разным цветом выделяются комнаты и пользователи.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
redmax144
Сообщения: 44
Зарегистрирован: Чт янв 28, 2016 8:18 pm
Благодарил (а): 13 раз
Поблагодарили: 5 раз

Re: Sound Direct Manager

Сообщение redmax144 » Вт апр 26, 2016 2:42 pm

Снова здравствуйте.
Сразу к делу. Проверяю работу программы из разных терминалов. По вашему опыту создал один терминал и назвал его Living_room. Таким образом есть основной терминал в комнате и второй (якобы в другой комнате). Далее создал на чистой системе шаблон поведения как в первом посте, про включение света в подъезде.

Захожу с главного терминала (чей id равен 1, посмотрел в базе данных) пишу команду в браузере --> "Включи", приходит ответ "Что именно" с id равным 1, далее говорю "Свет", приходит ответ: "Где именно" тоже с id равным 1, говорю: "подъезд" и приходит ответ: "Включаю свет в подъезде". Всё прекрасно работает!

Теперь захожу во второй терминал (id равен 5) и тоже пишу из браузера "включи", приходит ответ "Что именно" с id равным 5, далее говорю "Свет", и приходит ответ: "неизвестная команда". То есть почему-то с id отличным от единицы не хочет Алиса проходить по шаблону.
Вот лог программы:
СпойлерПоказать
14:06:16 Неизвестная команда...
14:06:16 Can not open the incoming GET
14:06:11 Ответ: id=5 свет 47%
14:06:11 Расспознавание id=5
14:06:11 Конвертирую во flac id=5
14:06:07 Что именно включить?
14:06:07 Начало записи id=5
14:06:06 Incoming GET structure error. Len=28
14:06:02 Включаю свет у подъезда
14:06:02 Can not open the incoming GET
14:05:58 Ответ: id=1 подъезд 91%
14:05:57 Расспознавание id=1
14:05:57 Конвертирую во flac id=1
14:05:53 Где именно?
14:05:53 Начало записи id=1
14:05:49 Ответ: id=1 свет 35%
14:05:48 Расспознавание id=1
14:05:48 Конвертирую во flac id=1
14:05:45 Что именно включить?
14:05:44 Начало записи id=1
Вот лог в окне программы:
Безымянный.png
Безымянный.png (19.85 КБ) 9211 просмотров
На данный момент не смог понять, почему это происходит.


И ещё один момент, вы писали, что если прописать в пользователе хост, то SDM находясь по этому адресу будет сам выбирать id данного пользователя. Но этого не происходит. Нажимаю кнопку записи, говорю: "Включи", а ответ приходит всё равно с id равным 1. Но это как бы ладно, всё равно Алиса пока не может сама начинать диалог, создаю кнопку в меню со следующим кодом:

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

say('-recognizeid:5 Я слушаю Вас.'); 
SDM начинает распознавание с нужным id, всё вроде бы хорошо, произношу знакомое "включи" и в ответ приходит ответ "Что именно", но id уже равняется единице.. То есть где-то по пути пятёрка потерялась...
Не понимаю, это я что-то делаю не правильно, то ли это баг такой программы. Уже голову сломал с данной проблемой.
вот лог:

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

14:48:23 Дальнейших команд нет
14:48:04 Что именно включить?
14:48:04 Начало записи id=1
14:48:02 Ответ: id=5 включи 54%
14:48:01 Расспознавание id=5
14:48:01 Конвертирую во flac id=5
14:47:57 Я слушаю вас
14:47:57 Начало записи id=5
Кстати, я после переустановки Алисы заглянул в файл command.php и там уже sergejey вставил нужную строчку, так что изменять ничего не нужно...
И если можно, можете показать код вашего сценария SayHook, очень хочется посмотреть ваш вариант реализации отправки в разные комнаты. Спасибо!
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Ср апр 27, 2016 9:25 pm

Да, довольно странно почему не отрабатывает команду "Свет" со второго терминала. Я попробую смоделировать эту ситуацию у себя.

По поводу сообщений: Can not open the incoming GET и Incoming GET structure error. Len=28
Не обращайте на них внимание. Честно говоря я сам не понял что это. Как будто какой то мусор, приходящий на порт, который случает SDM.

Если прописать в пользователе хост, SDM это даже не узнает. Но терминал при загрузке странички сам будет выбирать пользователя, у которого этот хост прописал. И уже в шаблонах поведения, при активации продолжения беседы, можно отправить в SDM id пользователя. функция context_getuser() возвращает id текущего пользователя терминала. Нужно проверить её работу. Например в какой нибудь шаблон повесить say(context_getuser()); и посмотреть что скажет при срабатывании на разных терминалах.

Да, sergejey хотел добавить эту строчку в command.php Буду знать, что она уже там есть. Пока что передача id пользователя в command.php нужно только для SDM, но можно придумать как это использовать и в своих задачах. Например я могу прямо из строки браузера (или иной программы) отправить текст в чат от имени нужного мне терминала.

SayHook будет скоро переписал. sergejey планирует переделать функцию say(); и добавить туда параметр выбора канала. Сейчас мы используем штатный параметр level. Но он уже перегружен разными вариантами, что немного неудобно. Хотелось бы конечно отделить от параметра важности сообщения, параметр, указывающий куда отправить сообщение. А то сейчас для него запланировано только 9 мест Но если в сервере стоит восьми канальная карта, а например, в гараже комп с двухканальной, то это уже 10. И это перебор. Для себя я бы предпочёл вариант двухзначного числа. Первая цифра это номер устройства, а вторая номер канала на этом устройстве. Но тут как говориться на вкус и цвет ... Можно даже задумать текстовые указатели. Например 'кухня'. А SayHook уже будет знать, что 'кухня' это, например, второе устройство первый канал. Я постараюсь завтра выложить простой пример как это сделать уже сейчас.
За это сообщение автора Bagir поблагодарил:
redmax144 (Ср апр 27, 2016 10:02 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
smoker_vvo
Сообщения: 113
Зарегистрирован: Пт дек 14, 2012 3:46 am
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Sound Direct Manager

Сообщение smoker_vvo » Ср апр 27, 2016 11:21 pm

Bagir, вопрос. По какой причине МДМ при выводе звука через СДМ может читать рэп.... Выглядит это так - произносит фразу и начинает на каком то слове заикаться, повторяет раз по 5 одно и то же..... Это возникает произвольно и сохранить звуковой файл не получается...... Типа " сегодня четверг четверг четверг четверг четверг 28 апреля......."
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Вт май 03, 2016 11:03 pm

smoker_vvo это уже что то новенькое :shock: Никогда с таким не сталкивался. Общий алгоритм такой: Стримим текст в wav файл а потом его проигрываем в порядке очереди.
А в очереди сообщений всё нормально? Там нет повторений слов?
Ещё можно послушать stream0.wav файлы. цифра это номер канала. В файле сохраняется последнее сообщение. Можно попробовать изменить путь для хранения этих временных файлов. Параметр streamPath="d:\temp" в ini файле.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Вт май 03, 2016 11:20 pm

Долго пытался разобраться, почему же на WinXP общие сообщения звучат во всех каналах, а на Win7 только во фронтальных. Ну и если честно, то так ничего путного пока что не нарыл. Но такое наблюдается не только у меня. Многие плееры ведут себя именно так. И особенно те, которые используют библиотеку Bass.

Единственное что получилось накопать, это другой вариант инициализации звуковой карты.
BASS_DEVICE_SPEAKERS замечательно подходит для Windows XP. Общие сообщения (без указания номера канала) звучат одновременно во всех.
BASS_DEVICE_3D вариант для Windows 7. Иначе общие сообщения будут звучать только в двух фронтальных колонках. Но при этом прога отказывается читать некоторые wav файлы. Например стандартный notify.wav из папки Windows.

Так что пока предлагаю вариант "на поиграться" и жду отзывов.
в ini файл надо добавить параметр initMethod=1 в группу [OutputDevise]
его значения 1 - BASS_DEVICE_SPEAKERS; 2 - BASS_DEVICE_3D
ini файл я прилагаю для примера. Но если замените на мой, то у вас съедут номера звуковых карт, движков и прочие настройки. Проще добавить этот параметр самому. Ну а в моём файле просто посмотреть куда именно его добавлять.

Файл SDM.exe заменить на тот что в архиве в этом сообщении.

Удачных опытов. Жду ответов.
Вложения
SDM.ZIP
ver 1.52 beta
(127.62 КБ) 162 скачивания
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
redmax144
Сообщения: 44
Зарегистрирован: Чт янв 28, 2016 8:18 pm
Благодарил (а): 13 раз
Поблагодарили: 5 раз

Re: Sound Direct Manager

Сообщение redmax144 » Ср май 04, 2016 12:07 am

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

Re: Sound Direct Manager

Сообщение Bagir » Ср май 04, 2016 4:03 pm

Начиная с Windows 7, если у вас многоказальная звуковая карта, чтобы получить звучание общих сообщений во всех каналах, а не только во фронтальных, в ini файл надо выставить параметр initMethod=2
Еще раз напомню, что при этом звуковая карта инициализируется константой BASS_DEVICE_3D. Но при этом не читаются некоторые wav файлы, и возникает ошибка создания канала. В скором времени я постараюсь разобраться почему так. Для Windowx XP вариант инициализации BASS_DEVICE_3D тоже подходит. Но весьма успешно работает и уже обкатанный BASS_DEVICE_SPEAKERS.

Ещё нарыл способ установки эмуляции разных помещений. Комната, зал, ванная, арена, и т.п. По сути это нам совершенно незачем, но эффекты можно убрать и таким образом тоже получить одинаковое звучание во всех колонках. Вот только почему то работает не на всех звуковых картах. У меня работает на двух из трех компах. Тоже буду дальше копать.

Пишите итоги тестов. Это очень мне поможет.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Чт май 05, 2016 2:48 am

Попался мне один сайтик с обсуждением этой библиотеки bass. И кое что я там накопал. Вообщем так:
Действительно есть большое различие для WinXP и Win7+ в работе со звуком. Если в WinXP звук идет на все колонки, то в Win7 для этого надо использовать 3D свойство. Иначе без указания канала, звук будет только во фронтальных колонках.

Подытожу всё ранее написанное. Если у вас WinXP, то в новых версиях можете вообще ничего не делать. Всё и так будет работать. Отсутствие в ini файле параметра initMethod=1 не вызовет ошибку. Оно так по умолчанию.

Но если у вас Win7 и старше, то в секцию [OutputDevise] вашего ini файла нужно добавить параметр initMethod=2 При этом звуковая карта будет инициализирована с параметром BASS_DEVICE_3D. И если она поддерживает его, то в SDM станет доступна кнопка 3D. А если карта позволяет установить EAX эффект то и кнопка EAX тоже. Чтобы включить эти функции надо кликнуть по ним мышкой. Цвет букв станет красный. Соответствующие ключи будут сами записаны в ваш ini файл, и при следующем открытии SDM все состояния восстановятся.
При активации 3D, к общим сообщениям добавляется ключ BASS_SAMPLE_3D, и они должны звучать во всех каналах одновременно. Все 3D эффекты я убрал, но звук почему то в этом режиме немного тише.

А теперь о грустном: Всплыл ранее незамеченный мною баг. Если указать номер канала, то можно использовать только моно wav и mp3 файлы. Иначе будет ошибка Can't create stream. Ну никак не получается создать стрим из стерео файла с указанием одного канала звуковой карты. И тоже самое для режима 3D. Только моно файлы. Не смертельно конечно, да и действительно нет смысла отправлять стерео файл в одну колонку. Только придется немного поработать и переконвертировать свои разные брякалки в моно формат.

По тестируйте последнюю бетку, и потом я выложу её на первой странице.
Вложения
SDM.zip
ver 1.53 beta
(128.11 КБ) 190 скачиваний
За это сообщение автора Bagir поблагодарил:
redmax144 (Пт май 06, 2016 4:22 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Sound Direct Manager

Сообщение Amarok » Чт май 05, 2016 10:31 am

win10 pro x64 - полёт нормальный. звуковушка - китайская usb
Моя Алиска живёт на Proxmox в Debian 12
Ответить