Привет.

07.01.2010 10:44, Дмитрий Падучих пишет:
> Надеюсь, что в утилите конвертации Вы позаботились об уменьшении задержки.
> При построении цепочки процессов, объединённых в конвейер, задержка всей
> цепочки, очевидно, не меньше, чем у составляющих процессов.
Не знаю, возможно есть какие-то специальные трюки, чтобы уменшить эту 
самую задержку. Я неписал раньше конвеерных утилит. Приведу текст своей 
программы полностью, авось кто из экспертов что-то посоветует?
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
char buf[256];
unsigned size;
while (cin) {
cin.read(buf,256);
size=cin.gcount();
for (unsigned i=0; i<size; ++i)
buf[i]^=0x80;
cout.write(buf,size);
};
}
> Хотя задержка может быть вызвана и pacat плюс Pulseaudio, конечно.
>
Я тоже склонен думать именно так. Буду еще разбиратся с конфигами 
звукового сервера, может что-то удастся откопать.
> Ещё имеет значение, о каком отклике Вы говорите. Задержка в случае
> прерывания звука - это одно, а задержка в начале - другое. Выше я писал о
> той задержке, которая может быть в начале.
>
О задержке вначале и я. С прерыванием у меня все отлично.
> Le>  Ну да я уже привык.
>
> Хорошо. :-)
>
Хорошо, что я знаю c++. а, получается, обычным пользователям дорога закрыта?
> Le>  Вобще, voiceman работает достаточно странно. Переключение с русского на
> Le>  английский в середине фразы (без знаков пунктуации) на мой взгляд не
> Le>  обосновано, паузы после каждой запятой тоже бъют по уху. Думаю, что
> Le>  voiceman вызывает синтезатор после каждого куска фразы, это так?
>
> Про Voiceman не скажу, но Multispeech 1, как я помню, вызывает синтезатор
> для каждой команды q {...} отдельно. А Emacspeak определяет конец фрагмента
> для q {...} после знака пунктуации, за которым идёт знак пробела.
А какой в этом глубинный смысл?
>   В некоторых конфигурациях после знаков препинания были заметные паузы, но в
> той конфигурации, которая у меня сейчас, паузы практически не заметны.
>
У меня, похоже, случай именно такой конфигурации.
> Le>  Возможно, хорошего отклика можно добится написав нативный вывод на
> Le>  pulseaudio без создания кучки процессов на каждое нажатие клавишь. Но
> Le>  это значит создание еще одного велосипеда "yet-another-speech-server",
> Le>  чего делать не хочется. Или это и есть пресловутый linux way?
>
> Что именно? Создание yet another? Если это наиболее адекватное решение, или
> если есть желание и возможность это сделать, то почему бы и нет.
>
> Кстати, если кто-то решит-таки создать свой речевой сервер, то могу
> предложить для него название - Multicheeps. :-)
>
Пока так много энтузиазма/свободного времени я не имею. Хотелось бы 
некоторого гибридного решения: чтобы и свой речевой сервер не писать, и 
заработало все. voiceman, мне, похоже, не подходит из-за его алгоритма 
разбиения текста вывода на русский/английский синтезатор. У кого-то есть 
идеи, почему multispeech 2 не подает признаков жизни? эмуляция алса у 
меня работает.

Еще, если я вдруг решусь занятся портированием newfon'а с использованием 
winelib, какой интерфейс для синтезатора делать? Вариант, реализованый в 
  ru_tts мне не нравится из-за необходимости запуска процесса на каждый 
чих. С winelib это будет еще более громоздко, ибо загрузчик должен 
инициализировать wine-окружение. Реализовать синтезатор в shared 
library, насколько я понял возможности winelib, не получится. Проще 
всего в плане реализации, здаеться мне, модуль для speech-dispatcher. У 
них реализован хороший каркас для новых модулей, который надо только 
взять и использовать. Но в этом случае нет возможности подключить 
синтезатор к emacspeak, теряется многоязыковый вывод...
-- 
Blinux-rus mailing list
[email protected]
http://www.a11ywiki.org/cgi-bin/mailman/listinfo/blinux-rus

Ответить