Почему моя программа espeak-ng ничего не говорит?

Я хочу передать строку в espeak-ng, и она читает мою строку по звуку!

Я искал и нашел эту программу и сделал небольшую модификацию, чтобы изменить ее на английский с итальянского (под комментариями), но не работал:

#include <string.h>
#include <malloc.h>
#include <espeak-ng/speak_lib.h>espeak_POSITION_TYPE position_type;
espeak_AUDIO_OUTPUT output;
char *path=NULL;
int Buflength = 500, Options=0;
void* user_data;
t_espeak_callback *SynthCallback;
espeak_PARAMETER Parm;//char Voice[] = {"lt+klatt2"};
char Voice[] = {"English"};

char text[30] = {"this is a english test"};
unsigned int Size,position=0, end_position=0, flags=espeakCHARS_AUTO, *unique_identifier;int main(int argc, char* argv[] )
{
output = AUDIO_OUTPUT_PLAYBACK;
int I, Run = 1, L;
espeak_Initialize(output, Buflength, path, Options );
espeak_SetVoiceByName(Voice);
//const char *langNativeString = "lt"; //Default to US English
const char *langNativeString = "en"; //Default to US English
espeak_VOICE voice;
memset(&voice, 0, sizeof(espeak_VOICE)); // Zero out the voice first
voice.languages = langNativeString;
//voice.name = "klatt";
voice.name = "US";
voice.variant = 2;
voice.gender = 1;
espeak_SetVoiceByProperties(&voice);
Size = strlen(text)+1;
printf("Saying  '%s'",text);
espeak_Synth( text, Size, position, position_type, end_position, flags,
unique_identifier, user_data );
espeak_Synchronize( );
printf("\n:Done\n");
return 0;
}

В чем проблема?

Компилируется без ошибок и делает speaks как исполняемый файл, но когда я пытаюсь ./speaks результат:

Saying  'this is a english test'
:Done

Без голоса!

РЕДАКТИРОВАТЬ: я задал вопрос в gitub и кто-то сказал:

Параметр пути espeak_Initialize должен указывать на
каталог espeak-ng-data или его родительский каталог. Или вы
можно установить переменную среды ESPEAK_DATA_PATH, чтобы указать на это
каталог.

Так что я добавил эту строку ESPEAK_DATA_PATH=/usr/local/share/espeak-ng-data в /etc/environment файл, но ничего не произошло!

Также я попытался изменить переменную пути кода на это (поскольку я знаю, что адрес является истинным) char *path="/usr/local/share/espeak-ng-data" но опять нет голоса!

2

Решение

Хорошо, пробуя это вам нужно сначала построить & установить libpcaudio.

Затем вы настраиваете & построить espeak.

Далее при запуске вам может потребоваться указать пути к библиотекам:

LD_LIBRARY_PATH=/tmp/espeak-ng/src/.libs/:/usr/local/lib ./sotest

Это тогда уведомило меня о проблеме:

Error processing file '/usr/local/share/espeak-ng-data/phontab': No such file or directory.

Это говорит мне о том, что libespeak-ng хочет быть установленным из-за жестко закодированных путей (конечно, сам путь можно изменить, используя ./configure --prefix= так далее.)

Я лично обнаружил, что должен был выполнить трюк LD_LIBRARY_PATH во время построения всех библиотечных артефактов, и мне приходилось многократно запускать make до тех пор, пока, наконец, не появилось больше ошибок.

Все это говорит о том, что обслуживание проекта не очень хорошее. Я видел несколько segfaults даже по пути.

После, наконец, успешно делать

sudo make install

Ваша тестовая программа наконец запускается и издает ожидаемый звук.

2

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

Других решений пока нет …

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