关于接入科大讯飞的语音sdk
来源:互联网 发布:js删除注释工具 编辑:程序博客网 时间:2024/06/17 07:51
接触了语音合成的第三方讯飞,就导入时出现的问题特记录说明:
首先我们来说一下讯飞接入的流程,大致很简单,一般的第三方接入过程:
1、将开发工具包中libs目录下的Msc.jar和armeabi复制到Android工程的libs目录(如果工程无libs目录,请自行创建)中,详细图片官方网站有提供,这里注明一个地方:就是在eclipse中药添加依赖,选择build添加jar到项目。在AS中,则右键jar包,Add library或者选择file-project structure-Dependencies-加号
添加依赖
2、清单文件添加权限(官方都有提供,不做说明)
- <!--连接网络权限,用于执行云端语音能力 -->
- <uses-permission android:name="android.permission.INTERNET"/>
- <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
- <uses-permission android:name="android.permission.RECORD_AUDIO"/>
- <!--读取网络信息状态 -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <!--获取当前wifi状态 -->
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
- <!--允许程序改变网络连接状态 -->
- <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
- <!--读取手机信息权限 -->
- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- <!--读取联系人权限,上传联系人需要用到此权限 -->
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
4、对应的初始化方法,官方建议在application中初始化,这里写了一个管理类来实现,方便全局调用语音合成方法
public class MscManager { private Context mContext; private SpeechSynthesizer speechSynthesizer ; private static MscManager instance; private static final String APPID = "自己申请的id"; public static MscManager getInstance() { if (instance == null) { synchronized (MscManager.class) { if (null == instance) { instance = new MscManager(); } } } return instance; } public void init(Context context) { this.mContext = context; SpeechUtility.createUtility(context, SpeechConstant.APPID + APPID); initTts(); } /** * 普通语音 * * @param content 播放内容 */ public void speech(String content) { if (TextUtils.isEmpty(content)) { return; }然后调用speech方法,传语音提示内容。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~100speechSynthesizer.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) { } };}
整个过程如果没有问题,就不需要往下看了,如果你遇到了和我一样的问题,程序导入sdk后无法正常启动,可能是此类问题
ERROR_ENGINE_NOT_SUPPORTED
21002
引擎不支持
如果你找不到问题打印日志,你可以在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
0 0
- 关于接入科大讯飞的语音sdk
- 关于几个主流语音SDK的接入问题
- 关于接入百度语音的总结
- Unity接入语音SDk 语音识别
- 关于极光推送SDK的简单接入
- cocos2dx腾讯实时语音sdk接入
- SDK的接入
- 关于接入新浪微博sdk项目崩溃的解决办法
- <cocos2dx> 关于cocos2dx接入sdk的一些坑
- iOS 关于接入海康视频SDK的步骤
- SDK接入遇到的问题
- 科大讯飞SDK接入-actionScript3版
- SDK-IOS 关于SDK接入 MAC平台笔记
- sdk接入
- SDK接入
- 接入SDK
- 使用科大讯飞提供的SDK实现android语音识别
- 我在接入安卓SDK时,关于Activity继承Cocos2dxActivity onkeydown无法监测的问题
- 极光消息推送(配置与初始化)
- Json 在 Android中的应用
- JS获取地址栏参数(解决参数中文乱码的问题)
- tensorflow学习笔记十四:TF官方教程学习 tf.contrib.learn Quickstart
- redis的存储结构
- 关于接入科大讯飞的语音sdk
- java 报错
- 第五届中国网络安全大会分论坛介绍
- android中表示图片的Bitmap、Drawable之间的转化以及他们和字节数组、输入流之间的转化
- 图片延时加载(零依赖)
- WebAPI返回404
- 安装Git2.8.1关联android studio
- BubbleSort 优化后的冒泡排序算法
- mysql事务