[Homeros] ChromeVox+D-Bus - технологический прикид

Michael Pozhidaev msp на altlinux.ru
Вс Июл 27 12:07:25 MSK 2014


Привет всем!

Описанные ниже вещи позволяют получить некоторый говорящий результат, но
это пока материал для разработчиков, большей частью внимание уделено
компонентам в процессе создания. 

По этой ссылке:

http://git.altlinux.org/people/msp/public/libdbusspeech.git 

доступен git библиотеки, которая оборачивает интерфейс для передачи
речевых команд через D-Bus. Сам интерфейс определяется классом
AbstractService, суть которого можно увидеть здесь:

http://marigostra.com/projects/libdbusspeech/api/classDBusSpeech_1_1AbstractService.html

Библиотека по сути является реализацией прокси-объекта, т.е. на
клиентской стороне она реализует этот интерфейс, на стороне провайдера -
ждёт чужую реализацию и передаёт все вызовы через D-Bus. Если
уверенности, что провайдер получил запрос и ответил на него, нет, то
клиент выбрасывает DBusException. Любые комментарии и поправки
приветствуются, но сейчас суть не в этом.

Вот по этой ссылке:

ftp://devel.altlinux.org/msp/chromium/chromium-31-dbusspeech-20140727.patch

есть патч, который можно приложить к chromium'у, и который оторвёт
использование speech-dispatcher и заменит его на libdbusspeech. Это
первая работающая версия, будет уточняться. Отлаживалась на chromium-31,
но адаптация для более новый версий должна быть тривиальной - там только
незначительные уточнения авторов в Google с комментарием в
стиле"оппачки" по поводу качества реализации speech-dispatcher, которого
поймали на трудноисправляемых утечках памяти. Если собрать libdbusspeech
и разместить его в /usr/local, то после патча затруднений быть не
должно, но нужно помнить, что сборка chromium занимает несколько часов и
требует много памяти на компьютере. 

Как понятно из всей идеи D-Bus, ответную часть предложенного интерфейса
для ловли вывода chromiumкаждый может сделать на свой вкус, применив
любой сервер или даже отдельный синтезатор. Для отладки в каталоге tests
есть пример, как можно отлаживать просто следя за сообщениями. Можно
брать в переработку просто этот пример.

Теперь про ChromeVox. Как известно, ChromeVox элементарно ставится на
компьютере, если положить файл из этой ссылке:

ftp://devel.altlinux.org/msp/chromium/kgejglhpjiefppelpmljglcjbhoiplfn.json

в каталог расширений, в Альте это /usr/lib64/chromium/extensions. Если
Вы собрали libdbusspeech, приложили патч к chromium, положили этот файл,
то после запуска chromium может появиться речь, и она будет даже
вменяемой, но в то же время и не без сюрпризов. Если прыгать по ссылкам,
текст, в том числе и русский, проговаривается только в том случае, если
в тексте ссылки есть латинские буквы. В противном случае слышен
сигнал-заглушка. До некоторой степени напоминает процесс эволюции
emacspeak и обрусификации его.

В итоге, если есть опыт наводки ChromeVox на русский язык, то был бы
благодарен, если бы кто-нибудь им поделился. Возможно, в chromium'tе
есть настройки i18n, которые достаточно было бы подкрутить. Пока
интересного не нашёл. Текущая идея - только проследить работу ChromeVox,
который поддаётся трассировке, и приделать патч. Трассировать можно
путём добавления в код console.log(). При запуске chromium'а с ключом
--enable-logging --v=1 эти сообщения можно ловить в логе внутри
~/.config/chromium.

Пожелания и предложения, а особенно патчи, приветствуются!

-- 
Michael Pozhidaev. Tomsk, Russia.
Russian info page: http://www.marigostra.ru/
English info page: http://www.marigostra.com/


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