gpt4 book ai didi

c - 在我们的 C/C++ 程序中使用 espeak 需要哪些行?

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:33 25 4
gpt4 key购买 nike

我在网上找到这段代码:

#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""); ?

最佳答案

eSpeak 本身的使用似乎很少 - 您需要阅读相关文档。有一些小的 C 代码简化是可能的,但也许不值得付出努力:

memset() 是不必要的。该结构可以初始化为零,因此:

espeak_VOICE voice = {0} ;

如果您这样声明 text:

char text[] = "this is a English test";

那么你就可以避免使用strlen(),将Size替换为sizeof(text)

变量IRunL 未使用,可以删除。

为了能够在命令行上将文本作为字符串传递,从而能够发出 system( "espeak\"Say Something\"") ; 例如,您只需要将 argv[1] 传递给 espeak_Synth() 而不是 text (但您需要恢复 strlen() 调用以获取大小。

关于c - 在我们的 C/C++ 程序中使用 espeak 需要哪些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47765577/

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