Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌语音API认证_Java_Google Speech Api - Fatal编程技术网

Java 谷歌语音API认证

Java 谷歌语音API认证,java,google-speech-api,Java,Google Speech Api,我正在尝试使用谷歌语音API做一些测试,但是来自谷歌云之外。在旧的beta版中,我可以指定凭证文件,但现在在SpeechClient类中找不到该选项 如何使用Google Speech API Java库指定身份验证密钥?从发送到此处的问题开始跟进: 将服务帐户传递给SpeechClient的方法是使用以下流: CredentialsProvider credentialsProvider = FixedCredentialsProvider.create(ServiceAccountCrede

我正在尝试使用谷歌语音API做一些测试,但是来自谷歌云之外。在旧的beta版中,我可以指定凭证文件,但现在在
SpeechClient
类中找不到该选项


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

从发送到此处的问题开始跟进:

将服务帐户传递给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);

我最终使用了一个带有base64音频文件的post请求,然后在请求中添加了GoogleAPI密钥

                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;
var base64=Convert.ToBase64String(File.ReadAllBytes(File));
动态请求=新建
{
config=new
{
encoding=“LINEAR16”,
采样频率赫兹=8000,
languageCode=“en US”,
enableWordTimeOffsets=false
},
音频=新
{
content=base64
}
};
var json=JsonConvert.SerializeObject(请求);
var requestJson=StringContent(json,Encoding.UTF8,“application/json”);
var client=新的HttpClient();
var speechToText=“”;
var response=wait client.PostAsync($)https://speech.googleapis.com/v1/speech:recognize?key=GOOGLE-键”,请求JSON);
if(响应。IsSuccessStatusCode)
{
var content=await response.content.ReadAsStringAsync();
var converted=JsonConvert.DeserializeObject(内容);
如果(已转换!=null){
foreach(已转换的.Results中的var结果)
{
foreach(result.Alternatives中的var替代方案)
{
speechToText=speechToText+alternative.转录本;
}
}
}
}
返回speechToText;

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

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);

我知道这个答案太晚了。但我也遇到了版本和弃用函数的问题。下面是更新后的工作代码

    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);
希望这对别人有帮助