我使用以下代码来调用谷歌的语音识别器:
// 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:
- 进入设置中的“语言和输入法”
- 点击“语音”下的“下载离线语音识别”
搜索”
- 选择您希望 Android 设备识别的语言包
- 下载该包并享受离线语音打字
又一个帮手link:
由于硬件限制,谷歌已限制某些 Jelly Bean 设备使用离线识别功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)