Android开发 语音识别技术之科大讯飞语音识别(一) — 语音听写

      接触android几个月以来第一次写博客,有点小激动,相信这一举动会慢慢见证我在IT路上的成长;由于最近项目中用到了语音识别技术,乘着周末有时间记录下来,本人新手一枚,高手勿喷 ^_^


我这里用的是科大讯飞语音API,具体步骤如下:

1、首先进入科大讯飞语音云平台http://open.voicecloud.cn/,注册一个开发者账号

2、创建新应用,得到一个app_id号,然后下载android平台SDK

3、开始创建我们自己的应用,项目中需要在lib文件夹下加入Msc.jar和libmsc.so两个文件,注意libmsc.so是在armeabi文件夹下


布局界面和运行界面



在工程AndroidManifest.xml 文件中添加如下权限






布局文件代码


MainActivity代码

package com.xj.audiodemo;import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.EditText;
import android.widget.Toast;import com.iflytek.cloud.speech.RecognizerResult;
import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechListener;
import com.iflytek.cloud.speech.SpeechUser;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import com.xj.audiodemo.util.JsonParser;public class MainActivity extends ActionBarActivity implements OnClickListener {private EditText editText;//听写dialogprivate RecognizerDialog recognizerDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);loginAudio();init();}private void loginAudio() {SpeechUser.getUser().login(this, null, null, "appid="+getString(R.string.app_id), listener);}private void init() {editText = (EditText) findViewById(R.id.et_content);findViewById(R.id.bt_start).setOnClickListener(this);//创建听写dialogrecognizerDialog = new RecognizerDialog(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_start://开始录音showAduioDialog();break;}}/*** 显示听写dialog*/private void showAduioDialog(){if(null != recognizerDialog){recognizerDialog = new RecognizerDialog(this);}//清空Grammar_ID,防止识别后进行听写时Grammar_ID的干扰recognizerDialog.setParameter(SpeechConstant.CLOUD_GRAMMAR, null);//设置听写dialog的引擎recognizerDialog.setParameter(SpeechConstant.DOMAIN, getString(R.string.engine));//设置采样率参数  支持8k 和 16krecognizerDialog.setParameter(SpeechConstant.SAMPLE_RATE, "8000");//清空显示框editText.setText(null);//显示听写对话框recognizerDialog.setListener(dialogListener);recognizerDialog.show();}private RecognizerDialogListener dialogListener = new RecognizerDialogListener() {//识别返回结果@Override public void onResult(RecognizerResult results, boolean isLast) {//results返回的是json串 需要解析String text = JsonParser.parseIatResult(results.getResultString());editText.append(text);editText.setSelection(editText.length());}//识别回调错误@Override public void onError(SpeechError error) {}};/*** 用户的登陆的回调函数*/private SpeechListener listener = new SpeechListener() {@Overridepublic void onEvent(int arg0, Bundle arg1) {}@Overridepublic void onData(byte[] arg0) {}//登陆完成返回的结果@Overridepublic void onCompleted(SpeechError error) {if(null != error){Toast.makeText(MainActivity.this, getString(R.string.login_error), Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, getString(R.string.login_success), Toast.LENGTH_SHORT).show();}}};@Overrideprotected void onStop() {super.onStop();if(null != recognizerDialog){recognizerDialog.cancel();}}}


Util工具类 JSON解析

package com.xj.audiodemo.util;import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;import android.text.TextUtils;/*** @author x j*/
public class JsonParser {/*** 听写结果的Json格式解析* @param json* @return string*/public static String parseIatResult(String json) {if(TextUtils.isEmpty(json))return "";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"));}} catch (Exception e) {e.printStackTrace();} return ret.toString();}
}

本程序员自己开发的两款小应用,欢迎大家试玩 

《史上最牛的手相大师》 在安卓市场,91,百度手机助手,360手机助手,豌豆荚,应用宝已上线

豌豆荚 http://www.wandoujia.com/apps/com.example.handmoney

安卓市场 http://apk.hiapk.com/appinfo/com.example.handmoney

百度手机助手 http://as.baidu.com/a/item?docid=6800908&pre=web_am_se

《史上最牛的人脸评分仪》 在 在安卓市场,91,百度手机助手,360手机助手,豌豆荚已上线

豌豆荚 http://www.wandoujia.com/apps/com.xj.facerecognition

安卓市场 http://apk.hiapk.com/appinfo/com.xj.facerecognition

百度手机助手 http://as.baidu.com/a/item?docid=6802582&pre=web_am_se


 
 
 
 
 
 
                        


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部