C# 对谷歌云语音API的调用不';不返回任何内容,10分钟后失败
我正在尝试使用C# 对谷歌云语音API的调用不';不返回任何内容,10分钟后失败,c#,google-app-engine,google-cloud-platform,speech-recognition,google-speech-api,C#,Google App Engine,Google Cloud Platform,Speech Recognition,Google Speech Api,我正在尝试使用Google.Cloud.Speech.V1(Google Cloud Speech API的客户端库),我正在使用Google示例代码的这个稍加修改的版本: public async Task<string> TranscribeSpeech(string filenameAndPath, int WAVSampleRate = 8000) { Environment.SetEnvironmentVariable("GOOGLE_APPLICA
Google.Cloud.Speech.V1
(Google Cloud Speech API的客户端库),我正在使用Google示例代码的这个稍加修改的版本:
public async Task<string> TranscribeSpeech(string filenameAndPath, int WAVSampleRate = 8000)
{
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Utils.GetHomeFolder() + @"\Google Speech API Key.json"); //for authentication
var language = WebConfigurationManager.AppSettings["GoogleSpeechFromLocale"];
var speech = SpeechClient.Create();
var response = await speech.RecognizeAsync(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz = WAVSampleRate,
LanguageCode = language,
}, RecognitionAudio.FromFile(filenameAndPath));
return response.Results.First().Alternatives.First().Transcript;
}
公共异步任务转录语音(字符串filenameAndPath,int-WAVSampleRate=8000)
{
Environment.SetEnvironmentVariable(“GOOGLE_应用程序_凭据”,Utils.GetHomeFolder()++@“\GOOGLE Speech API Key.json”);//用于身份验证
var language=WebConfigurationManager.AppSettings[“GoogleSpeechFromLocale”];
var speech=SpeechClient.Create();
var response=await speech.RecognizeAsync(new RecognitionConfig())
{
Encoding=RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz=波形SampleRate,
语言代码=语言,
},RecognitionAudio.FromFile(filenameAndPath));
返回response.Results.First().alternations.First().Transcript;
}
.Recognize()
或.RecognizeAsync()
方法从不返回任何内容,并在10分钟后抛出异常,表示状态为(StatusCode=deadlineextended,Detail=“Deadline extended”)代码>
换句话说,当我在Visual Studio中逐行调试时,代码在waitspeech.RecognizeAsync()
之后不会继续,而是一直挂起,直到10分钟后抛出异常为止
我的代码或API设置有问题吗
我的输入文件通常只有2-3秒长,格式如下(从ffmpeg
输出):
Stream#0:0:音频:pcm#U s16le([1][0][0][0]/0x0001),8000 Hz,单声道,s16,128 kb/s
我的应用程序代码托管在Azure上。谷歌云平台控制台显示没有API调用,这可能意味着我的请求无法到达谷歌服务器
同一个应用程序还调用Bing语音API,并且调用成功
如果我使用相同的WAV文件从运行调用,则会成功。我认为您遵循了上的安装指南:如果您这样做了,一切都会正常工作
然而,有一个最大限度的多少,你可以使用它
1.内容限制:
1-1同步请求
大约1分钟
1-2异步请求
大约80分钟
1-3流式处理请求
,也在1分钟左右
2.言语语境限制:
2-1每个请求的短语数
增加到500
每个请求的2-2个字符总数最多可达10k个字符
每个短语有2-3个字符
增加到100个
超过1分钟的音频必须使用uri
字段引用谷歌云存储中的音频文件
对于StreamingRecognite请求,音频必须以接近实时的速率发送
试图处理超出这些内容限制的内容将产生错误
如果您想了解谷歌语音API的更多限制,我建议您研究一下:因为我在另一个谷歌API中也遇到了同样的错误,超出了限制。通过注释SampleRateHertz
解决了这个问题:
var response = await speech.RecognizeAsync(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
//SampleRateHertz = WAVSampleRate,
LanguageCode = language,
}, RecognitionAudio.FromFile(filenameAndPath));
错误消息是:
识别配置中的采样频率赫兹(8000)必须省略或与WAV标头(48000)中的值匹配
云平台控制台没有显示API调用这一事实毫无意义。我已经使用语音API好几个月了,但什么都没有显示。您是否尝试过从一个简单的控制台应用程序运行代码,只是为了排除Azure是一个问题源?代码对我来说很好。另一件事是尝试将文件上传到谷歌云存储中的一个bucket中,然后使用speech.RecognizeAsync(rc,RecognitionAudio.FromStorageUri(url))
,您的url类似于gs://my\u bucket/test.raw
。这就排除了文件传输引起的问题。我们的团队去年受到了打击。。结果是我们超过了每天的最大请求量限制。。我们正在运行一个自动化脚本来处理成吨的音频样本,并描述不同平台在不同参数下的性能。我们与谷歌建立了合作关系,为了继续我们的分析,我们取消了开发用户帐户的限制。我的音频只有2-3秒长,所以我现在不会接受这个答案。谢谢你的研究。