Ошибка API Flite в Windows

Я строю Flite для Windows, код:

#include "..\\include\\flite.h"cst_voice *register_cmu_us_kal();
int main(int argc, char **argv)
{    cst_voice *v;
if (argc != 2)
{
fprintf(stderr, "usage: flite_test FILE\n");
exit(-1);
}
flite_init();
v = new_voice();
flite_text_to_speech("This is a test",v,"play");
return 0;
}

но я получаю сообщение printf «использование:», если я удаляю это, я получаю это «пытался получить доступ к лексикону в формате val flite -1». Я нахожусь на окнах, поэтому я вызываю project.exe без аргументов в документации.
Вы знаете, как это исправить?

1

Решение

Как сказано в комментариях вы должны удалить количество параметров (argc) проверять.

Кроме того: при звонке new_voice метод вы неинициализированы cst_voice и ты все еще не можешь использовать это.

Вот почему вы получаете ошибку:

пытался получить доступ к лексикону в -1 типе val flite

Это значит лекс (cst_lexicon) все еще неинициализирован в cst_voice состав.

Я думаю, вам нужно сделать что-то вроде следующего кода:

cst_voice *register_cmu_us_no_wave()
{
cst_voice *v = new_voice();
cst_lexicon *lex;

v->name = "no_wave_voice";

/* Set up basic values for synthesizing with this voice */
usenglish_init(v);
feat_set_string(v->features,"name","cmu_us_no_wave");

/* Lexicon */
lex = cmu_lex_init();
feat_set(v->features,"lexicon",lexicon_val(lex));

/* Intonation */
feat_set_float(v->features,"int_f0_target_mean",95.0);
feat_set_float(v->features,"int_f0_target_stddev",11.0);

feat_set_float(v->features,"duration_stretch",1.1);

/* Post lexical rules */
feat_set(v->features,"postlex_func",uttfunc_val(lex->postlex));

/* Waveform synthesis: diphone_synth */
feat_set(v->features,"wave_synth_func",uttfunc_val(&no_wave_synth));

return v;
}
0

Другие решения

Я исправил это, это была проблема с включаемыми файлами. Спасибо

0

По вопросам рекламы [email protected]