如何在android语音识别中同时使用多种语言

时间:2013-01-29 18:43:43

标签: android android-intent speech-recognition speech-to-text

我们都知道许多语言都包含其他语言的几个单词。在使用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

3 个答案:

答案 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);
相关问题