我正在嘗試使用Google.Cloud.Speech.V1
(Google雲語音API的客戶端庫),並且我使用的是Google的示例代碼的稍微修改後的版本:撥打Google雲語音API不會返回任何內容,10分鐘後失敗
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;
}
.Recognize()
或.RecognizeAsync()
方法從不返回任何內容,並在10分鐘後拋出異常說Status(StatusCode=DeadlineExceeded,Detail="Deadline Exceeded")!
。
換句話說,當我在Visual Studio中逐行進行調試時,代碼在等待speech.RecognizeAsync()
後不會繼續,並且只是保持等待狀態,直到它在10分鐘後拋出異常。
我的代碼或API設置有問題嗎?
我輸入文件通常只有2-3秒長,並具有以下格式(輸出ffmpeg
):
Stream #0:0: Audio: pcm_s16le ([1][0][0][0]/0x0001), 8000 Hz, mono, s16, 128 kb/s
我的應用程序的代碼是在Azure上託管。 Google雲端平臺控制檯顯示沒有API調用 - 可能意味着我的請求無法訪問Google服務器。
同樣的應用程序也會調用Bing Speech API並且它們是成功的。
如果我使用相同的WAV文件從https://developers.google.com/apis-explorer/?hl=en_US#p/speech/v1beta1/speech.speech.syncrecognize運行呼叫,它會成功。
事實上,您的雲平臺控制檯不顯示API調用意味着什麼。我幾個月來一直在使用語音API,並沒有任何顯示。您是否嘗試過從簡單的控制檯應用程序運行代碼,只是爲了排除Azure作爲問題源?該代碼適用於我。 –
另一個要嘗試的是將文件上傳到谷歌雲存儲中的存儲桶,然後使用'speech.RecognizeAsync(rc,RecognitionAudio.FromStorageUri(url));',您的url就像'gs:// my_bucket/test.raw'。這應該排除由文件傳輸引起的問題。 –