我使用的服务是:离线TTS语音合成
调用的接口是:SpeechSynthesizer
参数设置情况:
mSpeechSynthesizer = SpeechSynthesizer.getInstance();
mSpeechSynthesizer.setContext(WSApplication.getApp());
mSpeechSynthesizer.setSpeechSynthesizerListener(this);
// 文本模型文件路径 (离线引擎使用)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE, mSampleDirPath
+ "/" + TEXT_MODEL_NAME);
// 声学模型文件路径 (离线引擎使用)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE, mSampleDirPath
+ "/" + SPEECH_FEMALE_MODEL_NAME);
// 本地授权文件路径,如未设置将使用默认路径
// 请替换为语音开发者平台上注册应用得到的App ID (离线授权)
mSpeechSynthesizer.setAppId("xxxxx");
// 请替换为语音开发者平台注册应用得到的apikey和secretkey (在线授权)
// mSpeechSynthesizer
// .setApiKey("xxxxxxxxxxxxxxxx",
// "xxxxxxxxxxxxxxxxxxxxxx");
// 发音人(在线引擎),可用参数为0,1,2,3。。。(服务器端会动态增加,各值含义参考文档,以文档说明为准。0--普通女声,1--普通男声,2
// --特别男声,3--情感男声。。。)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");
// 音量
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "9");
// 设置播放音量衰减(0-1.0,0为静音)
mSpeechSynthesizer.setStereoVolume(1.0f, 1.0f);
// 设置Mix模式的合成策略
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE,
SpeechSynthesizer.MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFI);
//合成速度[0,2]
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOCODER_OPTIM_LEVEL, "2");
// 授权检测接口(只是通过AuthInfo进行检验授权是否成功。)
// AuthInfo接口用于测试开发者是否成功申请了在线或者离线授权,如果测试授权成功了,可以删除AuthInfo
// 部分的代码(该接口首次验证时比较耗时),不会影响正常使用(合成使用时SDK内部会自动验证授权)
AuthInfo authInfo = mSpeechSynthesizer.auth(TtsMode.MIX);
if (authInfo.isSuccess())
{// 判断是否完成了认证
setAuthed(true);
// 初始化tts
isAuth = true;
}
else
{
Logger.e("BaiduTTS_授权失败");
isAuth = false;
}
mSpeechSynthesizer.initTts(TtsMode.MIX);
// 加载离线英文资源(提供离线英文合成功能)
int result = mSpeechSynthesizer.loadEnglishModel(mSampleDirPath + "/"
+ ENGLISH_TEXT_MODEL_NAME, mSampleDirPath + "/" + ENGLISH_SPEECH_FEMALE_MODEL_NAME);
开发平台和机型:5.x
SDK版本号:2.3.0
代码或日志截图(上传截图能帮助您更快解决问题):
复现步骤、现象及其他描述:重复播放可能会出现
可能是网络问题导致在线与离线切换,可以购买离线语音合成版本,不会有切换发音人的问题。
我遇到,切换发音人失败之后,继续往下批量播放,偶现同一段落下,一会男音,一会女音。你们遇到过吗
zheangrybear:
我使用的服务是:离线TTS语音合成
调用的接口是:SpeechSynthesizer
参数设置情况:
mSpeechSynthesizer = SpeechSynthesizer.getInstance();
mSpeechSynthesizer.setContext(WSApplication.getApp());
mSpeechSynthesizer.setSpeechSynthesizerListener(this);
// 文本模型文件路径 (离线引擎使用)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE, mSampleDirPath
+ "/" + TEXT_MODEL_NAME);
// 声学模型文件路径 (离线引擎使用)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE, mSampleDirPath
+ "/" + SPEECH_FEMALE_MODEL_NAME);
// 本地授权文件路径,如未设置将使用默认路径
// 请替换为语音开发者平台上注册应用得到的App ID (离线授权)
mSpeechSynthesizer.setAppId("xxxxx");
// 请替换为语音开发者平台注册应用得到的apikey和secretkey (在线授权)
// mSpeechSynthesizer
// .setApiKey("xxxxxxxxxxxxxxxx",
// "xxxxxxxxxxxxxxxxxxxxxx");
// 发音人(在线引擎),可用参数为0,1,2,3。。。(服务器端会动态增加,各值含义参考文档,以文档说明为准。0--普通女声,1--普通男声,2
// --特别男声,3--情感男声。。。)
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");
// 音量
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "9");
// 设置播放音量衰减(0-1.0,0为静音)
mSpeechSynthesizer.setStereoVolume(1.0f, 1.0f);
// 设置Mix模式的合成策略
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE,
SpeechSynthesizer.MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFI);
//合成速度[0,2]
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOCODER_OPTIM_LEVEL, "2");
// 授权检测接口(只是通过AuthInfo进行检验授权是否成功。)
// AuthInfo接口用于测试开发者是否成功申请了在线或者离线授权,如果测试授权成功了,可以删除AuthInfo
// 部分的代码(该接口首次验证时比较耗时),不会影响正常使用(合成使用时SDK内部会自动验证授权)
AuthInfo authInfo = mSpeechSynthesizer.auth(TtsMode.MIX);
if (authInfo.isSuccess())
{// 判断是否完成了认证
setAuthed(true);
// 初始化tts
isAuth = true;
}
else
{
Logger.e("BaiduTTS_授权失败");
isAuth = false;
}
mSpeechSynthesizer.initTts(TtsMode.MIX);
// 加载离线英文资源(提供离线英文合成功能)
int result = mSpeechSynthesizer.loadEnglishModel(mSampleDirPath + "/"
+ ENGLISH_TEXT_MODEL_NAME, mSampleDirPath + "/" + ENGLISH_SPEECH_FEMALE_MODEL_NAME);
开发平台和机型:5.x
SDK版本号:2.3.0
代码或日志截图(上传截图能帮助您更快解决问题):
复现步骤、现象及其他描述:重复播放可能会出现
回复zheangrybear:请测试下我们的官方demo,写明下何时会发生,如何复现。并提供相关log,可以的话,麻烦录制下视频。可以QQ群中反馈