[Gnome] Q: Гном в Сизифе

Michael Pozhidaev msp на altlinux.ru
Пн Окт 11 16:15:11 UTC 2010


Hello, Alexey Shabalin!

> аоследние из сизифа. 2.26.32 и 2.26.35

OK

>> Что произойдёт, если некая служба, запущенная из /etc/rc.d, начнёт
>> издавать звуки через libalsa в момент, когда у юзера имеется запущенная
>> сессия Гнома с сессионным PA?
> если стоит alsa-plugins-pulse, то звук выводится через pulse. В чём
> проблема?

Рассказываю историю от начала и до конца. Уже делал это когда-то в
devel на lists, если повторюсь, то может ещё кто будет не в курсе. 

1. Есть речевой сервер. Это процесс, сидящий в фоне, запускаемый через
rc.d, ловит коннекты, получает команды говорить и молчать, вызывает
синтезаторы и выводит звук. Через что ему выводить звук - ему не
особенно интересно. В конфиге указывается выражение на /bin/sh, которое
просто вызывается и в которое шлются аудио-данные через stdin. Некоторую
сложность вызывает вопрос не то, как говорить, а то, как молчать. Сервер
этому процессу шлёт парочку из SIGINT + SIGKILL, которая в большинстве
случаев приводит к нужному результату. Главный критерий -
отклик. Задержка в 0.1-0.2с уже может начать бесить многих
пользователей. Временем проверено, что использование aplay в основном
граблей не имеет, когда всё играет через alsa. Сразу комментарий: когда
речевой сервер один в системе, то есть нет сессионных копий, - это очень
хорошо, т.к. это предотвращает наложение болтовни от разных источников.

2. Когда запускается Гном с PA, есть два варианта aplay с эмуляцией или 
pacat. У нашего речевого сервера (моя собственная разработка -
http://www.marigostra.ru/voiceman/
) в настоящий момент в Ubuntu
пользователей больше, чем в ALT LInux. Там PA повсеместно, но конфигурят
всегда вывод через aplay. При таком раскладе особенно всех там
впечатляет сила команды killall pulseaudio. Без неё работает, но с
тормозами. Скорее всего, эмуляции не так хороша, как
хотелось бы. Экспериментов с pacat никто не предпринимал, хотя это решение
гораздо более правильное, чем то, что сейчас. Тот речевой сервер, который в
Ubuntu предлагается по умолчанию, пытается работать с PA через его
нативный API, но код, который это делает, как понимаю, крив . В списках
тамошнего апстрима мелькают жалобы. В целом, я могу стибрить этот код,
если было бы что стибрить.

3. Мне предстоит выработать правильную концепцию для ALT Linux.  Сейчас
начал масштабный переход наших репо на новый релиз своего сервера, где,
скорее всего, нужно понять, будут ли проблемы с использованием
pacat. Выглядеть это должно так: в конфиге сервера указываются несколько
выражений на /bin/sh, способных вызвать плееры для alsa, PA и пр. При
запуске сервера пользователь может указать,  какой именно командой
вызывать плеер. Ньюансов два: как pacat сообразит, где искать сервер, и
как он среагирует на получение SIGINT + SIGKILL, приведёт ли это к
нужному результату.

Алексей, вообще, если у Вас есть немного времени, может быть мы
попробуем поэкспериментировать на Вашей машине, если на ней PA устойчиво
работает? Тут у меня есть  организационные детали. В ходу машина
одна,экспериментировать на ней с разными звуковыми и речевыми серверами,
используя речевой сервер - очень тонкое удовольствие.

Обновление пакетов в Сизифе пока на полпути. Ещё не всё протестировал,
но voiceman + espeak уже должен работать. Если не срастётся, то отладка
будет тривиальной. 

-- 
Michael Pozhidaev. Tomsk, Russia. E-mail: msp на altlinux.ru
Russian info page: http://www.marigostra.ru/



Подробная информация о списке рассылки Gnome