【问题标题】:Which lines are necessary to use espeak in our C/C++ program?在我们的 C/C++ 程序中使用 espeak 需要哪些行?
【发布时间】: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 的字符串。

标签: c embedded system espeak


【解决方案1】:

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() 调用以获取大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多