当前位置: 首页 > 知识库问答 >
问题:

谷歌云语音NoSuchFieldError:CONTEXT_SPAN_KEY

颛孙飞
2023-03-14

我在尝试使用谷歌云语音库时出错。

这可能是关于我的依赖项。在添加Firebase身份验证依赖项之前,库是无缝工作的。所以它可能是关于endpoint-管理-控制-应用引擎-所有依赖项。

Stackdriver日志:

这是Audio识别器类的唯一方法:

@Override
public List<SpeechRecognitionResult> getRecognizedSpeechResults(String sourceLang, int sampleRate, String gcsUri) throws IOException, InterruptedException, ExecutionException {

    SpeechClient speechClient = SpeechClient.create();

    RecognitionConfig config = RecognitionConfig.newBuilder()
            .setEncoding(AudioEncoding.FLAC)
            .setLanguageCode(sourceLang)
            .setSampleRateHertz(sampleRate)
            .setEnableWordTimeOffsets(true)
            .build();

    RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(gcsUri).build();

    // Use non-blocking call for getting file transcription
    OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata> speechRecResponse = speechClient.longRunningRecognizeAsync(config, audio);
    while (!speechRecResponse.isDone()) {
        logger.warning("Waiting for response...");
        Thread.sleep(10000);
    }

    return speechRecResponse.get().getResultsList();
}

项目的依赖关系:

<dependencies>
    <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-framework</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-framework-guice</artifactId>
        <version>2.2.0</version>
    </dependency>
    <!-- [START api_management] -->
    <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-management-control-appengine-all</artifactId>
        <version>1.0.11</version>
    </dependency>
    <!-- [END api_management] -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-speech</artifactId>
        <version>0.87.0-beta</version>
    </dependency>
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-translate</artifactId>
        <version>1.69.0</version>
    </dependency>
    <!-- [START Objectify_Dependencies] -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>22.0</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.objectify</groupId>
        <artifactId>objectify</artifactId>
        <version>5.1.21</version>
    </dependency>
    <!-- [END Objectify_Dependencies] -->
    <!-- [START Test_Dependencies] -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- [END Test_Dependencies] -->
</dependencies>

共有1个答案

颛孙兴旺
2023-03-14

为了添加api管理,我浏览了这篇文章。它表示使用endpoint管理控制appengine all library。

后来,当我检查这个库的编译依赖项时,我看不到任何依赖项。他们可能在没有使用任何依赖项的情况下将代码塞进了库中,我想这就是为什么它有指示器-all。这导致具有相同类的多个实例。由于没有定义依赖项,maven无法在多个依赖项中选择一个。

简而言之,这是由从多个位置扫描类引起的。

幸运的是,这个库还有其他选择。下面是我现在用于api管理的依赖项。

<dependency>
    <groupId>com.google.endpoints</groupId>
    <artifactId>endpoints-management-control-appengine</artifactId>
    <version>1.0.11</version>
</dependency>
<dependency>
    <groupId>com.google.endpoints</groupId>
    <artifactId>endpoints-framework-auth</artifactId>
    <version>1.0.11</version>
</dependency>

而且我的项目中可能没有那么多代码,因为我没有添加所有的东西。

 类似资料:
  • 谷歌云平台语音命令[Listend]和[Listend-Infinite]在C#中,这两个选项是否可以立即语音识别,并存储在一个变量中,而不需要录音文件?我将制作一个程序,比较存储的语音数据,并在信息亭上表示它。我参考了https://github.com/googlecloudplatform/dotnet-docs-samples/tree/master/speech/api 我的项目的名字是

  • 我正在玩Google Cloud Speech API。我想知道我是否使用python语音识别库并调用google cloud语音API,这仍然是使用API的有效方式吗?我只想转录文本。 我对它们之间的区别感到困惑,如果我只想转录音频,是否有任何建议的方法。 使用Python语音识别: 不使用Python SpeechRecognition:

  • 我正在使用谷歌云语音到文本AP,并试图转录长音频文件。但是,无法检测到桶中的音频文件。我得到一个错误,说明:IOError:[Errno 2]没有这样的文件或目录: transcribe_gcs(gcs_uri):

  • 我使用的麦克风通过浏览器录制声音,将其转换为文件并将文件发送到java服务器。然后,我的java服务器将文件发送到云语音api并给我转录。问题是转录超长(2秒对话约为3.7秒)。 所以我想加快转录速度。首先要做的是流式传输数据(如果我在记录开始时开始转录。问题是我并不真正了解api。例如,如果我想从源(浏览器/麦克风)转录我的音频流,我需要使用某种JS api,但我找不到任何可以在浏览器中使用的东

  • 我正在开发google云语音api,我用我的flac文件尝试了他们的api,但他们只是转录了我的flac格式文件的一部分。我能对我的文件做些什么使它完美地工作吗。我试着在他们的链接上测试他们的api。我在请求正文中传递这个 {“audio”:{“uri”:“gs://kami1994/file-1506682082651.flac”},“config”:{“encoding”:“flac”,“la

  • 我一直在使用Chromium谷歌语音API,最近我改用谷歌云语音API。自从Google云语音API发布以来,其性能在识别准确率方面似乎有所下降。此外,我还看到越来越多的“空结果”返回音频流。 我同时将音频流传输到多个不同的服务,谷歌云语音API返回空结果,而其他一些服务返回转录文本。让我想知道Chromium语音API和Google Cloud语音API的工作方式是否有任何改变? 我验证了音频的