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