第一步:新建工程 例如 TestTTS,将在线语音合成放入module中,新建module 如lib-tts
第二步,到科大讯飞 创建新应用之后添加新服务选择在线语音合成,再之后下载对应的SDK,下载完解压
第三步:将解压后的文件如下图放入对应位置
对应lib-tts中的build.gradle进行如下配置
app 中对应的build.gradle 中进行如下配置
第四步:在app 中 AndroidManifest.xml进行权限和对应的在线语音合成appid配置
在MyApplication 进行初始化
第五步:使用
private void initVoice(){//1.创建SpeechSynthesizer对象, 第二个参数:本地合成时传InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(MainActivity.this, null);/**2.合成参数设置,详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类*/// 清空参数mTts.setParameter(SpeechConstant.PARAMS, null);mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速//设置合成音调mTts.setParameter(SpeechConstant.PITCH, "50");mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");// 设置播放合成音频打断音乐播放,默认为truemTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true");// 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限// 注:AUDIO_FORMAT参数语记需要更新版本才能生效// mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");// boolean isSuccess = mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/tts2.wav");// Toast.makeText(MainActivity.this, "语音合成 保存音频到本地:\n" + isSuccess, Toast.LENGTH_LONG).show();//3.开始合成int code = mTts.startSpeaking("在这里放置需要进行合成的文本", mSynListener);if (code != ErrorCode.SUCCESS) {if (code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED) {//上面的语音配置对象为初始化时:Toast.makeText(MainActivity.this, "语音组件未安装", Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this, "语音合成失败,错误码: " + code, Toast.LENGTH_LONG).show();}}}//合成监听器private SynthesizerListener mSynListener = new SynthesizerListener() {//会话结束回调接口,没有错误时,error为nullpublic void onCompleted(SpeechError error) {}//缓冲进度回调//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。public void onBufferProgress(int percent, int beginPos, int endPos, String info) {}//开始播放public void onSpeakBegin() {}//暂停播放public void onSpeakPaused() {}//播放进度回调//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.public void onSpeakProgress(int percent, int beginPos, int endPos) {}//恢复播放回调接口public void onSpeakResumed() {}//会话事件回调接口public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {}};
一般demo里以上就可以了,但是我集成到我的项目中出现5.0 手机初始化可以,8.0手机不行的问题,我根据科大讯飞提供的信息,将里面的.so都复制进去就可以了,如若其他问题应做对应的修改
至此,在线语音已经可以使用啦