我们都知道许多语言都包含其他语言的几个单词。在使用Android语音识别(Androdi4.1)开发Android应用程序时,我们需要该应用程序同时使用两种语言(EN和TR)处理语音输入(或asynch)并为我们带来两种结果。
英语单词“Burger”in Turkish的发音是“Börgır”。 如果我们在英语中使用android语音识别,应用程序会将Burger视为Burger (在文字上)。 如果我们在土耳其语中使用android语音识别,应用程序将Burger视为Börgır(在文本上) 这是因为土耳其语被写为口语。
例如:
土耳其语选项的语音识别结果:Börgır yemek istiyorum
语音识别结果,英文选项:汉堡 xxxxx yyyyyyyyy
预期结果(合并结果):Burger yemek istiyorum
所以你知道如何同时处理两种语言,用android语音识别来收集两种结果,之后我们将它们组合起来以获得最佳效果。
下面的代码用于在应用程序中实现android语音识别:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
// Specify the calling package to identify your application
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "tr"); --- or eng-us
答案 0 :(得分:4)
使用当前的Android API无法完成此操作。
您可以尝试同时运行两个SpeechRecognizer个实例(一个使用土耳其语EXTRA_LANGUAGE
,另一个使用英语)。这可能不起作用,因为不同的服务不能同时使用麦克风。
您可以尝试自己实现录制部分,然后将生成的字节数组推送到两个不同的识别器。但是没有API。
答案 1 :(得分:1)
我建议您为语音识别器选择一种语言,如英语。然后,当您说出您的其他语言时,请查看语音识别器提供的内容。你或许可以解释英语对此的认可。
例如,如果您想对英语识别器说西班牙语,并且用户说" si"在西班牙语中,您可能会注意到识别器识别为"请参阅"
答案 2 :(得分:1)
我解决了这个问题:
language = "tr-TR";
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, language);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, language);
intent.putExtra(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES, language);
intent.putExtra(RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE, language);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, language);
intent.putExtra(RecognizerIntent.EXTRA_RESULTS, language);
startActivityForResult(intent, REQUEST_CODE);