【发布时间】:2018-05-25 17:20:51
【问题描述】:
我在网上找到了这段代码:
#include <string.h>
#include <malloc.h>
#include <espeak/speak_lib.h>
espeak_POSITION_TYPE position_type;
espeak_AUDIO_OUTPUT output;
char *path=NULL;
int Buflength = 1000, Options=0;
void* user_data;
t_espeak_callback *SynthCallback;
espeak_PARAMETER Parm;
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 = "en"; //Default to US English
espeak_VOICE voice;
memset(&voice, 0, sizeof(espeak_VOICE)); // Zero out the voice first
voice.languages = langNativeString;
voice.name = "US";
voice.variant = 2;
voice.gender = 1;
espeak_SetVoiceByProperties(&voice);
Size = strlen(text)+1;
espeak_Synth( text, Size, position, position_type, end_position, flags,
unique_identifier, user_data );
espeak_Synchronize( );
return 0;
}
我只希望espeak 在我的程序中读取我的字符串,上面的代码可以做到,但我想知道,是否所有这些代码都需要用于此目的? (我的意思是可以简化吗?)
***我还想知道有没有办法将espeak 用作系统函数?我的意思是system("espeak "something" ");?
【问题讨论】:
-
看起来像一个非常直接的例子?您必须阅读有关这些功能的功能的手册。此外,C 语言中没有名为 malloc.h 的头文件。
-
它还能简单多少?对我来说看起来很小。您似乎完全误解了
system()的作用。如果您可以从命令 shell 运行它,您可以将它作为system()参数传递 - 就这么简单。必须修改您的示例以处理传入argv[1]而不是text的字符串。