Недавно я пытался использовать систему преобразования текста в речь Flite (2.0) в моем проекте, и когда я звоню flite_text_to_speech()
программа завершается с этим сообщением:
VAL: tried to access lexicon in -1 type val
Я сделал небольшую тестовую программу на основе кода, найденного в документации Flite. Вот:
/* File: test.cpp */
#include <flite.h>
int main(int argc, char **argv)
{
cst_voice *v;
flite_init();
v = new_voice();
flite_text_to_speech("This is a test",v,"play");
return 0;
}
Это компилируется чисто с:
g++ -Wall -g -o flite_test test.cpp -I/usr/local/include/flite -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex -lflite -lasound -lm
Однако, когда я запускаю ./flite-test, я все равно получаю ту же ошибку:
VAL: tried to access lexicon in -1 type val
Это ошибка в Flite или я делаю что-то глупое здесь? Я знаю, что Flite 2.0 относительно молод, поэтому я думаю об использовании более старой версии, но я бы предпочел использовать последнюю. Работает ли мой тестовый код на кого-либо, и если да, что я должен делать по-другому?
Обновление: я только что попробовал это с Flite 1.4, и то же самое происходит.
Я изучал flite
Исходник утилиты, и я смог решить свои проблемы, скопировав большую часть из ее основной функции в flite_main.c.