Пара вопросов к Алисе и шаблонам поведения
Модератор: immortal
-
- Сообщения: 66
- Зарегистрирован: Вт авг 06, 2013 3:49 pm
- Откуда: Новокузнецк
- Благодарил (а): 0
- Поблагодарили: 7 раз
Пара вопросов к Алисе и шаблонам поведения
Собственно:
1. Можно ли как то заткнуть Алису? Т.е., если ей в очередь было поставлено слишком много фраз для произношения, или если мне в данный момент не нужна её проговариваемая информация, как можно эту очередь очистить?
2. Почему-то не произносятся вслух длинные фразы. Это с каким-то ограничением связано? Если эту же самую длинную фразу скопировать в google translate, то там нормально произносит.
3. Про шаблоны поведения: можно ли сделать чтобы они реагировали только на команды пользователя (чтобы Алиса не реагировала на фразы, которые сама же и произнесла)
1. Можно ли как то заткнуть Алису? Т.е., если ей в очередь было поставлено слишком много фраз для произношения, или если мне в данный момент не нужна её проговариваемая информация, как можно эту очередь очистить?
2. Почему-то не произносятся вслух длинные фразы. Это с каким-то ограничением связано? Если эту же самую длинную фразу скопировать в google translate, то там нормально произносит.
3. Про шаблоны поведения: можно ли сделать чтобы они реагировали только на команды пользователя (чтобы Алиса не реагировала на фразы, которые сама же и произнесла)
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Пара вопросов к Алисе и шаблонам поведения
Что произносить, а что нет можно регулировать установой глобальной переменной minMsgLevel и соответствующим указанием уровня важности сообщения при использовании команды say -- т.е. те фразы, которые по важности ниже минимально установленного уровня для произношения, не будут произноситься а лишь добавятся в общий лог.Galakart писал(а):Собственно:
1. Можно ли как то заткнуть Алису? Т.е., если ей в очередь было поставлено слишком много фраз для произношения, или если мне в данный момент не нужна её проговариваемая информация, как можно эту очередь очистить?
Возможно, это связано с ограничениями самого гугла при обращении к нему через веб-запрос. Тут я бы посоветывал просто разбивать очень длинное предложение на несколько отрывков приемлемой длины.Galakart писал(а): 2. Почему-то не произносятся вслух длинные фразы. Это с каким-то ограничением связано? Если эту же самую длинную фразу скопировать в google translate, то там нормально произносит.
Боюсь, что нет. Шаблоны поведения реагируют на все сообщения в "чате", независимо от того, кто его инициировал. В принципе, в качестве доработки можно ввести такую опцию, как фильтр по пользователю, чтобы можно было выбрать на чьи фразы реагировать, а на чьи нет.Galakart писал(а):3. Про шаблоны поведения: можно ли сделать чтобы они реагировали только на команды пользователя (чтобы Алиса не реагировала на фразы, которые сама же и произнесла)
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 66
- Зарегистрирован: Вт авг 06, 2013 3:49 pm
- Откуда: Новокузнецк
- Благодарил (а): 0
- Поблагодарили: 7 раз
Re: Пара вопросов к Алисе и шаблонам поведения
Спасибо за разъяснения!
Только по первому вопросу, я имел в виду - можно ли как то остановить речь, когда несколько фраз уже отправлены в очередь на произношение. Т.е., например как-то очистить очередь safe_exec, или через что там речевые команды выполняются
Только по первому вопросу, я имел в виду - можно ли как то остановить речь, когда несколько фраз уже отправлены в очередь на произношение. Т.е., например как-то очистить очередь safe_exec, или через что там речевые команды выполняются
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Пара вопросов к Алисе и шаблонам поведения
Вот такая строчка кода вызванная из любого сценария очистит очередь для произношения (windows/linux):Galakart писал(а):Спасибо за разъяснения!
Только по первому вопросу, я имел в виду - можно ли как то остановить речь, когда несколько фраз уже отправлены в очередь на произношение. Т.е., например как-то очистить очередь safe_exec, или через что там речевые команды выполняются
Код: Выделить всё
SQLExec("DELETE FROM safe_execs WHERE COMMAND LIKE '%sapi%' OR COMMAND LIKE'%play%'");
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 66
- Зарегистрирован: Вт авг 06, 2013 3:49 pm
- Откуда: Новокузнецк
- Благодарил (а): 0
- Поблагодарили: 7 раз
Re: Пара вопросов к Алисе и шаблонам поведения
Да, гугл почему-то не возвращает фразу длиннее 15 секунд. Как вариант - разбивать большую фразу на предложения. В файле /lib/common.class.php в функции say, отрывок кода:sergejey писал(а): Возможно, это связано с ограничениями самого гугла при обращении к нему через веб-запрос. Тут я бы посоветывал просто разбивать очень длинное предложение на несколько отрывков приемлемой длины.
Код: Выделить всё
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);
}
}
}
}
-
- Сообщения: 210
- Зарегистрирован: Пт апр 12, 2013 2:27 pm
- Откуда: Уфа
- Благодарил (а): 28 раз
- Поблагодарили: 16 раз
Re: Пара вопросов к Алисе и шаблонам поведения
Браво! Прошу Сергея добавить в обновления, дабы не менять каждый раз
Система на Неттоп 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
(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
-
- Сообщения: 66
- Зарегистрирован: Вт авг 06, 2013 3:49 pm
- Откуда: Новокузнецк
- Благодарил (а): 0
- Поблагодарили: 7 раз
Re: Пара вопросов к Алисе и шаблонам поведения
Но тогда Алиса делает паузы между предложениями. Как вариант - создать в папке lib свой php-файл, какой-нибудь userfunctions.php. Скопировать туда всю функцию say, с этими изменениями, назвать её по другому (saylong например). И потом вызывать в нужном месте:
saylong("Это. Длинная. Фраза");
saylong("Это. Длинная. Фраза");
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Пара вопросов к Алисе и шаблонам поведения
Все сделал, как написали выше. Сделал php файл.
Когда вызываешь saylong - проглатывает первую часть (выдает ошибку) и проговаривает только вторую.
Я не сообразил, как еще укоротить обрабатываемый кусок.
Нид хелп
Когда вызываешь saylong - проглатывает первую часть (выдает ошибку) и проговаривает только вторую.
Я не сообразил, как еще укоротить обрабатываемый кусок.
Нид хелп
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Пара вопросов к Алисе и шаблонам поведения
А что-нибудь решили с этим вопросом?
У мен длинные фразы так и не проговаривает
У мен длинные фразы так и не проговаривает