第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 语音集成 接入科大讯飞的语音sdk

语音集成 接入科大讯飞的语音sdk

时间:2020-03-11 09:55:14

相关推荐

语音集成 接入科大讯飞的语音sdk

接触了语音合成的第三方讯飞,就导入时出现的问题特记录说明:

首先我们来说一下讯飞接入的流程,大致很简单,一般的第三方接入过程:

1、将开发工具包中libs目录下的Msc.jar和armeabi复制到Android工程的libs目录(如果工程无libs目录,请自行创建)中,详细图片官方网站有提供,这里注明一个地方:就是在eclipse中药添加依赖,选择build添加jar到项目。在AS中,则右键jar包,Add library或者选择file-project structure-Dependencies-加号

添加依赖

2、清单文件添加权限(官方都有提供,不做说明)

<!--连接网络权限,用于执行云端语音能力--><uses-permissionandroid:name="android.permission.INTERNET"/><!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限--><uses-permissionandroid:name="android.permission.RECORD_AUDIO"/><!--读取网络信息状态--><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><!--获取当前wifi状态--><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><!--允许程序改变网络连接状态--><uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/><!--读取手机信息权限--><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/><!--读取联系人权限,上传联系人需要用到此权限--><uses-permissionandroid:name="android.permission.READ_CONTACTS"/> 3、关于初始化的问题,要说明的是,SpeechUtility.createUtility(context,SpeechConstant.APPID+"=12345678"); 方法中,appid一定要自己申请的应用下载的sdk包和对应的appid,否则会报错用户校验失败的错误

4、对应的初始化方法,官方建议在application中初始化,这里写了一个管理类来实现,方便全局调用语音合成方法

public class MscManager {private Context mContext; private SpeechSynthesizer speechSynthesizer ; private static MscManagerinstance; private static final StringAPPID= "自己申请的id"; public static MscManager getInstance() {if (instance== null) {synchronized (MscManager.class) {if (null ==instance) {instance= new MscManager();}}}returninstance; }public void init(Context context) {this.mContext = context; SpeechUtility.createUtility(context, SpeechConstant.APPID+APPID); initTts(); }/** *普通语音 * *@paramcontent播放内容 */ public void speech(String content) {if (TextUtils.isEmpty(content)) {return; }

speechSynthesizer.startSpeaking(content, mSynListener);

}/***初始化语音合成*/private void initTts() {

speechSynthesizer= SpeechSynthesizer.createSynthesizer(mContext, null);

speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "设置官方提供的语音人");//设置发音人

speechSynthesizer.setParameter(SpeechConstant.SPEED, "80");//设置语速

speechSynthesizer.setParameter(SpeechConstant.VOLUME, "100");//设置音量,范围0~100

speechSynthesizer.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端

}/***语音回调*/private SynthesizerListener mSynListener = new SynthesizerListener() { @Override public void onSpeakBegin() { } @Override public void onBufferProgress(int i, int i1, int i2, String s) { } @Override public void onSpeakPaused() { } @Override public void onSpeakResumed() { } @Override public void onSpeakProgress(int i, int i1, int i2) { } @Override public void onCompleted(SpeechError speechError) { } @Override public void onEvent(int i, int i1, int i2, Bundle bundle) { } };}然后调用speech方法,传语音提示内容。

整个过程如果没有问题,就不需要往下看了,如果你遇到了和我一样的问题,程序导入sdk后无法正常启动,可能是此类问题

如果你找不到问题打印日志,你可以在

private SynthesizerListener mSynListener = new SynthesizerListener() {

方法中

@Overridepublic void onCompleted(SpeechError speechError) {Log.e("错误",speechError.toString());}打印问题原因,遇到这种情况,很可能是你的libs下的jar没有引入程序,只是你以为引入依赖而已, 所以每次初始化程序找不到对应的jar包

修改方法:找到你的build.gradle文件,添加

sourceSets {main {jniLibs.srcDir 'libs' }

如果还有其他问题,也可以互相讨论2081992484

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