28.07.2010 08:37, Дмитрий Падучих пишет: > Michael Pozhidaev: > > MP> После сборки Вашего кода и попытки его запуска нужного результата пока > MP> не получается. Ниже две ссылки на два файла, которые сгенерировала > MP> утилита. Рядом приводится текст, который посылал ей на вход. Пробовал > MP> менять кодировку на cp1251 и koi8-r. По умолчанию стоит utf-8. Пробовал
Синтезатор предполагает, что текст в utf-8. > MP> также одиночные слова. Возможно, проблема в каких-нибудь отличиях в > MP> библиотеках моей системы, libunistring, например. Flite-1.4 стоит. > > У меня синтезатор работает. В том числе и с твоими фразами. Использовал > кодировку по умолчанию - utf-8. Возможно, дело не в библиотеках, а в том, > что у тебя 64-битная платформа. При компиляции с ключами -Wall -O2 > появляются предупреждения компилятора, в частности такие: Вообще, у меня самой 64-битная Linux, но эти предупреждения, действительно, указывают на мою ошибку. > > gcc -o build/lib/lib.o -c -Wall -O2 -finput-charset=UTF-8 > -DPACKAGE=\"RHVoice\" -DVERSION=\"0.1\" -Dpath_sep=\"\\\/\" > -I/usr/include/flite -Ibuild/lib -Isrc/lib -Ibuild/hts_engine_api/include > -Isrc/hts_engine_api/include src/lib/lib.c > src/lib/lib.c:23:24: warning: unknown escape sequence '\/' > src/lib/lib.c: In function 'hts_synth': > src/lib/lib.c:364: warning: implicit declaration of function 'HTS_calloc' > src/lib/lib.c:372: warning: implicit declaration of function 'HTS_strdup' Я не заметила, что эти функции hts_engine API, строго говоря, предназначены только для внутреннего использования библиотеки и поэтому не объявлены в главном заголовочном файле. Использовать их приходится потому, что алгоритм расчёта длительности звуков на основании указанной пользователем скорости, реализованный в библиотеке, на практике даёт не слишком высокую максимальную скорость, и паузы, как мне показалось, при этом не достаточно сокращаются. Я посмотрела, как проводятся аналогичные расчёты в исходниках Flite и реализовала их в собственном коде, но при этом использовала эти внутренние функции. И не заметила, что их нужно было предварительно объявить. В любом случае ошибка, что я не прошлась по предупреждениям компилятора. > src/lib/lib.c:372: warning: assignment makes pointer from integer without a > cast Ну и тут, соответственно, компилятор по умолчанию решает, что функция возвращает int. > > Насколько я знаю, на 64-битной платформе преобразование int в указатель > работать не будет. > > MP> Ещё есть rpm-версия hts_engine-API-1.03, но, думаю, здесь это неважно. > > У меня этого нет. Я распространяю эту библиотеку со своим кодом в виде исходников, в том числе и потому, что в дистрибутивах она вряд ли есть. Но главная причина в том, что мне пришлось её патчить, потому что поддержки так называемого потокового синтеза, о котором я писала в одном из прошлых писем, там нет вообще. Пришлось её придумать, чтобы можно было расчитывать на хороший отклик. Михаил, а цифры он тоже так читает? -- Olga -- Blinux-rus mailing list [email protected] http://www.a11ywiki.org/cgi-bin/mailman/listinfo/blinux-rus
