[Homeros] Про скорость речи voiceman и другие вопросы
Michael Pozhidaev
msp на altlinux.ru
Вс Окт 17 01:25:09 UTC 2010
Анатолий и Геннадий, здравствуйте!
Про скорость, это не баг, это я просто забыл предупредить. :)) Очень
прошу прощения. На моей системе были затычки, я забыл про них. Сейчас
постараюсь предельно подробно объяснить проблему, включая метод её
решения. если что-нибудь не ясно, переспрашивайте.
Значит так, новый voiceman-emacspeak пытается более глубоко обрабатывать
команды изменения параметров речи, которые шлют emacspeak, orca и
yasr. Как когда-то говорил, воспринимаемый формат изменён с espeak на
dectalk.
Во время разработки достаточно быстро обнаружился неожиданный прикол:
параметры по умолчанию, которые разные чтецы считают нормальными, имеют
разное значение. Другими словами, если настроить нечто для emacspeak, то
orca и yasr начинают болтать не в меру быстро или медленно.
Для решения этой проблемы утилита voiceman-emacspeak воспринимает
несколько переменных, корректирующих обработку команд:
$VOICEMAN_EMACSPEAK_RATE_FRACTION - делитель темпа речи;
$VOICEMAN_EMACSPEAK_RPITCH_SHIFT - добавка к высоте голоса;
Ещё есть $VOICEMAN_EMACSPEAK_FAMILY - голос по умолчанию, если нужно,
чтобы orca илиyasr говорили другими голосами при соответствующих
настройках конфига, но сейчас это к делу не относится.
Короче говоря, если вызвать такие команды:
export VOICEMAN_EMACSPEAK_PITCH_SHIFT=20
export VOICEMAN_EMACSPEAK_RATE_FRACTION=10
то в orca всё будет нормально. Эти команды можно вызывать в любом месте перед
запуском voiceman-emacspeak. В частности, у меня для orca была отдельная
директория servers, где эти команды были вписаны в скрипт voiceman,
вызывавший затем voiceman-emacspeak. Поэтому я и забыл про это.
Но если эти команды вписать в /opt/voiceman/share/servers/voiceman, то
они начнут работать для всех чтецов, что не есть хорошо. Если выпустить
из рассмотрения yasr, то окончательным решением могло бы быть добавление
в файл /opt/voiceman/share/servers/voiceman перед строкой exec... таких
строк:
if [ -z "$EMACSPEAK_DIR" ]; then
export VOICEMAN_EMACSPEAK_PITCH_SHIFT=20
export VOICEMAN_EMACSPEAK_RATE_FRACTION=10
fi
Суть этих строк в том, что они проверят, если сервер вызывается не из
под emacspeak, то нужно немного модифицировать обработку
команд. Переменная $EMACSPEAK_DIR устанавливается самим emacspeak, можно
на неё ориентироваться, для какого чтеца используется сервер.
Так что вот. Я бы предложил вернуть параметры вызова синтезаторов в их
исходное значение, а затем просто немного поправить файл
/opt/voiceman/share/servers/voiceman, как написал выше. Надо придумать
что-нибудь такое и для yasr. Если Вы скажете, что всё сработало, я внесу
сразу изменения и в пакет.
> Попутно хочу спросить. Когда я изменил настройки и решил обновить
> параметры не перегружая voiceman командой
> $ /opt/voiceman/bin/voiceman-reload /tmp/voiceman.pid
> то мне было выдано примерно такое сообщение:
> ]- 19: /tmp/voiceman.pid: unexpected operator,
> хотя изменения в параметрах сразу же заработали. Чтобы это значило?
А можно посмотреть, что записано в файл /tmp/voiceman.pid? Кроме этого:
1. Какой будет вывод на команду
echo "$(cat /tmp/voiceman.pid)"
Появится ли ошибка.
2. voiceman-reload нужно запускать с правами того же пользователя,
который запустил и демона. Хотя в этих случаях он пишет permission
denied.
> Есть для меня и приятная неожиданность: стали читаться нормально
> цифры. Так что новая версия уже лучше.
Угу, очень рад.
> На запрос LANG я получил такой ответ:
> en_US.UTF-8
Угу, нормально. Кодировка явно указано, этого достаточно.
> Что теперь надо сделать, чтобы получить другую консоль?
Тут, Геннадий, не понял вопроса. Можно подробнее, что именно Вы хотите
получить?
--
Michael Pozhidaev. Tomsk, Russia. E-mail: msp на altlinux.ru
Russian info page: http://www.marigostra.ru/
Подробная информация о списке рассылки Homeros