[Приложение] Sound Direct Manager
Модератор: immortal
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Sound Direct Manager
Да, все верно! И еще в настройках самого пользователя можно указать Хост (адрес), тогда если у терминала статичный ip адрес в локальной сети (что не трудно добиться), то он сразу будет выбирать этого пользователя сам.
У меня в комнатах пользователи так и называются по имени комнаты. А мобильные устройства уже по имени их хозяев. Разным цветом выделяются комнаты и пользователи.
У меня в комнатах пользователи так и называются по имени комнаты. А мобильные устройства уже по имени их хозяев. Разным цветом выделяются комнаты и пользователи.
-
- Сообщения: 44
- Зарегистрирован: Чт янв 28, 2016 8:18 pm
- Благодарил (а): 13 раз
- Поблагодарили: 5 раз
Re: Sound Direct Manager
Снова здравствуйте.
Сразу к делу. Проверяю работу программы из разных терминалов. По вашему опыту создал один терминал и назвал его Living_room. Таким образом есть основной терминал в комнате и второй (якобы в другой комнате). Далее создал на чистой системе шаблон поведения как в первом посте, про включение света в подъезде.
Захожу с главного терминала (чей id равен 1, посмотрел в базе данных) пишу команду в браузере --> "Включи", приходит ответ "Что именно" с id равным 1, далее говорю "Свет", приходит ответ: "Где именно" тоже с id равным 1, говорю: "подъезд" и приходит ответ: "Включаю свет в подъезде". Всё прекрасно работает!
Теперь захожу во второй терминал (id равен 5) и тоже пишу из браузера "включи", приходит ответ "Что именно" с id равным 5, далее говорю "Свет", и приходит ответ: "неизвестная команда". То есть почему-то с id отличным от единицы не хочет Алиса проходить по шаблону.
Вот лог программы:
Вот лог в окне программы:
На данный момент не смог понять, почему это происходит.
И ещё один момент, вы писали, что если прописать в пользователе хост, то SDM находясь по этому адресу будет сам выбирать id данного пользователя. Но этого не происходит. Нажимаю кнопку записи, говорю: "Включи", а ответ приходит всё равно с id равным 1. Но это как бы ладно, всё равно Алиса пока не может сама начинать диалог, создаю кнопку в меню со следующим кодом:
SDM начинает распознавание с нужным id, всё вроде бы хорошо, произношу знакомое "включи" и в ответ приходит ответ "Что именно", но id уже равняется единице.. То есть где-то по пути пятёрка потерялась...
Не понимаю, это я что-то делаю не правильно, то ли это баг такой программы. Уже голову сломал с данной проблемой.
вот лог:
Кстати, я после переустановки Алисы заглянул в файл command.php и там уже sergejey вставил нужную строчку, так что изменять ничего не нужно...
И если можно, можете показать код вашего сценария SayHook, очень хочется посмотреть ваш вариант реализации отправки в разные комнаты. Спасибо!
Сразу к делу. Проверяю работу программы из разных терминалов. По вашему опыту создал один терминал и назвал его 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
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
И ещё один момент, вы писали, что если прописать в пользователе хост, то SDM находясь по этому адресу будет сам выбирать id данного пользователя. Но этого не происходит. Нажимаю кнопку записи, говорю: "Включи", а ответ приходит всё равно с id равным 1. Но это как бы ладно, всё равно Алиса пока не может сама начинать диалог, создаю кнопку в меню со следующим кодом:
Код: Выделить всё
say('-recognizeid:5 Я слушаю Вас.');
Не понимаю, это я что-то делаю не правильно, то ли это баг такой программы. Уже голову сломал с данной проблемой.
вот лог:
Код: Выделить всё
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
И если можно, можете показать код вашего сценария SayHook, очень хочется посмотреть ваш вариант реализации отправки в разные комнаты. Спасибо!
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Sound Direct Manager
Да, довольно странно почему не отрабатывает команду "Свет" со второго терминала. Я попробую смоделировать эту ситуацию у себя.
По поводу сообщений: 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 уже будет знать, что 'кухня' это, например, второе устройство первый канал. Я постараюсь завтра выложить простой пример как это сделать уже сейчас.
По поводу сообщений: 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 уже будет знать, что 'кухня' это, например, второе устройство первый канал. Я постараюсь завтра выложить простой пример как это сделать уже сейчас.
- Рейтинг: 1.16%
-
- Сообщения: 113
- Зарегистрирован: Пт дек 14, 2012 3:46 am
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Sound Direct Manager
Bagir, вопрос. По какой причине МДМ при выводе звука через СДМ может читать рэп.... Выглядит это так - произносит фразу и начинает на каком то слове заикаться, повторяет раз по 5 одно и то же..... Это возникает произвольно и сохранить звуковой файл не получается...... Типа " сегодня четверг четверг четверг четверг четверг 28 апреля......."
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Sound Direct Manager
smoker_vvo это уже что то новенькое
Никогда с таким не сталкивался. Общий алгоритм такой: Стримим текст в wav файл а потом его проигрываем в порядке очереди.
А в очереди сообщений всё нормально? Там нет повторений слов?
Ещё можно послушать stream0.wav файлы. цифра это номер канала. В файле сохраняется последнее сообщение. Можно попробовать изменить путь для хранения этих временных файлов. Параметр streamPath="d:\temp" в ini файле.

А в очереди сообщений всё нормально? Там нет повторений слов?
Ещё можно послушать stream0.wav файлы. цифра это номер канала. В файле сохраняется последнее сообщение. Можно попробовать изменить путь для хранения этих временных файлов. Параметр streamPath="d:\temp" в ini файле.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Sound Direct Manager
Долго пытался разобраться, почему же на 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 заменить на тот что в архиве в этом сообщении.
Удачных опытов. Жду ответов.
Единственное что получилось накопать, это другой вариант инициализации звуковой карты.
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 скачивания
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Sound Direct Manager
Начиная с Windows 7, если у вас многоказальная звуковая карта, чтобы получить звучание общих сообщений во всех каналах, а не только во фронтальных, в ini файл надо выставить параметр initMethod=2
Еще раз напомню, что при этом звуковая карта инициализируется константой BASS_DEVICE_3D. Но при этом не читаются некоторые wav файлы, и возникает ошибка создания канала. В скором времени я постараюсь разобраться почему так. Для Windowx XP вариант инициализации BASS_DEVICE_3D тоже подходит. Но весьма успешно работает и уже обкатанный BASS_DEVICE_SPEAKERS.
Ещё нарыл способ установки эмуляции разных помещений. Комната, зал, ванная, арена, и т.п. По сути это нам совершенно незачем, но эффекты можно убрать и таким образом тоже получить одинаковое звучание во всех колонках. Вот только почему то работает не на всех звуковых картах. У меня работает на двух из трех компах. Тоже буду дальше копать.
Пишите итоги тестов. Это очень мне поможет.
Еще раз напомню, что при этом звуковая карта инициализируется константой BASS_DEVICE_3D. Но при этом не читаются некоторые wav файлы, и возникает ошибка создания канала. В скором времени я постараюсь разобраться почему так. Для Windowx XP вариант инициализации BASS_DEVICE_3D тоже подходит. Но весьма успешно работает и уже обкатанный BASS_DEVICE_SPEAKERS.
Ещё нарыл способ установки эмуляции разных помещений. Комната, зал, ванная, арена, и т.п. По сути это нам совершенно незачем, но эффекты можно убрать и таким образом тоже получить одинаковое звучание во всех колонках. Вот только почему то работает не на всех звуковых картах. У меня работает на двух из трех компах. Тоже буду дальше копать.
Пишите итоги тестов. Это очень мне поможет.
- Bagir
- Сообщения: 1615
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: Sound Direct Manager
Попался мне один сайтик с обсуждением этой библиотеки 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. Только моно файлы. Не смертельно конечно, да и действительно нет смысла отправлять стерео файл в одну колонку. Только придется немного поработать и переконвертировать свои разные брякалки в моно формат.
По тестируйте последнюю бетку, и потом я выложу её на первой странице.
Действительно есть большое различие для 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 скачиваний
- Рейтинг: 1.16%
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Sound Direct Manager
win10 pro x64 - полёт нормальный. звуковушка - китайская usb
Моя Алиска живёт на Proxmox в Debian 12