java - Google Cloud Speech API 添加 SpeechContext

标签 java android speech-recognition google-cloud-speech

我想在我的应用程序中添加一些关键字,以便 API 可以更有效地识别口语单词。 例如,我无法识别一些以 E 开头的意大利语单词,例如(E` per me)。或者用德语(er geht)。

这是我的代码:

public void recognize (int sampleRate) {
    if (mApi == null) {
        Log.w(TAG, "API not ready. Ignoring the request.");
        return;
    }
    // Configure the API
    mRequestObserver = mApi.streamingRecognize(mResponseObserver);
    mRequestObserver.onNext(StreamingRecognizeRequest.newBuilder()
            .setStreamingConfig(StreamingRecognitionConfig.newBuilder()
                    .setConfig(RecognitionConfig.newBuilder()
                            .setLanguageCode(getDefaultLanguageCode())
                            .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
                            .setSampleRateHertz(sampleRate)
                            .build())
                    .setInterimResults(true)
                    .setSingleUtterance(true)
                    .build())
            .build());
}

针对不同情况设置语言:

private String getDefaultLanguageCode() {

    SharedPreferences getLangSharedPrefs = getSharedPreferences("langSelected",0);
    String selectedLanguage = getLangSharedPrefs.getString("langSelected", null);
    switch (selectedLanguage) {
        case "German":
            langaugeCode = "de-DE";
            break;
        case "Italian":
            langaugeCode = "it-IT";
            break;
        case "Spanish" :
            langaugeCode = "es-ES";
            break;
        case "French" :
            langaugeCode = "fr-FR";
            break;
    }
    return langaugeCode;
}

最佳答案

我找到了解决方案:

 public void startRecognizing(int sampleRate) {
    if (mApi == null) {
        Log.w(TAG, "API not ready. Ignoring the request.");
        return;
    }
    // Configure the API
    mRequestObserver = mApi.streamingRecognize(mResponseObserver);
    SpeechContext.Builder speechBuilder = SpeechContext.newBuilder();
    speechBuilder.addPhrases("E per me");
    speechBuilder.addPhrases("E");
    mRequestObserver.onNext(StreamingRecognizeRequest.newBuilder()
            .setStreamingConfig(StreamingRecognitionConfig.newBuilder()
                    .setConfig(RecognitionConfig.newBuilder()
                            .setLanguageCode(getDefaultLanguageCode())
                            .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
                            .setSampleRateHertz(sampleRate)
                            .addSpeechContexts(speechBuilder)
                            .build())
                    .setInterimResults(true)
                    .setSingleUtterance(true)
                    .build())
            .build());
}

关于java - Google Cloud Speech API 添加 SpeechContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545278/

相关文章:

java - 在 Java 中是否可以应用部分类型参数?

java - 关于@PostConstruct 的问题

java - 在awaitConfimation之后关闭Executor线程

java.text.ParseException : Unparseable date: "04-02-2019"

android - 覆盖来自在 Android 中有翻译的模块/库的字符串资源

Python 语音识别.UnknownValueError

java - OSGi 组件可通过 Apache Felix 配置

安卓 Google Fit onConnectionFailed() SIGN_IN_REQUIRED

android - 带标点符号的实时语音识别

c# - Windows 10 语音识别