获取 Android 13 上 Google SpeechRecognizer (GoogleTTSRecognitionService) 支持的语言列表

问题描述 投票:0回答:2

在android 13之前,我可以使用意图RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS通过广播接收器成功获取支持的语言。在 Android 13 上,额外内容为空。代码如下:

public class LanguageDetailsChecker extends BroadcastReceiver {
        // for API < 13;
        @Override
        public void onReceive(Context context, Intent intent)  {
            Bundle results = getResultExtras(true);
            if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE))  {
                //languagePreference = results.getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE);
            }
            if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) {
                //supportedLanguages =  results.getStringArrayList( RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
            }
        }
    }

我当然看到了 Android 13 的新 API:

speechRecognizer.checkRecognitionSupport(testIntent, Executors.newSingleThreadExecutor(), new RecognitionSupportCallback() {
                    @Override
                    public void onSupportResult(@NonNull RecognitionSupport recognitionSupport) {}
                    @Override
                    public void onError(int error) {
                        Log.e(LOG_TAG, " onError >>>>>>>>>>>> ?? " + error);
                    }
                });

这总是让我陷入 onError,代码为 14。

顺便说一句,相同的 API 非常适合三星语音识别器(AiAiSpeechRecognitionService),我正在与 Google 服务一起测试它。

我已阅读this,其中指出 SpeechService 已被删除,但与此同时他们引入了应用程序来替换该服务,此外,他们还引入了新的 API (

checkRecognitionSupport
),这似乎不断产生错误。

我已经阅读了this,它没有给我关于如何使用新 API 的提示。

非常感谢任何帮助。

android speech-recognition speech-to-text
2个回答
0
投票

我还在新的 checkRecognitionSupport API 上收到错误 14,但我能够让它在设备识别器上工作。这是一个代码示例。

if ( SpeechRecognizer.isOnDeviceRecognitionAvailable(context)) {
    var recognizer = createOnDeviceSpeechRecognizer(context)
    var recognizerIntent =     
        Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
    recognizer?.checkRecognitionSupport(recognizerIntent,         
        Executors.newSingleThreadExecutor(),
        object : RecognitionSupportCallback {
            override fun onSupportResult(recognitionSupport: RecognitionSupport) {
                // use recognitionSupport.supportedOnDeviceLanguages 
                // or any of the other properties of recognitionSupport
            }
            override fun onError(error: Int) {
                // handle error conditions
            }
       })
    }

0
投票

我和你在同一条船上,看来你必须使用

的粗暴字典

块引用 EXTRA_LANGUAGE 添加到 API 级别 3

公共静态最终字符串EXTRA_LANGUAGE 可选的 IETF 语言标签(由 BCP 47 定义),例如“en-US”。此标签通知识别器以不同于 Locale.getDefault() 中设置的语言执行语音识别。

常量值:“android.speech.extra.LANGUAGE”

如果您有任何其他方式,欢迎您。

© www.soinside.com 2019 - 2024. All rights reserved.