1

我的程序中有一个 for 循环,其中有一个对espeakengin 的调用:

文本由另一个应用程序给出,并且在每个循环周期中都不同,我正在尝试获取此文本,将其传递给 espeak,它表示文本,其余代码将运行(打印给定的文本例子)。

但问题是,当 espeak 说话时,其余代码不会等到它结束说话,我正在寻找一种方法暂停程序直到 espeak 结束,然后其余代码将执行,但是不知道怎么做?

            #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"};
            unsigned int Size,position=0, end_position=0, flags=espeakCHARS_AUTO, *unique_identifier;

        espeak_init()
        {
                output = AUDIO_OUTPUT_PLAYBACK;
                espeak_Initialize(output, Buflength, path, Options ); 
                espeak_SetVoiceByName(Voice);
                const char *langNativeString = "en";
                espeak_VOICE voice = {0};
              //  memset(&voice, 0, sizeof(espeak_VOICE));
                    voice.languages = langNativeString;
                    voice.name = "US";
                    voice.variant = 2;
                    voice.gender = 1;
                    espeak_SetVoiceByProperties(&voice);
                Size = strlen(text)+1;    
        } 

int main()
{   
       for(;;)
        {
            ...
            espeak_Synth( text, Size, position, position_type, end_position, flags,unique_identifier, user_data );
            espeak_Synchronize( );
            // REST OF THE CODE...PRINTING THE WORLD THAT ESPEAK SAID FOR EXAMPLE
            printf("\n %s \n", text);
            ...

        }
}
4

0 回答 0