我试着用espeak做一些功能,但是缺少一些参数(我不知道),并且在Linux上处理代码块,下一段代码运行良好,可以读取阿拉伯文本。
`#include<string.h>
#include<malloc.h>
#include</usr/local/include/espeak/speak_lib.h>
int main(int argc, char* argv[] )
{
char text[] = {"الله لطيف "};
espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0 );
espeak_SetVoiceByName("ar");
unsigned int size = 0;
while(text[size]!='\0') size++;
unsigned int flags=espeakCHARS_AUTO | espeakENDPAUSE;
espeak_Synth( text, size+1, 0,POS_CHARACTER,0, flags, NULL, NULL );
espeak_Synchronize( );
return 0;
}`现在你能帮我们从Espeak找到这些参数吗
1.返回生成的波形以将其存储在变量中的函数。
2.Frequency
3.频道数目
4.样本量
5.我们储存样本的缓冲器
6.样本数目
发布于 2016-05-16 10:35:09
如果找不到合适的示例,则必须阅读头文件中的文档。还没有使用过它,但它看起来很容易理解:
lib.h
当你打电话给espeak_Initialize时,你通过了AUDIO_OUTPUT_PLAYBACK。您将需要传入AUDIO_OUTPUT_RETRIEVAL,然后似乎必须使用自己创建的函数调用espeak_SetSynthCallback来接受示例。
您的修改后的代码看起来会像这样(未经测试)
#include <string.h>
#include <vector>
#include </usr/local/include/espeak/speak_lib.h>
int samplerate; // determined by espeak, will be in Hertz (Hz)
const int buflength = 200; // passed to espeak, in milliseconds (ms)
std::vector<short> sounddata;
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) {
if (wav == NULL)
return 1; // NULL means done.
/* process your samples here, let's just gather them */
sounddata.insert(sounddata.end(), wav, wav + numsamples);
return 0; // 0 continues synthesis, 1 aborts
}
int main(int argc, char* argv[] ) {
char text[] = {"الله لطيف "};
samplerate = espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL, buflength, NULL, 0);
espeak_SetSynthCallback(&SynthCallback);
espeak_SetVoiceByName("ar");
unsigned int flags=espeakCHARS_AUTO | espeakENDPAUSE;
size_t size = strlen(text);
espeak_Synth(text, size + 1, 0, POS_CHARACTER, 0, flags, NULL, NULL);
espeak_Synchronize();
/* in theory sounddata holds your samples now... */
return 0;
}所以对于你的问题:
buflength-long位以进行处理。如果要将数据积累到一个更大的缓冲区中,我已经向您展示了如何自己进行此操作。samplerate以上。shorts。这些是有符号整数,2个字节,范围为-32,768到32,767。可能它使用了整个范围,看起来并不是可配置的,但是您可以测试并查看您得到的结果。SynthCallback都会得到可能不同数量的样本。你可能会得到0的数字,这可能并不意味着它是在结尾。https://stackoverflow.com/questions/37250305
复制相似问题