700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android studio 集成科大讯飞TTS语音合成

android studio 集成科大讯飞TTS语音合成

时间:2021-09-06 23:52:22

相关推荐

android studio 集成科大讯飞TTS语音合成

第一步:新建工程 例如 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都复制进去就可以了,如若其他问题应做对应的修改

至此,在线语音已经可以使用啦

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。