Страница 1 из 1

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

Добавлено: Пн авг 26, 2013 9:59 am
Galakart
Собственно:
1. Можно ли как то заткнуть Алису? Т.е., если ей в очередь было поставлено слишком много фраз для произношения, или если мне в данный момент не нужна её проговариваемая информация, как можно эту очередь очистить?
2. Почему-то не произносятся вслух длинные фразы. Это с каким-то ограничением связано? Если эту же самую длинную фразу скопировать в google translate, то там нормально произносит.
3. Про шаблоны поведения: можно ли сделать чтобы они реагировали только на команды пользователя (чтобы Алиса не реагировала на фразы, которые сама же и произнесла)

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

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

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

Добавлено: Пн авг 26, 2013 4:03 pm
Galakart
Спасибо за разъяснения!
Только по первому вопросу, я имел в виду - можно ли как то остановить речь, когда несколько фраз уже отправлены в очередь на произношение. Т.е., например как-то очистить очередь safe_exec, или через что там речевые команды выполняются

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

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

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

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

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

Добавлено: Пн ноя 04, 2013 1:13 pm
Galakart
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);
           }
        }
}
}
Фраза разбивается только на этапе передачи в гугл (в чате разбиваться не будет).

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

Добавлено: Чт дек 12, 2013 1:56 pm
DiArt
Браво! Прошу Сергея добавить в обновления, дабы не менять каждый раз

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

Добавлено: Чт дек 12, 2013 3:16 pm
Galakart
Но тогда Алиса делает паузы между предложениями. Как вариант - создать в папке lib свой php-файл, какой-нибудь userfunctions.php. Скопировать туда всю функцию say, с этими изменениями, назвать её по другому (saylong например). И потом вызывать в нужном месте:
saylong("Это. Длинная. Фраза");

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

Добавлено: Пн дек 16, 2013 4:35 pm
PAV
Все сделал, как написали выше. Сделал php файл.
Когда вызываешь saylong - проглатывает первую часть (выдает ошибку) и проговаривает только вторую.
Я не сообразил, как еще укоротить обрабатываемый кусок.
Нид хелп

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

Добавлено: Вс июн 07, 2015 11:54 am
PAV
А что-нибудь решили с этим вопросом?
У мен длинные фразы так и не проговаривает