【问题标题】:Google Speech API credentials谷歌语音 API 凭据
【发布时间】:2017-06-07 10:04:59
【问题描述】:

我正在尝试使用 Google Speech API 但从 Google Cloud 外部进行一些测试。在较旧的 beta 版本中,我能够指定凭据文件,但现在我无法在 SpeechClient 类中找到此选项。

如何使用 Google Speech API Java 库指定身份验证密钥?

【问题讨论】:

    标签: java google-speech-api


    【解决方案1】:

    弗兰克的回答中的一些类现在已被弃用。这是对他的回答的更新。

    CredentialsProvider credentialsProvider = FixedCredentialsProvider.create(ServiceAccountCredentials.fromStream(new FileInputStream("path/to/service-account.json")));
    
    SpeechSettings settings = SpeechSettings.newBuilder().setCredentialsProvider(credentialsProvider).build();
    SpeechClient speechClient = SpeechClient.create(settings);
    

    【讨论】:

    • 如果您使用的是 Android Studio,请不要忘记添加以下依赖项:implementation 'io.grpc:grpc-okhttp:1.38.0' implementation 'io.grpc:grpc-stub:1.38.0' compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // necessary for Java 9+
    【解决方案2】:

    从此处发送的问题的跟进:https://github.com/GoogleCloudPlatform/java-docs-samples/issues/697#issuecomment-309696984

    将服务帐户传递给 SpeechClient 的方法是使用以下流程:

    CredentialsProvider credentialsProvider = FixedCredentialsProvider.create(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/service-account.json")));
    
    ChannelProvider channelProvider = SpeechSettings.defaultChannelProviderBuilder().setCredentialsProvider(credentialsProvider).build();
    
    SpeechSettings settings = SpeechSettings.defaultBuilder().setChannelProvider(channelProvider).build();
    
    // Instantiates a client
    SpeechClient speech = SpeechClient.create(settings);
    

    【讨论】:

      【解决方案3】:

      我知道这个答案为时已晚。但我也遇到了版本和不推荐使用的功能的问题。所以这是更新后的工作代码。

          InputStream inputStream = Your.class.getResourceAsStream("path/to/the/credentials/file.json");
          GoogleCredentials credentials = GoogleCredentials.fromStream(inputStream);
          CredentialsProvider credentialsProvider = FixedCredentialsProvider.create(credentials);
      
          TextToSpeechSettings settings = TextToSpeechSettings.newBuilder()
                  .setCredentialsProvider(credentialsProvider)
                  .build();
      
          TextToSpeechClient textToSpeechClient = TextToSpeechClient.create(settings);
      

      希望这对某人有帮助!!!

      【讨论】:

        【解决方案4】:

        我最终使用了带有 base64 音频文件的发布请求,然后在请求中添加了 Google api 密钥。

                        var base64 = Convert.ToBase64String(File.ReadAllBytes(file));
        
                        dynamic request = new
                        {
                            config = new
                            {
                                encoding = "LINEAR16",
                                sampleRateHertz = 8000,
                                languageCode = "en-US",
                                enableWordTimeOffsets = false
                            },
                            audio = new
                            {
                                content = base64
                            }
                        };
        
            var json = JsonConvert.SerializeObject(request);
            var requestJson = StringContent(json, Encoding.UTF8, "application/json");
        
                        var client = new HttpClient();
        
                        var speechToText = "";
                        var response = await client.PostAsync($"https://speech.googleapis.com/v1/speech:recognize?key=GOOGLE-KEY", requestJson);
                        if (response.IsSuccessStatusCode)
                        {
                            var content = await response.Content.ReadAsStringAsync();
        
                            var converted = JsonConvert.DeserializeObject<GcpSpeechApiResponseModel>(content);
        
                            if (converted != null) {
                                foreach (var result in converted.Results)
                                {
                                    foreach (var alternative in result.Alternatives)
                                    {
                                        speechToText = speechToText + alternative.Transcript;
                                    }
                                }
                            }
                        }
        
                        return speechToText;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-16
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 2017-03-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多