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

Android科大讯飞语音合成

时间:2021-05-11 20:25:15

相关推荐

Android科大讯飞语音合成

前奏和上篇博客一样,不写了,哎,,我好懒,好懒,懒,,,,

还是代码来的实在。

为了怕忘记这个,还是要在写一遍;

//初始化sdk,appid是你创建应用时,科大讯飞给的唯一的idSpeechUtility.createUtility(MyApplication.this,"appid=5875cd49");

代码中的运用

//语音合成对象private SpeechSynthesizer mTts;private String voicer="xiaoyan";//缓冲进度private int mPercentForBuffering = 0;// 播放进度private int mPercentForPlaying = 0;// 引擎类型private String mEngineType = SpeechConstant.TYPE_CLOUD;private Toast mToast

初始化

//初始化合成对象mTts=SpeechSynthesizer.createSynthesizer(getActivity(), mTtsInitListener);mToast=Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT);

初始化监听

/*** 初始化监听*/private InitListener mTtsInitListener=new InitListener() {@Overridepublic void onInit(int code) {// TODO Auto-generated method stubif(code!=ErrorCode.SUCCESS){Toast.makeText(getActivity(), code, 0).show();}else{ setParam();code=mTts.startSpeaking(text, mTtsListener);if (code != ErrorCode.SUCCESS) {if(code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED){//未安装则跳转到提示安装页面// mInstaller.install();}else {showTip("语音合成失败,错误码: " + code); }}}}};/*** 合成回调监听*/private SynthesizerListener mTtsListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {showTip("开始播放");}@Overridepublic void onSpeakPaused() {showTip("暂停播放");}@Overridepublic void onSpeakResumed() {showTip("继续播放");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos,String info) {// 合成进度mPercentForBuffering = percent;showTip(String.format(getString(R.string.tts_toast_format),mPercentForBuffering, mPercentForPlaying));}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度mPercentForPlaying = percent;showTip(String.format(getString(R.string.tts_toast_format),mPercentForBuffering, mPercentForPlaying));}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {showTip("播放完成");} else if (error != null) {showTip(error.getPlainDescription(true));}}@Overridepublic void onEvent(int eventType, int arg1, int arg2, Bundle obj) {// 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因// 若使用本地能力,会话id为null// if (SpeechEvent.EVENT_SESSION_ID == eventType) {//String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);//Log.d(TAG, "session id =" + sid);// }}};private void showTip(final String str) {mToast.setText(str);mToast.show();}

设置参数

/*** 设置参数*/private void setParam(){// 清空参数mTts.setParameter(SpeechConstant.PARAMS, null);// 根据合成引擎设置相应参数if(mEngineType.equals(SpeechConstant.TYPE_CLOUD)) {mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 设置在线合成发音人mTts.setParameter(SpeechConstant.VOICE_NAME, voicer);//设置合成语速mTts.setParameter(SpeechConstant.SPEED, "30");//mSharedPreferences.getString("speed_preference", "50")//设置合成音调mTts.setParameter(SpeechConstant.PITCH, "50");//mSharedPreferences.getString("pitch_preference", "50")//设置合成音量mTts.setParameter(SpeechConstant.VOLUME, "50");//mSharedPreferences.getString("volume_preference", "50")}else {mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);// 设置本地合成发音人 voicer为空,默认通过语记界面指定发音人。mTts.setParameter(SpeechConstant.VOICE_NAME, "");/*** TODO 本地合成不设置语速、音调、音量,默认使用语记设置* 开发者如需自定义参数,请参考在线合成参数设置*/}//设置播放器音频流类型mTts.setParameter(SpeechConstant.STREAM_TYPE,"3");// mSharedPreferences.getString("stream_preference", "3")// 设置播放合成音频打断音乐播放,默认为truemTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true");// 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限// 注:AUDIO_FORMAT参数语记需要更新版本才能生效mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory()+"/msc/tts.wav");}

好累,不想动,,

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