我想将字符串传递给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"
但是没有再次发声!
答案 0 :(得分:2)
好的,试试这个你需要先建立&amp;安装libpcaudio。
然后你配置&amp;建立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技巧,并且必须连续多次运行,直到最后它没有报告更多错误。
所有这些都表明项目维护不是很好。我一直看到几个段错误。
最后成功完成
sudo make install
您的测试程序最终会运行并发出预期的声音。