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中逐行调试时,代码在wait
speech.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秒长,所以我现在不会接受这个答案。谢谢你的研究。