科大讯飞语音服务-只含听写
来源:互联网 发布:崩坏3 8月矩阵buff 编辑:程序博客网 时间:2024/05/01 08:41
科大讯飞语音服务-只含听写
想要集成科大讯飞语音服务首先要在人家的平台上注册一个自己的开发者账号
科大讯飞语音-讯飞开放平台地址:http://www.xfyun.cn/?ch=bdtg
进入地址之后要登录自己的账号,如果没有的话就自己注册一个账号
登陆之后点击控制台进入到我的语音云页面,在里面找到创建新应用
创建完成之后就开通自己所需要的一些服务
然后就是下载人家的SDK了,下载完成之后就将里面的libs包和assets分别导入到自己的项目里面,上面的导航栏上有SDK下载,点击进入选择自己想要完成的效果(目前这里只有听写服务)然后选择平台基于自己的开发平台选择,最后选择自己的应用,就是自己刚创建的新应用,点击下载SDK,我们所需要的东西都在下载的那个.zip文件里面了,先将libs里面的两个jar包导入到自己的工程里面,还有一个sample文件,里面有三个项目,可以导入到工程中运行看看效果
libs里面加入两个jar包
然后将剩下的文件添加到jniLibs里面,这个jniLibs放在自己的main里面
然后将assets整个文件拷到自己项目的main里面
然后就开始我们的代码………..
1、activity-main布局文件当中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="text.bwei.com.kedaxunfei2.MainActivity"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="400dp" android:background="#c7edcc" android:text="@string/hello_world" /> <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="50dp" android:text="开始" /></LinearLayout>
2、新建一个类JsonParser
import org.json.JSONArray;import org.json.JSONObject;import org.json.JSONTokener;/** * Json结果解析类 */public class JsonParser { public static String parseIatResult(String json) { StringBuffer ret = new StringBuffer(); try { JSONTokener tokener = new JSONTokener(json); JSONObject joResult = new JSONObject(tokener); JSONArray words = joResult.getJSONArray("ws"); for (int i = 0; i < words.length(); i++) { // 如果需要多候选结果,解析数组其他字段 JSONArray items = words.getJSONObject(i).getJSONArray("cw"); JSONObject obj = items.getJSONObject(0); ret.append(obj.getString("w"));// 如果需要多候选结果,解析数组其他字段// for(int j = 0; j < items.length(); j++)// {// JSONObject obj = items.getJSONObject(j);// ret.append(obj.getString("w"));// } } } catch (Exception e) { e.printStackTrace(); } return ret.toString(); } public static String parseGrammarResult(String json) { StringBuffer ret = new StringBuffer(); try { JSONTokener tokener = new JSONTokener(json); JSONObject joResult = new JSONObject(tokener); JSONArray words = joResult.getJSONArray("ws"); for (int i = 0; i < words.length(); i++) { JSONArray items = words.getJSONObject(i).getJSONArray("cw"); for (int j = 0; j < items.length(); j++) { JSONObject obj = items.getJSONObject(j); if (obj.getString("w").contains("nomatch")) { ret.append("没有匹配结果."); return ret.toString(); } ret.append("【结果】" + obj.getString("w")); ret.append("【置信度】" + obj.getInt("sc")); ret.append("\n"); } } } catch (Exception e) { e.printStackTrace(); ret.append("没有匹配结果."); } return ret.toString(); } public static String parseLocalGrammarResult(String json) { StringBuffer ret = new StringBuffer(); try { JSONTokener tokener = new JSONTokener(json); JSONObject joResult = new JSONObject(tokener); JSONArray words = joResult.getJSONArray("ws"); for (int i = 0; i < words.length(); i++) { JSONArray items = words.getJSONObject(i).getJSONArray("cw"); for (int j = 0; j < items.length(); j++) { JSONObject obj = items.getJSONObject(j); if (obj.getString("w").contains("nomatch")) { ret.append("没有匹配结果."); return ret.toString(); } ret.append("【结果】" + obj.getString("w")); ret.append("\n"); } } ret.append("【置信度】" + joResult.optInt("sc")); } catch (Exception e) { e.printStackTrace(); ret.append("没有匹配结果."); } return ret.toString(); }}
3、新建一个MyApplication类继承Application
里面装的是自己在科大讯飞语音开放平台里申请到的APPID值
import android.app.Application;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechUtility;public class MyApplication extends Application { @Override public void onCreate() { SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID+"=5832dda6"); super.onCreate(); }}
4、在MainActivity里面
import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import com.iflytek.cloud.ErrorCode;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.ui.RecognizerDialog;import com.iflytek.cloud.ui.RecognizerDialogListener;public class MainActivity extends AppCompatActivity { public String tag = "MainActivity"; public String text; public TextView textView; private Button btn; public Context context = MainActivity.this; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { initRecognizerDialog(); } }); } private void initRecognizerDialog() { // 1.创建RecognizerDialog对象 RecognizerDialog mDialog = new RecognizerDialog(context, initListener); // 2.设置accent、language等参数 mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); mDialog.setParameter(SpeechConstant.ACCENT, "mandarin"); // 若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解//结果 // mDialog.setParameter("asr_sch", "1"); // mDialog.setParameter("nlp_version", "2.0"); // 3.设置回调接口 mDialog.setListener(mRecognizerDialogListener); // 4.显示dialog,接收语音输入 mDialog.show(); text = ""; } InitListener initListener = new InitListener() { @Override public void onInit(int code) { if (code != ErrorCode.SUCCESS) { Toast.makeText(context, "监听器初始化错误,错误代码=" + code, Toast.LENGTH_SHORT).show(); } } }; RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() { @Override public void onResult(RecognizerResult result, boolean isLast) { String json = result.getResultString(); String content = JsonParser.parseIatResult(json); text += content; Log.d(tag, "###content=" + content); textView.setText(text); } @Override public void onError(SpeechError error) { Toast.makeText(context, error.getErrorDescription(), Toast.LENGTH_SHORT).show(); } };}
最后是 manifest清单文件里面添加自己的需要的权限,别忘了在application里面添加自己的App的name
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="text.bwei.com.kedaxunfei2"> <!-- 科大讯飞 start --> <!-- 连接网络权限,用于执行云端语音能力 --> <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" /> <!-- 下面3个权限有空格导致报错,记得去掉空格 --> <!-- 外存储写权限,构建语法需要用到此权限 --> <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" /> <!-- 科大讯飞 end --> <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
然后、、、、然后、、、、然后就没了,你已经完成了,赶快运行一下看看自己做的效果吧
效果图
Demo下载地址:https://github.com/xiaowen0524/KeDaXunFei2
- 科大讯飞语音服务-只含听写
- 科大讯飞语音服务-只含听写
- 科大讯飞语音+ 离线听写随记
- Android科大讯飞语音听写实现
- 集成科大讯飞语音听写功能
- 讯飞语音听写常见问题
- 讯飞语音听写Demo
- 使用讯飞语音的语音听写
- 第三方SDK:讯飞语音听写
- 小试讯飞语音的听写功能
- AndroidStudio快速开发讯飞语音听写
- python3 调用讯飞语音听写sdk
- 讯飞语音听写,合成读写
- 讯飞语音听写和语音合成
- Android开发 语音识别技术之科大讯飞语音识别(一) — 语音听写
- Android实战——科大讯飞语音听写SDK的使用,实现语音识别功能
- Android实战——科大讯飞语音听写SDK的使用,实现语音识别功能
- 接入科大讯飞语音听写,增加语音动画,类似京东语音搜索功能
- xss进阶三
- js-时钟效果
- this web application instance has been stopped already问题
- iOS面试总结
- Java多线程1:进程与线程概述
- 科大讯飞语音服务-只含听写
- [乐意黎转载]从零开始学习jQuery (六) AJAX快餐
- 数据结构实验之图论八:欧拉回路
- 【编程】面向对象(三)--UML方法
- hbase的shell命令
- 梯度下降算法
- [乐意黎转载]从零开始学习jQuery (七) jQuery动画-让页面动起来!
- 简单c语言算法练习题 矩阵鞍点 统计int类型的值中有多少位为1
- 中北大学安卓实验室计算机视觉培训第一期作业