180.n1-科大讯飞语音识别

来源:互联网 发布:中国汽车销售数据 编辑:程序博客网 时间:2024/05/10 00:13

可以参考科大讯飞官网的文件MSC Develop Manual for Android.pdf,参考其文件中的代码:

第一步:打入sdk,将开发包libs下面的文件夹拷贝到工程的lib下面的目录中

第二布:添加权限

<!-- 连接网络权限,用于执行云端语音能力 -->    <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" />

第三步:初始化,初始化即 创建 语音配置对象 语音配置对象 ,只有初始化 ,只有初始化 ,只有初始化 后才可以使用 后才可以使用 后才可以使用MSC的各项服务建议 将初始化放在 将初始化放在 在 程序入口处比如(Application,Activity的onCreate方法中),初始代码参考如下:

// 初始化语音引擎,将12345678换成您申请的appid,申请地址http://open.voicecloud.cn/SpeechUtility.createUtility(this, SpeechConstant.APPID + "=12345678");

添加几个布局按键

<RelativeLayout 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" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="81dp"        android:onClick="listen"        android:text="开始听写" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/button1"        android:layout_centerHorizontal="true"        android:layout_marginTop="40dp"        android:onClick="listenUI"        android:text="交互动画" />    <Button        android:id="@+id/button3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/button2"        android:layout_centerHorizontal="true"        android:layout_marginTop="33dp"        android:onClick="read"        android:text="语音朗诵" /></RelativeLayout>

逻辑代码:

package com.ldw.VoiceDemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.RecognizerListener;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechRecognizer;import com.iflytek.cloud.SpeechSynthesizer;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.SynthesizerListener;import com.iflytek.cloud.ui.RecognizerDialog;import com.iflytek.cloud.ui.RecognizerDialogListener;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);             // 初始化语音引擎     SpeechUtility.createUtility(this, SpeechConstant.APPID + "=56757@7b");    }    /* * 开始听写 */public void listen(View view) {// 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListenerSpeechRecognizer mIat = SpeechRecognizer.createRecognizer(this, null);// 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类mIat.setParameter(SpeechConstant.DOMAIN, "iat");mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");mIat.setParameter(SpeechConstant.ACCENT, "mandarin");// 开始听写mIat.startListening(mRecoListener);}/* * 交互动画 *  * @param view */public void listenUI(View view) {RecognizerDialog iatDialog = new RecognizerDialog(this, mInitListener);// 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类iatDialog.setParameter(SpeechConstant.DOMAIN, "iat");iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin");iatDialog.setListener(recognizerDialogListener);iatDialog.show();}/* * 语音朗诵(语音合成) */public void read(View view) {SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, null);mTts.setParameter(SpeechConstant.VOICE_NAME, "vixm");//设置发音人mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);//设置云端mTts.startSpeaking("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?",mSynthesizerListener);}//交互动画的初始化参数private InitListener mInitListener = new InitListener() {@Overridepublic void onInit(int arg0) {}};//语音朗诵的监听private SynthesizerListener mSynthesizerListener = new SynthesizerListener() {@Overridepublic void onSpeakResumed() {// TODO Auto-generated method stub}@Overridepublic void onSpeakProgress(int arg0, int arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onSpeakPaused() {// TODO Auto-generated method stub}@Overridepublic void onSpeakBegin() {// TODO Auto-generated method stub}@Overridepublic void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {// TODO Auto-generated method stub}@Overridepublic void onCompleted(SpeechError arg0) {// TODO Auto-generated method stub}@Overridepublic void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {// TODO Auto-generated method stub}};//交互动画的监听private RecognizerDialogListener recognizerDialogListener = new RecognizerDialogListener() {//交互动画监听的结果,说话的时候返回的结果值, isLast=true表示会话结束@Overridepublic void onResult(RecognizerResult results, boolean isLast) {System.out.println(results.getResultString());System.out.println("isLast=" + isLast);}@Overridepublic void onError(SpeechError arg0) {}};//听写监听器private RecognizerListener mRecoListener = new RecognizerListener() {/* * 语音识别结果,说话的时候返回的结果值, isLast=true表示会话结束 */@Overridepublic void onResult(RecognizerResult results, boolean isLast) {System.out.println(results.getResultString());}@Overridepublic void onBeginOfSpeech() {// TODO Auto-generated method stub}@Overridepublic void onEndOfSpeech() {// TODO Auto-generated method stub}@Overridepublic void onError(SpeechError arg0) {// TODO Auto-generated method stub}@Overridepublic void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {// TODO Auto-generated method stub}@Overridepublic void onVolumeChanged(int arg0) {// TODO Auto-generated method stub}};    }