当前位置: 首页 > 知识库问答 >
问题:

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

林魁
2023-03-14

我使用以下代码调用google的语音识别器:

// 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);
    }


}  

在我的测试机器Nexus 7和Android 4.3中,这在没有网络连接的情况下工作。我认为它在任何android设备上都能起到同样的作用。然而,当我在三星Galaxy S2上试用Android版姜饼时。el21,语音识别器活动出现,但表示需要网络连接,拒绝工作。为什么它在Nexus 7中工作而在Galaxy S2中不工作?它是脱机工作还是需要网络连接?它在Nexus 7中工作,即使我停止wifi。

共有1个答案

景宏富
2023-03-14

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

本文写道:

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

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

  1. 转到设置中的“语言和输入”

另一个帮助链接:

由于硬件限制,谷歌限制某些果冻豆设备使用离线识别。

 类似资料:
  • 我正在开发一个android应用程序,它将监听语音命令并相应地触发动作。 以下是一些疑问: > 谷歌语音识别离线库是否可用于android应用程序 我们能创建自己的词汇词典吗 应用程序应在脱机模式下工作(无Internet)。

  • 我用Google API对自然对话的语音识别取得了很好的效果,但是对于Youtube视频或电影中的声音,识别效果很差或根本不存在。 在iPhone 4上录制西班牙语到英语的声音是可以识别的,但在电影中使用同一部手机几乎是不可能的,即使是一个角色在几乎没有背景噪音的情况下说话的场景。只有一次成功。 我试图清理声音与SoX(声音交换)使用噪声和comand efects,没有任何成功。 有什么想法吗?

  • 如果可能的话,我需要一些意见或建议。我有一个使用语音识别api和媒体记录器的应用程序。该应用程序的要点是当用户说“注意”时,它会记录语音消息,直到用户说“完成”。之后,应用程序将语音消息保存到手机中。 我目前有一个带有按钮(记录、保存、停止、完成)的弹出框,用户可以手动按下按钮来记录他们的语音信息。我正在考虑完全改造用户拥有完全语音控制的应用程序。所以基本上,它越免提越好。 我从这里开始研究连续语

  • 我正在玩Google Cloud Speech API。我想知道我是否使用python语音识别库并调用google cloud语音API,这仍然是使用API的有效方式吗?我只想转录文本。 我对它们之间的区别感到困惑,如果我只想转录音频,是否有任何建议的方法。 使用Python语音识别: 不使用Python SpeechRecognition:

  • 我想制作一个语音识别器应用程序来转录用户的语音。我不想在这样做的时候有任何对话,所以是不可能的。(我知道如果我使用这种方法,我可以获得音频) 我正在使用SpeechRecognitor,并调用startListening来收听用户的音频。我在onResults中得到了非常准确的结果。 现在,我还需要在我的设备SD卡中存储用户的音频。为此,我尝试了MediaRecorder和AudioRecord,

  • 我做了很多研究,并尝试了离线pocket sphinx,但它接收了周围的声音,对我的应用程序做出了不同的反应。以上kitkat 4.4是否有谷歌离线应用程序。。我从两周后就开始尝试了。感谢您宝贵的回答。 详细信息:当活动开始时,第一个文本必须在完成后读取内容(文本到语音),读取语音识别必须根据命令例如:(下一步、上一步、前进、选项、1、2、3、4等)进行语音和语音识别。根据命令,它必须在on结果方