多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > android之語音輸入

android之語音輸入

來源:程序員人生   發布時間:2015-04-03 08:25:56 閱讀次數:2759次

這里是使用訊飛語言輸入,具體步驟以下:

1、獲得APPID

    首先先到訊飛語音云官網注冊1個賬號http://www.voicecloud.cn/

   
2、然后在我的語音云中創建1個新利用,選擇語音基礎能力,就能夠看到Appid:××××××××
    (注意:每一個appid都是會有相對應的sdk包,不然無效)

3、創建1個新工程VoiceTest,并將下載的SDK包中的libs目錄下的庫導入到工程VoiceTest中的libs里面(直接復制過去便可)


4、打開sdk包中的doc目錄下的msc文件,里面會有以上的幾步步驟;
    權限:   
    <!--連接網絡權限,用于履行云端語音能力  -->
        <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"/>

5、把sdk包中的sample(demo代碼)導入Eclipse中,以便參考,其實就是要用到demo中的json解包方法


6、程序若在此過不去,也就是你的appid與相對應的sdk包有問題
        //5、顯示聽寫對話框      isrDialog.show();


7、簡單語音測試代碼

<span style="font-size:14px;"><strong> <span style="color:#FF0000;"> <MainAcctivity.java></span>  package com.example.voicetest; 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.SpeechUtility; import com.iflytek.cloud.ui.RecognizerDialog; import com.iflytek.cloud.ui.RecognizerDialogListener; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText editText; private Button speak; private SpeechRecognizer miat; private static final String APPID = "appid=5450a81b"; private RecognizerDialogListener recognizeListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.textview); speak = (Button)findViewById(R.id.button1); //設置按鍵監聽 speak.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub InitListener InitListener = null; //1、創建用戶語音對象 SpeechUtility.createUtility(getBaseContext(), SpeechConstant.APPID +"=5450a81b"); RecognizerDialog isrDialog = new RecognizerDialog(MainActivity.this, InitListener); //2、創建辨認對話框 isrDialog.setParameter(SpeechConstant.CLOUD_GRAMMAR, null); //3、定義聽寫ui對話框,設置聽寫參數 isrDialog.setParameter(SpeechConstant.DOMAIN, "iat"); isrDialog.setParameter(SpeechConstant.SAMPLE_RATE, "8000"); //4、設置回調接口 isrDialog.setListener(recognizeListener); //5、顯示聽寫對話框 isrDialog.show(); //6、辨認成功時回調此方法 recognizeListener =new RecognizerDialogListener() { @Override public void onResult(RecognizerResult arg0, boolean arg1) { // TODO Auto-generated method stub //7、返回數據用json解包,并顯示在控件上 String text = JsonParser.parseIatResult(arg0.getResultString()); editText.append(text); editText.setSelection(editText.length()); } @Override public void onError(SpeechError arg0) { // TODO Auto-generated method stub } }; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } <span style="color:#FF0000;"> <JsonParser.java></span> package com.example.voicetest; 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++) { // 轉寫結果詞,默許使用第1個結果 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(); } 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(" "); } } } catch (Exception e) { e.printStackTrace(); ret.append("沒有匹配結果."); } return ret.toString(); } } (activity_main.xml) <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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <AutoCompleteTextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_centerHorizontal="true" android:layout_marginBottom="30dp" android:text="AutoCompleteTextView" > <requestFocus /> </AutoCompleteTextView> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textview" android:layout_alignParentBottom="true" android:layout_marginBottom="164dp" android:layout_marginLeft="22dp" android:text="Button" /> </RelativeLayout></strong></span>




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 一级坐爱| 欧美黑人性猛交 | 久久综合一区二区三区 | 欧美日韩精品一区二区在线线 | 欧美最新一区二区三区四区 | 真实国产乱人伦在线视频播放 | 国产综合亚洲欧美日韩一区二区 | 国产精品福利影院 | 亚洲精品成人久久久影院 | 亚洲免费视频一区二区三区 | 中文字幕在线日本 | 黄色毛片免费网站 | 精品国产免费久久久久久 | 性欧美高清久久久久久久 | 国产亚洲精品激情一区二区三区 | 一级做a爰性视频 | 成人国产视频在线观看 | freexxx性中国hd性 | 最近的中文字幕大全免费8 最近的中文字幕大全免费版 | 一级特黄aa毛片免费观看 | 欧美日本不卡 | 午夜欧美精品久久久久久久 | 亚洲福利视频在线 | 复仇之路在线观看免费版高清 | 日本欧美一级二级三级不卡 | 亚洲成人福利 | 性一交一乱一伦一色一情 | 中文字幕在线观看网址 | 欧美精品亚洲精品日韩 | 最近2019中文字幕免费看最新 | 国产在线91区精品 | 亚洲欧洲久久 | 最新国产福利在线 | 午夜老司机免费视频 | 亚洲国产欧美日韩精品小说 | 亚洲一级高清在线中文字幕 | 久久精品男人的天堂 | 亚洲成人福利在线观看 | 91精品久久久久亚洲国产 | 五月婷婷伊人 | 最新午夜宅男 |