基於android的語音辨識

來源:互聯網
上載者:User

標籤:com   iter   選擇   image   tor   set   基於   bsp   源檔案   

1.註冊賬戶,添加應用

 

2.針對android平台的選擇應用,下載SDK

 

3.將SDK的libs下檔案拷貝到工程的libs目錄下

4.添加使用者權限

    <uses-permission android:name="android.permission.INTERNET"/>    <uses-permission android:name="android.permission.RECORD_AUDIO"/>    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <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"/>    <uses-permission android:name="android.permission.CAMERA"/>

5.初始化語音設定物件

        //初始化語音設定物件,必須,這樣才能使用MSCVoice Messaging Service        SpeechUtility.createUtility(this, SpeechConstant.APPID+"=59454d78");

6.拷貝assets目錄下資源檔到android工程的assets目錄

 

7.識別代碼

       //建立語音辨識對話方塊        RecognizerDialog rd = new RecognizerDialog(this,null);        //設定參數accent,language等參數        rd.setParameter(SpeechConstant.LANGUAGE,"zh_cn");//中文        rd.setParameter(SpeechConstant.ACCENT,"mandarin");//普通話        //設定回調介面        rd.setListener(new RecognizerDialogListener() {            @Override            public void onResult(RecognizerResult recognizerResult, boolean b) {                //擷取返回結果                String  result = recognizerResult.getResultString();                Log.e("result",result);                Log.e("b",b+"");            }            @Override            public void onError(SpeechError speechError) {            }        });        //顯示對話方塊        rd.show();

8.由於返回的是json字串所以還得解析出來才能使用

result:{"sn":2,"ls":true,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"sc":0.00,"w":"?"}]}]}

9.解析Json字串

        /**         * 解析json串         * @param result         */        protected String parseJsonData(String json) {        // 使用Gson來解析Json串            Gson gson = new Gson();            VoiceBean bean = gson.fromJson(json, VoiceBean.class);            ArrayList<WS> ws = bean.ws;            StringBuffer sb = new StringBuffer();            for (WS ws2 : ws) {                String info = ws2.cw.get(0).w;                sb.append(info);            }            return sb.toString();    }


10.完整代碼

package com.example.chat;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.example.chat.VoiceBean.WS;import com.google.gson.Gson;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechSynthesizer;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.ui.RecognizerDialog;import com.iflytek.cloud.ui.RecognizerDialogListener;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.ListView;public class MainActivity extends Activity {        StringBuffer strbuf;    ListView mlv;    private List<TalkBean> lists;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化語音設定物件,必須,這樣才能使用MSCVoice Messaging Service        SpeechUtility.createUtility(this, SpeechConstant.APPID+"=59454d78");        mlv = (ListView) findViewById(R.id.lv);        lists = new ArrayList<TalkBean>();            }           public void click(View view){            //建立語音辨識對話方塊            RecognizerDialog rd = new RecognizerDialog(this,null);            //設定參數accent,language等參數            rd.setParameter(SpeechConstant.LANGUAGE,"zh_cn");//中文            rd.setParameter(SpeechConstant.ACCENT,"mandarin");//普通話            strbuf = new StringBuffer();            //設定回調介面            rd.setListener(new RecognizerDialogListener() {                                @Override                public void onResult(RecognizerResult arg0, boolean arg1) {                    // TODO Auto-generated method stub                    String  result = arg0.getResultString();                    String data = parseJsonData(result);                    Log.e("data",data);                                      strbuf.append(data);                    if(arg1){//回話結束                        String voice = strbuf.toString();                        Log.e("result",voice);                    }                                        Log.e("b",arg1+"");                }                                @Override                public void onError(SpeechError arg0) {                    // TODO Auto-generated method stub                                    }            });            //顯示對話方塊            rd.show();        }        /**         * 解析json串         * @param result         */        protected String parseJsonData(String json) {        // 使用Gson來解析Json串            Gson gson = new Gson();            VoiceBean bean = gson.fromJson(json, VoiceBean.class);            ArrayList<WS> ws = bean.ws;            StringBuffer sb = new StringBuffer();            for (WS ws2 : ws) {                String info = ws2.cw.get(0).w;                sb.append(info);            }            return sb.toString();    }

 

 

11.運行結果展示

 

基於android的語音辨識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.