Android 科大讯飞语音集成,文字转语音

前言:

记录一下科大讯飞的文字转语音功能的sdk的集成过程,希望能够帮助到大家。

1. 登录官网,应用注册。

讯飞开放平台,进行简单的开发者注册。进入个人中心,注册应用。
这里写图片描述
注册完成后,我们可以看到自己的appid。选择自己要开通的功能,然后下载sdk。

2. 项目集成

官网下载的代码包含了lib,document,sample,(没有AS版本真的有点low)
将lib的so文件和jar放入你的项目中,

这里写图片描述

查看doc中的文档,

这里写图片描述

主要是箭头所指那个,有详细的介绍。
文字转语音的demo代码主要是:

这里写图片描述

3.项目代码

看看我的项目中是如何集成该代码的。

1.权限(自己看)

2.appid注册。
在application的初始化中进行注册(千万不能忘记)

SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID +"=appid");

3.工具类

public class VoiceUtils {private static VoiceUtils mVoice;public static VoiceUtils getInstance(){synchronized (VoiceUtils.class){if(null==mVoice){mVoice=new VoiceUtils();}return mVoice;}}// 语音合成对象private SpeechSynthesizer mTts;// 默认发音人private String voicer = "xiaoyan";//初始化监听器private InitListener Listener;//播放监听器private SynthesizerListener mSynthesizerListener;public void initmTts(Context context, final String msg){if(null==Listener){Listener=new InitListener() {@Overridepublic void onInit(int code) {if (code != ErrorCode.SUCCESS) {} else {// 初始化成功,之后可以调用startSpeaking方法// 注:有的开发者在onCreate方法中创建完合成对象之后马上就调用startSpeaking进行合成,// 正确的做法是将onCreate中的startSpeaking调用移至这里mTts.startSpeaking(msg,mSynthesizerListener);}}};}if(null==mSynthesizerListener){mSynthesizerListener= new SynthesizerListener() {@Overridepublic void onSpeakBegin() {}@Overridepublic void onBufferProgress(int i, int i1, int i2, String s) {}@Overridepublic void onSpeakPaused() {}@Overridepublic void onSpeakResumed() {}@Overridepublic void onSpeakProgress(int i, int i1, int i2) {}@Overridepublic void onCompleted(SpeechError speechError) {}@Overridepublic void onEvent(int i, int i1, int i2, Bundle bundle) {}};}if(null==mTts){mTts=SpeechSynthesizer.createSynthesizer(context, Listener);mTts.setParameter(SpeechConstant.VOICE_NAME,voicer);mTts.setParameter(SpeechConstant.SPEED,"50");mTts.setParameter(SpeechConstant.VOLUME,"80");mTts.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_CLOUD);}else {mTts.startSpeaking(msg,mSynthesizerListener);}}
}

单例很重要,不然只有第一次有用,mTts.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_CLOUD);不能写成
mTts.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_LOCAL);会出错。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部