我有兴趣了解是否可以使用Android上的Google TTS进行离线语音识别,并尝试使其成功而不成功。我正在开发一款Android应用程序,该应用程序要求用户在手机中说出一个“魔术词”,当手机听到正确的词时,手机会响应。当我连接到网络时,语音识别工作正常,但我需要使其脱机工作。
我正在查看Android文档,并发现了这一点:[KEY_FEATURE_EMBEDDED_SYNTHESIS] [1]该文档说使用getFeatures(Locale)检索功能,以查看引擎支持的功能。它返回了两个功能:用于Google文本到语音引擎的embeddedTts和networkTts,因此embeddedTts功能可用。在下面代码的第3行中,我根据Android文档启用了此功能,但似乎没有任何效果。我也尝试将networkTts功能设置为false,并且也没有改变行为。每当我没有连接到数据网络时,我都会收到错误“目前无法访问Google”。
我希望有人能帮助我了解如何使用embeddedTts。
我在运行Android 4.1.1的三星Galaxy S3上测试我的应用程序
谢谢。
以下是相关代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
HashMap<String, String> localSpeech = new HashMap<String, String>();
localSpeech.put(TextToSpeech.Engine.KEY_FEATURE_EMBEDDED_SYNTHESIS, "true");
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);
if (matches.size() == 0)
{
tts.speak("Heard nothing", TextToSpeech.QUEUE_FLUSH, null);
} else {
String mostLikelyThingHeard = matches.get(0);
String magicWord = "Magic";
if (mostLikelyThingHeard.equals(magicWord)) {
//tts.speak("You got it!", TextToSpeech.QUEUE_FLUSH, null);
tts.speak("You got it!", TextToSpeech.QUEUE_FLUSH, localSpeech);
} else {
tts.speak("The magic word is not " + mostLikelyThingHeard + " try again", TextToSpeech.QUEUE_FLUSH, localSpeech);
}
}
}
else {
Log.d("APP", "result NOT ok");
}
super.onActivityResult(requestCode, resultCode, data);
}
答案 0 :(得分:1)
您正在将语音识别(也称为“语音识别”和“语音到文本”)与语音合成(也称为“TTS”和“文本到语音”)混合在一起。要回答您的问题,使用语音合成API无法实现语音识别。