Пара вопросов к Алисе и шаблонам поведения

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Пара вопросов к Алисе и шаблонам поведения

Сообщение Galakart » Пн авг 26, 2013 9:59 am

Собственно:
1. Можно ли как то заткнуть Алису? Т.е., если ей в очередь было поставлено слишком много фраз для произношения, или если мне в данный момент не нужна её проговариваемая информация, как можно эту очередь очистить?
2. Почему-то не произносятся вслух длинные фразы. Это с каким-то ограничением связано? Если эту же самую длинную фразу скопировать в google translate, то там нормально произносит.
3. Про шаблоны поведения: можно ли сделать чтобы они реагировали только на команды пользователя (чтобы Алиса не реагировала на фразы, которые сама же и произнесла)
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение sergejey » Пн авг 26, 2013 1:42 pm

Galakart писал(а):Собственно:
1. Можно ли как то заткнуть Алису? Т.е., если ей в очередь было поставлено слишком много фраз для произношения, или если мне в данный момент не нужна её проговариваемая информация, как можно эту очередь очистить?
Что произносить, а что нет можно регулировать установой глобальной переменной minMsgLevel и соответствующим указанием уровня важности сообщения при использовании команды say -- т.е. те фразы, которые по важности ниже минимально установленного уровня для произношения, не будут произноситься а лишь добавятся в общий лог.
Galakart писал(а): 2. Почему-то не произносятся вслух длинные фразы. Это с каким-то ограничением связано? Если эту же самую длинную фразу скопировать в google translate, то там нормально произносит.
Возможно, это связано с ограничениями самого гугла при обращении к нему через веб-запрос. Тут я бы посоветывал просто разбивать очень длинное предложение на несколько отрывков приемлемой длины.
Galakart писал(а):3. Про шаблоны поведения: можно ли сделать чтобы они реагировали только на команды пользователя (чтобы Алиса не реагировала на фразы, которые сама же и произнесла)
Боюсь, что нет. Шаблоны поведения реагируют на все сообщения в "чате", независимо от того, кто его инициировал. В принципе, в качестве доработки можно ввести такую опцию, как фильтр по пользователю, чтобы можно было выбрать на чьи фразы реагировать, а на чьи нет.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение Galakart » Пн авг 26, 2013 4:03 pm

Спасибо за разъяснения!
Только по первому вопросу, я имел в виду - можно ли как то остановить речь, когда несколько фраз уже отправлены в очередь на произношение. Т.е., например как-то очистить очередь safe_exec, или через что там речевые команды выполняются
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение sergejey » Вт авг 27, 2013 10:13 am

Galakart писал(а):Спасибо за разъяснения!
Только по первому вопросу, я имел в виду - можно ли как то остановить речь, когда несколько фраз уже отправлены в очередь на произношение. Т.е., например как-то очистить очередь safe_exec, или через что там речевые команды выполняются
Вот такая строчка кода вызванная из любого сценария очистит очередь для произношения (windows/linux):

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

SQLExec("DELETE FROM safe_execs WHERE COMMAND LIKE '%sapi%' OR COMMAND LIKE'%play%'");

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение Galakart » Пн ноя 04, 2013 1:13 pm

sergejey писал(а): Возможно, это связано с ограничениями самого гугла при обращении к нему через веб-запрос. Тут я бы посоветывал просто разбивать очень длинное предложение на несколько отрывков приемлемой длины.
Да, гугл почему-то не возвращает фразу длиннее 15 секунд. Как вариант - разбивать большую фразу на предложения. В файле /lib/common.class.php в функции say, отрывок кода:

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

           if (!defined('SETTINGS_TTS_GOOGLE') || SETTINGS_TTS_GOOGLE) {
                $google_file=GoogleTTS($ph, $lang);
           } else {
                $google_file=false;
           }

           if (!defined('SETTINGS_SPEAK_SIGNAL') || SETTINGS_SPEAK_SIGNAL=='1') {
              $passed=SQLSelectOne("SELECT (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(ADDED)) as PASSED FROM shouts WHERE ID!='".$rec['ID']."' ORDER BY ID DESC LIMIT 1");
              if ($passed['PASSED']>20) { // play intro-sound only if more than 30 seconds passed from the last one
                    playSound('dingdong', 1, $level);
                  }
           }

           if ($google_file) {
                @touch($google_file);
                        playSound($google_file, 1, $level);
           } else {
                safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level);
           }
        }
заменить на:

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

$pieces = explode(".", $ph);
foreach ($pieces as $pieceph) {
if ($pieceph!="") {
           if (!defined('SETTINGS_TTS_GOOGLE') || SETTINGS_TTS_GOOGLE) {
                $google_file=GoogleTTS($pieceph, $lang);
           } else {
                $google_file=false;
           }

           if (!defined('SETTINGS_SPEAK_SIGNAL') || SETTINGS_SPEAK_SIGNAL=='1') {
              $passed=SQLSelectOne("SELECT (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(ADDED)) as PASSED FROM shouts WHERE ID!='".$rec['ID']."' ORDER BY ID DESC LIMIT 1");
              if ($passed['PASSED']>20) { // play intro-sound only if more than 30 seconds passed from the last one
                    playSound('dingdong', 1, $level);
                  }
           }

           if ($google_file) {
                @touch($google_file);
                        playSound($google_file, 1, $level);
           } else {
                safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level);
           }
        }
}
}
Фраза разбивается только на этапе передачи в гугл (в чате разбиваться не будет).
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа
Благодарил (а): 28 раз
Поблагодарили: 16 раз

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение DiArt » Чт дек 12, 2013 1:56 pm

Браво! Прошу Сергея добавить в обновления, дабы не менять каждый раз
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение Galakart » Чт дек 12, 2013 3:16 pm

Но тогда Алиса делает паузы между предложениями. Как вариант - создать в папке lib свой php-файл, какой-нибудь userfunctions.php. Скопировать туда всю функцию say, с этими изменениями, назвать её по другому (saylong например). И потом вызывать в нужном месте:
saylong("Это. Длинная. Фраза");
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение PAV » Пн дек 16, 2013 4:35 pm

Все сделал, как написали выше. Сделал php файл.
Когда вызываешь saylong - проглатывает первую часть (выдает ошибку) и проговаривает только вторую.
Я не сообразил, как еще укоротить обрабатываемый кусок.
Нид хелп
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

Re: Пара вопросов к Алисе и шаблонам поведения

Сообщение PAV » Вс июн 07, 2015 11:54 am

А что-нибудь решили с этим вопросом?
У мен длинные фразы так и не проговаривает
Ответить