哪一个更好?在C ++代码中使用System()函数还是使用源代码?

时间:2017-11-26 12:22:33

标签: c++ function terminal system espeak

很抱歉,如果问题标题不好,但我想解释一下我的意思:

据我所知,我可以使用system()函数在我的C ++代码中使用Linux终端的命令。例如system("aplay sound.wav");。我不知道我可以写这样的所有Linux命令,但是aplay可以工作。

所以,我的问题在这里:我想在我的C ++程序中使用espeak。我喜欢espeak读取我通过它的每个字符串(类似于aplay在上面的代码中所做的但是尊重“弦”)。用system()函数调用它是否更好?或者最好在我的C ++代码中编写这样的代码,并在我想要读取新字符串时更改char* text?:

#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[] = {"English"};


char *text = {"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;
}

哪一个更快?

0 个答案:

没有答案