gpt4 book ai didi

c++ - 为什么我的 espeak-ng 程序什么都不说?

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:34 26 4
gpt4 key购买 nike

我想将一个字符串传递给 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 中问了我的问题,有人说:

The path parameter of espeak_Initialize needs to point to the espeak-ng-data directory, or its parent directory. Alternatively, you can set the ESPEAK_DATA_PATH environment variable to point to that directory.

所以我确实将这一行 ESPEAK_DATA_PATH=/usr/local/share/espeak-ng-data 添加到 /etc/environment 文件,但没有任何反应!

我还尝试将代码的路径变量更改为此(因为我知道地址是真实的)char *path="/usr/local/share/espeak-ng-data"但是又没有声音了!

最佳答案

好的,尝试这个你需要先构建和安装 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 直到最后它不再报告更多错误。

All this indicates that project maintenance is not very good. I've seen several segfaults even along the way.

终于成功了之后

sudo make install

您的测试程序最终运行并发出预期的声音。

关于c++ - 为什么我的 espeak-ng 程序什么都不说?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com