Android轻松实现语音识别

移动开发 Android
iphone好像永远都在和Android相比较,本文是Android系统的语音识别。

苹果的iphone 有语音识别用的是Google 的技术,做为Google 力推的Android 自然会将其核心技术往Android 系统里面植入,并结合google 的云端技术将其发扬光大。

所以Google Voice Recognition在Android 的实现就变得极其轻松。

[[31167]]

语音识别,借助于云端技术可以识别用户的语音输入,包括语音控制等技术,下面我们将利用Google 提供的Api 实现这一功能。

功能点为:通过用户语音将用户输入的语音识别出来,并打印在列表上。

功能界面如下:

用户通过点击speak按钮显示界面:

用户说完话后,将提交到云端搜索:

在云端搜索完成后,返回打印数据:

 

#p#

完整的代码如下:

/*   
 * Copyright (C) 2008 The Android Open Source Project  
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");  
 * you may not use this file except in compliance with the License.  
 * You may obtain a copy of the License at  
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0  
 *  
 * Unless required by applicable law or agreed to in writing, software  
 * distributed under the License is distributed on an "AS IS" BASIS,  
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
 * See the License for the specific language governing permissions and  
 * limitations under the License.  
 */  
package com.example.android.apis.app;  
import com.example.android.apis.R;  
import android.app.Activity;  
import android.content.Intent;  
import android.content.pm.PackageManager;  
import android.content.pm.ResolveInfo;  
import android.os.Bundle;  
import android.speech.RecognizerIntent;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.ArrayAdapter;  
import android.widget.Button;  
import android.widget.ListView;  
import java.util.ArrayList;  
import java.util.List;  
/**  
 * Sample code that invokes the speech recognition intent API.  
 */  
public class VoiceRecognition extends Activity implements OnClickListener {     
    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;  
      
    private ListView mList;  
 
    /**  
     * Called with the activity is first created.  
     */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
 
        // Inflate our UI from its XML layout description.  
        setContentView(R.layout.voice_recognition);  
 
        // Get display items for later interaction  
        Button speakButton = (Button) findViewById(R.id.btn_speak);  
          
        mList = (ListView) findViewById(R.id.list);  
 
        // Check to see if a recognition activity is present  
        PackageManager pm = getPackageManager();  
        List<ResolveInfo> activities = pm.queryIntentActivities(  
                new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);  
        if (activities.size() != 0) {  
            speakButton.setOnClickListener(this);  
        } else {  
            speakButton.setEnabled(false);  
            speakButton.setText("Recognizer not present");  
        }  
    }  
    /**  
     * Handle the click on the start recognition button.  
     */  
    public void onClick(View v) {  
        if (v.getId() == R.id.btn_speak) {  
            startVoiceRecognitionActivity();  
        }  
    }  
    /**  
     * Fire an intent to start the speech recognition activity.  
     */  
    private void startVoiceRecognitionActivity() {  
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);  
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,  
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);  
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");  
        startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);  
    }  
    /**  
     * Handle the results from the recognition activity.  
     */  
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {  
            // Fill the list view with the strings the recognizer thought it could have heard  
            ArrayList<String> matches = data.getStringArrayListExtra(  
                    RecognizerIntent.EXTRA_RESULTS);  
            mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,  
                    matches));  
        }  
        super.onActivityResult(requestCode, resultCode, data);  
    }  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.

【编辑推荐】

Android 广播接收者

Android 目录结构分析

Android应用程序开发环境的搭建

在Android应用程序中使用Internet数据

责任编辑:zhaolei 来源: 网络转载
相关推荐

2012-07-10 13:29:30

Java

2015-12-07 14:39:18

微软Windows 95语音识别

2012-07-25 13:23:32

ibmdw

2017-01-06 13:12:11

AndroidRecyclerVie悬浮条

2016-02-17 10:39:18

语音识别语音合成语音交互

2022-09-26 11:35:50

App开发技术框架Speech框架

2009-08-21 15:28:23

C#英文

2021-12-24 10:34:11

鸿蒙HarmonyOS应用

2022-12-01 07:03:22

语音识别人工智能技术

2009-07-21 15:28:06

Windows Emb

2021-05-06 11:18:23

人工智能语音识别

2021-05-06 11:13:06

人工智能语音识别

2011-01-18 11:52:25

Linux语音识别

2017-02-27 21:37:49

2015-10-23 13:41:20

android源码科大讯飞语音识别

2017-03-20 10:14:03

语音识别匹配算法模型

2024-01-08 19:30:15

AI开源语音识别

2021-11-17 10:37:39

语音识别技术人工智能

2017-10-27 16:19:23

语音识别CNN

2019-10-12 17:42:33

点赞
收藏

51CTO技术栈公众号