Прерывается звук

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

Модератор: immortal

Ответить
enzo0508
Сообщения: 8
Зарегистрирован: Ср май 23, 2018 12:52 pm
Благодарил (а): 6 раз
Поблагодарили: 0

Прерывается звук

Сообщение enzo0508 » Вс июн 21, 2020 1:27 pm

Проблема такая, majordomo прерывает все звуки примерно на 0.5сек раньше чем нужно, будь то простой звук уведомления или голосовой файл от YandexTTS. Раньше такого не было, после очередного обновления (на альфа ветке). Подскажите, пожалуйста, куда копать?

Из консоли "mplayer dingdong.mp3" проигрывает звук правильно, без прерывания в конце
chaoba
Сообщения: 32
Зарегистрирован: Пн мар 25, 2019 12:37 pm
Благодарил (а): 14 раз
Поблагодарили: 2 раза

Re: Прерывается звук

Сообщение chaoba » Вт июл 07, 2020 8:56 am

RHVoice - Настройки. Если стоит галочка Использовать кэширование - снимите.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Прерывается звук

Сообщение tarasfrompir » Вт июл 07, 2020 9:11 am

enzo0508 писал(а):
Вс июн 21, 2020 1:27 pm
Проблема такая, majordomo прерывает все звуки примерно на 0.5сек раньше чем нужно, будь то простой звук уведомления или голосовой файл от YandexTTS. Раньше такого не было, после очередного обновления (на альфа ветке). Подскажите, пожалуйста, куда копать?

Из консоли "mplayer dingdong.mp3" проигрывает звук правильно, без прерывания в конце
проверьте ффмпег
настройки в конгфиге
- и его работу
За это сообщение автора tarasfrompir поблагодарил:
enzo0508 (Пн июл 13, 2020 6:23 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
enzo0508
Сообщения: 8
Зарегистрирован: Ср май 23, 2018 12:52 pm
Благодарил (а): 6 раз
Поблагодарили: 0

Re: Прерывается звук

Сообщение enzo0508 » Пн июл 13, 2020 7:48 pm

Звук, насколько я понял, проигрывается через mplayer, он работает как нужно.

Но я вот что заметил, что если останавливать cycle_execs (в Xray) и отдельно запускать cycle_execs.php из консоли, то все прекрасно работает, пока не остановить цикл в консоле и не запустить в Xray системный, тогда все сообщения произносятся короче на 0,5 сек примерно.

Аналогично прерывается звук, если в консоле выполнять вот так:
sudo nice --10 mplayer dingdong.mp3

Проблема, видимо, вот в чем, если запускать из консоли, без "nice" (НЕ прерывается):
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 64.0 kbit/4.54% (ratio: 8000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 1.3 (01.2) of 1.0 (01.0) 1.0%

Если из консоли с nice, то (ПРЕРЫВАЕТСЯ):
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 64.0 kbit/4.54% (ratio: 8000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'

AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 1.1 (01.0) of 1.0 (01.0) 1.2%

Как это можно исправить?
enzo0508
Сообщения: 8
Зарегистрирован: Ср май 23, 2018 12:52 pm
Благодарил (а): 6 раз
Поблагодарили: 0

Re: Прерывается звук

Сообщение enzo0508 » Пн июл 13, 2020 10:00 pm

В итоге решение - запускать mplayer от пользователя pi, тогда все работает правильно, так как звук через "pulse" не выводится под рутом.

common.class.php:

if (!$ignoreSound) {
if (file_exists($filename)) {
if (IsWindowsOS())
safe_exec(DOC_ROOT . '/rc/madplay.exe ' . $filename, $exclusive, $priority);
else {
if (defined('AUDIO_PLAYER') && AUDIO_PLAYER!='') {
safe_exec(AUDIO_PLAYER.' ' . $filename . " >/dev/null 2>&1'", $exclusive, $priority);
} else {
safe_exec("runuser -l pi -c 'mplayer " . $filename . " >/dev/null 2>&1'", $exclusive, $priority);
}
}
}
}
Ответить