[Библиотека] использования Яндекс.Станции в качестве терминала (синтез речи и управление)

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

Модератор: immortal

Аватара пользователя
S_Nick
Сообщения: 67
Зарегистрирован: Сб сен 30, 2017 7:44 pm
Откуда: Минск
Контактная информация:

Re: [Библиотека] использования Яндекс.Станции в качестве терминала (синтез речи и управление)

Сообщение S_Nick »

dengi.76 писал(а): Сб апр 18, 2020 11:46 am S_Nick Здравствуйте ! Не могли бы Вы подсказать, как можно сделать очерёдность сообщений Алисы, а то сейчас если приходит два сообщения то первое из них "съедается". Спасибо.
Средствами Станции не думаю, что это возможно реализовать, никаких API в открытом доступе нет. Яндекс держит платформу закрытой.
Нужно реализовывать средствами MJDM. Единственный способ приходящий в голову, рассчитывать примерное время проговаривания текста и на это время делать паузу, перед следующей отправкой.

Паузу можно очень приблизительно рассчитать так:

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

$command = "Раз два три";
$pause = ceil(mb_strlen(str_replace(array('Повтори за мной:', ' '), '', $command)) * 5 / 48);
Но это не панацея, например, если отправить Алисе команду цифрами "1 2 3", она и будет проговаривать как текст "Раз два три", а код рассчитает паузу исходя из 3 символов.

Конечно можно реализовать и более сложный алгоритм, но всё равно это будет один большой "костыль".

Станцию можно использовать в параллели с основным голосовым выводом MJDM, но не в замен. Для вывода редких сообщений, к примеру, времени каждый час, изменения погоды, пробок на дорогах и тд.

В общем. Создать очередь сообщений на данный момент нельзя.
dengi.76
Сообщения: 222
Зарегистрирован: Вт фев 06, 2018 9:40 pm
Откуда: Пермь

Re: [Библиотека] использования Яндекс.Станции в качестве терминала (синтез речи и управление)

Сообщение dengi.76 »

S_Nick писал(а): Сб апр 18, 2020 6:56 pm
dengi.76 писал(а): Сб апр 18, 2020 11:46 am S_Nick Здравствуйте ! Не могли бы Вы подсказать, как можно сделать очерёдность сообщений Алисы, а то сейчас если приходит два сообщения то первое из них "съедается". Спасибо.
Средствами Станции не думаю, что это возможно реализовать, никаких API в открытом доступе нет. Яндекс держит платформу закрытой.
Нужно реализовывать средствами MJDM. Единственный способ приходящий в голову, рассчитывать примерное время проговаривания текста и на это время делать паузу, перед следующей отправкой.

Паузу можно очень приблизительно рассчитать так:

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

$command = "Раз два три";
$pause = ceil(mb_strlen(str_replace(array('Повтори за мной:', ' '), '', $command)) * 5 / 48);
Но это не панацея, например, если отправить Алисе команду цифрами "1 2 3", она и будет проговаривать как текст "Раз два три", а код рассчитает паузу исходя из 3 символов.

Конечно можно реализовать и более сложный алгоритм, но всё равно это будет один большой "костыль".

Станцию можно использовать в параллели с основным голосовым выводом MJDM, но не в замен. Для вывода редких сообщений, к примеру, времени каждый час, изменения погоды, пробок на дорогах и тд.

В общем. Создать очередь сообщений на данный момент нельзя.
Спасибо за подробный ответ !
Ответить