我使用的服务是:离线语音合成
开发平台和机型:华为荣耀8 Android Studio 系统为Android 7 EMUI 5.0
SDK版本号:25
复现步骤、现象及其他描述:
离线状态不能使用语音合成功能,wifi或者移动网络则可以使用.检查发现.bat文件没能复制到手机内存中,手机未装SD卡.
代码或日志截图(上传截图能帮助您更快解决问题):
文件路径为
String filePath = Environment.getExternalStorageDirectory().getPath();mDirPath = filePath + "/baiduTTS";//路径
权限都已经添加在AndroidManifest.xml文件中
复制文件:
private void copyFromAssetsToSdcard(boolean isCover, String source, String dest) {File file = new File(dest);
if (isCover || (!isCover && !file.exists())) {
InputStream is = null;
FileOutputStream fos = null;
try {
is = getResources().getAssets().open(source);
String path = dest;
fos = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int size = 0;
while ((size = is.read(buffer, 0, 1024)) >= 0) {
fos.write(buffer, 0, size);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
离线状态不能使用语音合成功能,wifi或者移动网络则可以使用.发现.bat文件没能复制到手机内存中,手机未装SD卡.
一开始的时候文件夹都不能创建,后来使用
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);申请了权限,结果创建了文件夹却不能将文件复制过去.
下面是配置:
private void startTTS() {mSpeechSynthesizer = SpeechSynthesizer.getInstance();
mSpeechSynthesizer.setContext(this);
mSpeechSynthesizer.setSpeechSynthesizerListener(this);
mSpeechSynthesizer.setApiKey(API_KEY, SECRET_KEY);
mSpeechSynthesizer.setAppId(APP_ID);
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE, mDirPath + "/"
+ CH_TEXT);
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE, mDirPath + "/"
+ CH_FEMALE);
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE, SpeechSynthesizer.MIX_MODE_HIGH_SPEED_SYNTHESIZE);
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOCODER_OPTIM_LEVEL, "2");
AuthInfo authInfo = mSpeechSynthesizer.auth(TtsMode.MIX);
if (authInfo.isSuccess()) {
mSpeechSynthesizer.initTts(TtsMode.MIX);
mSpeechSynthesizer.speak("百度语音合成示例程序正在运行");
} else {
}
mSpeechSynthesizer.initTts(TtsMode.MIX);
mSpeechSynthesizer.loadEnglishModel(mDirPath + "/" + EN_TEXT, mDirPath
+ "/" + EN_FEMALE);
}
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
感谢您使用百度语音
已经解决
assets目录的位置错了,应该放在main下面.