編輯:Android開發實例
一、簡介
語音識別現在應用越來越廣泛了 比如語音寫短信、語音搜索商品、語音搜索關鍵字等等,這遍我們就簡單的談談國內比較流行的訊飛語音在android平台上的實現。
筆者認為:
google語音識別並不是十分符合中國人的習慣,且google語音識別一個重要弊端的是,需要用戶手機上必須有google語音應用。
一般的國行android手機並沒有,比如筆記手機小米就沒有。需要下載單獨google語音apk。所以用戶體現自然不如訊飛。
但訊飛筆者認為,也有一定風險。訊飛應用協議中,他們是具有任何時候,停掉你語音識別服務的權限的,而且還不用和你商量。
一旦你的應用達到了百萬級了,那麼訊飛是要收取你一定的服務費的,所以一般大公司的項目基本上不會用訊飛語音或與訊飛語音合作比如小米,
Android4.0以上版本語音小助手就有小米與訊飛語音合作開發出來的。
二、訊飛Android小示例
先看看效果圖:
嗯,看到效果圖後下面就談談如何去實現效果:
2.1 到訊飛官網開發者專區中注冊用戶並獲取appid 地址:http://open.voicecloud.cn/developer.php
2.2 新建android工程,並在清單文件中聲明好相應的權限
- <uses-permission android:name="android.permission.RECORD_AUDIO" />
- <uses-permission android:name="android.permission.INTERNET" />
- <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.WRITE_EXTERNAL_STORAGE" />
2.3 下載libmsc.so與Msc.jar,並分別放在android工程的libs/armeabi與libs文件夾中,如圖
3.4 使用示例如下,代碼中都帶有相應的注釋了:
- import java.util.ArrayList;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.EditText;
- import com.iflytek.speech.RecognizerResult;
- import com.iflytek.speech.SpeechConfig.RATE;
- import com.iflytek.speech.SpeechError;
- import com.iflytek.ui.RecognizerDialog;
- import com.iflytek.ui.RecognizerDialogListener;
- /**
- * @author 陳淑飛
- * 2013-1-8 上午1:10:24
- */
- public class HelloDemoActivity extends Activity implements OnClickListener {
- protected static final String TAG = "ThirdActivity";
- private EditText txt_result;
- private RecognizerDialog rd;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.demo);
- findView();
- //RecognizerDialog(Context context, String params); "appid=1234567,usr=test,pwd=12345" usr、pwd不是必選的
- //創建語音識別dailog對象,appid到訊飛就注冊獲取
- rd = new RecognizerDialog(this ,"appid=50e1b967");
- }
- private void findView() {
- txt_result = (EditText) findViewById(R.id.txt_result);
- findViewById(R.id.bt_search).setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.bt_search:
- showReconigizerDialog();
- break;
- default:
- break;
- }
- }
- private void showReconigizerDialog() {
- //setEngine(String engine,String params,String grammar);
- /**
- * 識別引擎選擇,目前支持以下五種
- “sms”:普通文本轉寫
- “poi”:地名搜索
- “vsearch”:熱詞搜索
- “vsearch”:熱詞搜索
- “video”:視頻音樂搜索
- “asr”:命令詞識別
- params 引擎參數配置列表
- 附加參數列表,每項中間以逗號分隔,如在地圖搜索時可指定搜索區域:“area=安徽省合肥市”,無附加參數傳null
- */
- rd.setEngine("sms", null, null);
- //設置采樣頻率,默認是16k,android手機一般只支持8k、16k.為了更好的識別,直接弄成16k即可。
- rd.setSampleRate(RATE.rate16k);
- final StringBuilder sb = new StringBuilder();
- Log.i(TAG, "識別准備開始.............");
- //設置識別後的回調結果
- rd.setListener(new RecognizerDialogListener() {
- @Override
- public void onResults(ArrayList<RecognizerResult> result, boolean isLast) {
- for (RecognizerResult recognizerResult : result) {
- sb.append(recognizerResult.text);
- Log.i(TAG, "識別一條結果為::"+recognizerResult.text);
- }
- }
- @Override
- public void onEnd(SpeechError error) {
- Log.i(TAG, "識別完成.............");
- txt_result.setText(sb.toString());
- }
- });
- txt_result.setText(""); //先設置為空,等識別完成後設置內容
- rd.show();
- }
- }
另:工程示例domo,已上傳到csdn中(免積分哦),地址:http://download.csdn.net/detail/chenshufei2/4989030
轉自:http://blog.csdn.net/chenshufei2/article/details/8496905
做了個Android項目,需要接入新浪微博,實現時也順帶著研究了下騰訊微博和人
實現定時器有很多種方式,在這裡我簡單的介紹幾種方式 (1)使用Handler + Runnable的方式 代碼如下: Handler handler = new
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
再看文章之前,希望大家先打開自己的微信點到朋友圈中去,仔細觀察是不是發現朋友圈裡的有個“九宮格”的圖片區域,點擊圖片又會跳到圖片的詳細查看頁面,並且支持圖片的滑動