Android 上的 Google 语音识别器需要互联网吗?

2023-11-26

我使用以下代码来调用谷歌的语音识别器:

// This is a demonstration of Android's built in speech recognizer

package com.example.voiceinputbuiltintest;

import java.util.ArrayList;
import java.util.Locale;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.speech.RecognizerIntent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private static final int VOICE_RECOGNITION = 1;
    Button speakButton ;
    TextView spokenWords; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        speakButton = (Button) findViewById(R.id.button1);  
        spokenWords = (TextView)findViewById(R.id.textView1);
    }

    @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;
    }

    @Override
    protected void onActivityResult(int requestCode,
            int resultCode,
            Intent data) {
        if (requestCode == VOICE_RECOGNITION && resultCode == RESULT_OK) {
            ArrayList<String> results;
            results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            // TODO Do something with the recognized voice strings

            Toast.makeText(this, results.get(0), Toast.LENGTH_SHORT).show();
            spokenWords.setText(results.get(0));
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    public void btnSpeak(View view){
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        // Specify free form input
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Please start speaking");
        intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.ENGLISH);
        startActivityForResult(intent, VOICE_RECOGNITION);
    }


}  

在我的测试机器(搭载 Android 4.3 的 Nexus 7)中,此功能无需网络连接即可工作。我认为它在任何 Android 设备上都可以正常工作。然而,当我在 Android 版本gingerbread.el21 的三星 Galaxy S2 上尝试时,语音识别器活动出现,但说它需要网络连接并且拒绝工作。为什么它可以在 Nexus 7 上运行,而不能在 Galaxy S2 上运行?是离线工作还是需要网络连接?即使我停止 WiFi,它也能在 Nexus 7 中正常工作。


在jellybean中用户需要下载离线语音识别包。

This文章说:

以前,当您按下语音图标并说出命令或查询时,Android 必须将您的语音数字化,将其上传到云端,处理波形,将其转换为文本,然后将文本发送回您的手机。现在,手机的功能已经足够强大,可以将其内置到设备中,无需额外的网络 I/O。正如您可以想象的那样,这使得语音识别速度比以前的版本快得多。

应用程序用户必须执行以下操作this:

  1. 进入设置中的“语言和输入法”
  2. 点击“语音”下的“下载离线语音识别” 搜索”
  3. 选择您希望 Android 设备识别的语言包
  4. 下载该包并享受离线语音打字

又一个帮手link:

由于硬件限制,谷歌已限制某些 Jelly Bean 设备使用离线识别功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 上的 Google 语音识别器需要互联网吗? 的相关文章

随机推荐