讯飞现在语音SDK集成封装
2017-12-19 10:22
453 查看
第一步 导入jar
![](https://img-blog.csdn.net/20171219095834650?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEzNjQ0NzU3Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
SDK 下载地址 http://www.xfyun.cn/ 先创建项目后下载SDK
第二步 导入所需权限
第三布 配置APPid
第四步 封装功能代码 XunFei
第五步 调用
iOS/Android开发人脸识别SDK列表
http://blog.csdn.net/a136447572/article/details/75605803
Java NIO框架Netty教程(一) – Hello Netty
http://blog.csdn.net/a136447572/article/details/76274341
Android APK反编译就这么简单 详解(附图)
http://blog.csdn.net/a136447572/article/details/75223421
SDK 下载地址 http://www.xfyun.cn/ 先创建项目后下载SDK
第二步 导入所需权限
<!--连接网络权限,用于执行云端语音能力 --> <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"/> <!--外存储写权限,构建语法需要用到此权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--外存储读权限,构建语法需要用到此权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <!--配置权限,用来记录应用配置信息 --> <uses-permission android:name="android.permission.WRITE_SETTINGS"/> <!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务--> <!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!--如需使用人脸识别,还要添加:摄相头权限,拍照需要用到 --> <uses-permission android:name="android.permission.CAMERA" />
第三布 配置APPid
SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID +"=xxxxxxxxx");
第四步 封装功能代码 XunFei
package com.taisheng.taishengprojectfour.utils; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.util.Log; import com.iflytek.cloud.ErrorCode; import com.iflytek.cloud.InitListener; import com.iflytek.cloud.SpeechConstant; import com.iflytek.cloud.SpeechError; import com.iflytek.cloud.SpeechSynthesizer; import com.iflytek.cloud.SynthesizerListener; import com.iflytek.sunflower.FlowerCollector; /** * Created by Administrator on 2017/8/29. */ public class XunFei { private static SpeechSynthesizer mTts; // 默认发音人 private static String voicer = "xiaoyan"; // 缓冲进度 private static int mPercentForBuffering = 0; // 播放进度 private static int mPercentForPlaying = 0; // 引擎类型 private static String mEngineType = SpeechConstant.TYPE_CLOUD; // 语记安装助手类 static ApkInstaller mInstaller ; public static void du (Activity activity, String msg ){ mTts = SpeechSynthesizer.createSynthesizer(activity, mTtsInitListener); // //mInstaller = new ApkInstaller(activity); // 移动数据分析,收集开始合成事件 //FlowerCollector.onEvent(activity, "tts_play"); String text = msg; // 设置参数 setParam(); int code = mTts.startSpeaking(text, mTtsListener); // /** // * 只保存音频不进行播放接口,调用此接口请注释startSpeaking接口 // * text:要合成的文本,uri:需要保存的音频全路径,listener:回调接口 // */ // String path = Environ 4000 ment.getExternalStorageDirectory()+"/tts.pcm"; // int code = mTts.synthesizeToUri(text, path, mTtsListener); if (code != ErrorCode.SUCCESS) { if(code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED){ //未安装则跳转到提示安装页面 mInstaller.install(); }else { showTip("语音合成失败,错误码: " + code); } } } /** * 初始化监听。 */ private static InitListener mTtsInitListener = new InitListener() { @Override public void onInit(int code) { Log.d("info", "InitListener init() code = " + code); if (code != ErrorCode.SUCCESS) { showTip("初始化失败,错误码:"+code); } else { // 初始化成功,之后可以调用startSpeaking方法 // 注:有的开发者在onCreate方法中创建完合成对象之后马上就调用startSpeaking进行合成, // 正确的做法是将onCreate中的startSpeaking调用移至这里 } } }; /** * 合成回调监听。 */ private static SynthesizerListener mTtsListener = new SynthesizerListener() { @Override public void onSpeakBegin() { showTip("开始播放"); } @Override public void onSpeakPaused() { showTip("暂停播放"); } @Override public void onSpeakResumed() { showTip("继续播放"); } @Override public void onBufferProgress(int percent, int beginPos, int endPos, String info) { // 合成进度 mPercentForBuffering = percent; } @Override public void onSpeakProgress(int percent, int beginPos, int endPos) { // 播放进度 mPercentForPlaying = percent; } @Override public void onCompleted(SpeechError error) { if (error == null) { showTip("播放完成"); } else if (error != null) { showTip(error.getPlainDescription(true)); } } @Override public 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 static void showTip(final String str) { } /** * 参数设置 * @return */ private static 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, "50"); //设置合成音调 mTts.setParameter(SpeechConstant.PITCH,"50"); //设置合成音量 mTts.setParameter(SpeechConstant.VOLUME,"50"); }else { mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL); // 设置本地合成发音人 voicer为空,默认通过语记界面指定发音人。 mTts.setParameter(SpeechConstant.VOICE_NAME, ""); /** * TODO 本地合成不设置语速、音调、音量,默认使用语记设置 * 开发者如需自定义参数,请参考在线合成参数设置 */ } //设置播放器音频流类型 mTts.setParameter(SpeechConstant.STREAM_TYPE, "3"); // 设置播放合成音频打断音乐播放,默认为true mTts.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"); } } package com.taisheng.taishengprojectfour.utils; import android.app.Activity; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.Uri; import com.iflytek.cloud.SpeechUtility; /** * 弹出提示框,下载服务组件 */ public class ApkInstaller { private Activity mActivity ; public ApkInstaller(Activity activity) { mActivity = activity; } public void install(){ Builder builder = new Builder(mActivity); builder.setMessage("检测到您未安装语记!\n是否前往下载语记?"); builder.setTitle("下载提示"); builder.setPositiveButton("确认前往", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); String url = SpeechUtility.getUtility().getComponentUrl(); String assetsApk="SpeechService.apk"; processInstall(mActivity, url,assetsApk); } }); builder.setNegativeButton("残忍拒绝", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); return; } /** * 如果服务组件没有安装打开语音服务组件下载页面,进行下载后安装。 */ private boolean processInstall(Context context ,String url,String assetsApk){ //直接下载方式 Uri uri = Uri.parse(url); Intent it = new Intent(Intent.ACTION_VIEW, uri); context.startActivity(it); return true; } }
第五步 调用
XunFei.du(MainActivity.this, "设置要读的String");
iOS/Android开发人脸识别SDK列表
http://blog.csdn.net/a136447572/article/details/75605803
Java NIO框架Netty教程(一) – Hello Netty
http://blog.csdn.net/a136447572/article/details/76274341
Android APK反编译就这么简单 详解(附图)
http://blog.csdn.net/a136447572/article/details/75223421
相关文章推荐
- 讯飞语音sdk集成语音合成功能超级完美工具类
- 讯飞 语音sdk 分段播放文本
- 讯飞语音识别SDK试用
- android 语音转换文字(科大讯飞SDK简易封装)
- React Native封装Android原生UI和Android原生模块,并且集成腾讯云点播的Android SDK
- 有关集成科大讯飞sdk的语音(二)不带语音的界面
- AndroidStudio集成科大讯飞语音SDK
- 讯飞语音SDK提示用户校验失败10407
- 有关集成科大讯飞sdk的语音(三)语音合成
- 集成讯飞听写iOS sdk到unity遇到的问题:weak成员和strong成员
- 讯飞SDK图文使用说明 语音听写、语音合成、声纹密码
- Unity3D集成腾讯语音GVoice SDK
- iOS之讯飞语音SDK接入————大坑警惕!
- 第三方集成讯飞 语音识别 文字转音
- 对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
- 有关集成科大讯飞sdk的语音(一)带语音的界面
- AS集成科大讯飞SDK实现问答机器人的效果
- 【融云SDK集成实现单聊App】
- android项目集成sdk或者lib时, java - Android - Error Manifest merger failed
- 集成第三方SDK爬坑总结之极光推送和友盟统计