1、把科大讯飞提供的含有API的SDK静态库InterSound4用语句
#pragma comment(lib,"InterSound4.lib")导入项目中,默认在一级编译目录中可识别。
或者通过设置项目属性方式导入。
2、将ReadResCB,InputCB,OutputCB,WatchCB,ProgressCB,ParamChangeCB回调函数
作为类变量,用static限制成内部函数,加快加载的速度。
3、为了加快速度,先在初始化中加载对象,设置参数等,下次调用直接合成。
4、设置输入文本代码页为GBK方式。
ivTTS_SetParam(hTTS, ivTTS_PARAM_INPUT_CODEPAGE, ivTTS_CODEPAGE_GBK);
5、在逆初始化中加入资源的释放,原科大讯飞提供存在内存泄漏现象
if(tResPackDesc.pCBParam)//增加,防止内存溢出
fclose((FILE*)tResPackDesc.pCBParam);
6、合成的时候直接采用块式合成
fpOutPCM = fopen("//SDMEM//Monitor//MyTTS.pcm", "wb");
fpOutPhone = fopen("//SDMEM//Monitor//MyTTSText.txt", "wb");
tcbparm.pParam1st = NULL;//不采用流式合成
tcbparm.pParam2nd = fpOutPCM;
tcbparm.pParam3rd = fpOutPhone;
/************************************************************************
块式合成
************************************************************************/
/* 设置发音人为 YANPING */
ivTTS_SetParam(hTTS, ivTTS_PARAM_ROLE, ivTTS_ROLE_YANPING);
char *msg ="欢迎你";
int len = strlen(msg);
ivTTS_SynthText(hTTS, (ivStr)msg, len);
if ( fpOutPCM )
{
fclose(fpOutPCM);
fpOutPCM = NULL;
}
if ( fpOutPhone )
{
fclose(fpOutPhone);
fpOutPhone = NULL;
}