安卓TTS语音合成经验分享.doc

上传人:白大夫 文档编号:3432493 上传时间:2019-08-25 格式:DOC 页数:4 大小:21.50KB
返回 下载 相关 举报
安卓TTS语音合成经验分享.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《安卓TTS语音合成经验分享.doc》由会员分享,可在线阅读,更多相关《安卓TTS语音合成经验分享.doc(4页珍藏版)》请在三一文库上搜索。

1、安卓TTS语音合成经验分享通过一番调研,发现国内上市公司科大讯飞的语音+SDK包口碑好,效果好,集成也方便。语音+支持离线应用,这是最主要的。集成过程走起:1、下载DEMO程序。DEMO程序就包含了全部需要的资源。2、SDK集成关键代码:(1)SpeechSynthesizer 是 jar包里封装的语音合成对象她是我们的女主角。/ 语音合成对象private SpeechSynthesizer mTts;public staTIc String SPEAKER = speaker;从demo照抄实例化mTts的代码。调用方式应该是jar里封装好的方法外包调用,暂时不关注,先关注一下怎样用起来。

2、private void checkVoiceServiceIsInstalled()/ 检测语音引擎是否可用,如果没有安装自动安装if (!checkSpeechServiceInstall()String assetsApk = SpeechService.apk;if (processInstall(this, assetsApk)SpeechUTIlity.getUTIlity(this).setAppid(53c776aa);return;/ 引擎初始化SpeechUTIlity.getUtility(this).setAppid(53c776aa);mTts = new Speec

3、hSynthesizer(this, mTtsInitListener);(2)检查语音加引擎是否安装/* * 执行本地安装 语音+ * * param context * param assetsApk * return */private boolean processInstall(Context context, String assetsApk)try Thread.sleep(30000); catch (InterruptedException e) e.printStackTrace();/ 本地安装方式if (!ApkInstaller.installFromAssets(c

4、ontext, assetsApk)Toast.makeText(activity_main.this, 安装语音引擎失败!, Toast.LENGTH_SHORT).show();return false;return true;/* * 检测科大讯飞语音+引擎是否安装 * return */private boolean checkSpeechServiceInstall() String packageName = com.iflytek.speechcloud;Listfor (int i = 0; i packages.size(); i+) PackageInfo packageI

5、nfo = packages.get(i);if (packageInfo.packageName.equals(packageName) return true; else continue;return false;/* * 语音合成的参数设置 * param param * return */private void setParam() mTts.setParameter(SpeechConstant.ENGINE_TYPE,sp.getString(engine_preference, local);if (sp.getString(engine_preference, local)

6、.equalsIgnoreCase(local)mTts.setParameter(SpeechSynthesizer.VOICE_NAME,sp.getString(role_cn_preference, xiaoyan);else mTts.setParameter(SpeechSynthesizer.VOICE_NAME,sp.getString(role_cn_preference, xiaoyan);mTts.setParameter(SpeechSynthesizer.SPEED,sp.getString(speed_preference, 50);mTts.setParamete

7、r(SpeechSynthesizer.PITCH,sp.getString(pitch_preference, 50);mTts.setParameter(SpeechSynthesizer.VOLUME,sp.getString(volume_preference, 50);(3)初期化监听,我在ErrorCode.SUCCESS初始化成功后显示语音引擎可用的状态,否则红叉显示不可以状态。合成回调监听,这里为了避免异步方式调用,听不清楚,使用了局部变量记录当前的语音播报状态isPlaySound。引擎支持异步调用,如果不控制会出现,一句话没说完,其他调用又在发起请求的情况,使用了队列来控制

8、播报的顺序。/* * 初期化监听。 */private InitListener mTtsInitListener = new InitListener() Overridepublic void onInit(ISpeechModule arg0, int code)if (code = ErrorCode.SUCCESS) btn_voiceDemo.setBackgroundResource(R.drawable.voice_enable_style);else btn_voiceDemo.setBackgroundResource(R.drawable.voice_disable_st

9、yle);/* * 合成回调监听。*/private SynthesizerListener mTtsListener = new SynthesizerListener.Stub()Overridepublic void onBufferProgress(int progress) throws RemoteException Overridepublic void onCompleted(int code)throws RemoteException activity_main.this.runOnUiThread(new Runnable() Overridepublic void ru

10、n() int pos = voiceQueueList.indexOf(getCurrentVoiceEntity();if (pos != -1) currentVoiceEntity.setVoicePlayNum(currentVoiceEntity.getVoicePlayNum() + 1);voiceQueueList.remove(pos);if (currentVoiceEntity.getVoicePlayNum() Integer.parseInt(sp.getString(voice_play_timers, 0) currentVoiceEntity.setIsVoi

11、cePlayed(true);new ExecVoiceStatusChangeBiz().execute(String.valueOf(getCurrentVoiceEntity().getKeyId();voiceQueueList.add(currentVoiceEntity);loadVoiceTaskList(););isPlaySound = false;Overridepublic void onSpeakBegin()throws RemoteException isPlaySound = true;Overridepublic void onSpeakPaused()throws RemoteException Overridepublic void onSpeakProgress(int progress)throws RemoteException Overridepublic void onSpeakResumed()throws RemoteException ;/* * 窗体销毁时释放语音服务资源 */Overrideprotected void onDestroy() super.onDestroy();mTts.stopSpeaking(mTtsListener);mTts.destory();3、完成。截图纪念一下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1