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

Ответить