C#中的Google语音转文本API停止工作



我正在尝试使用Google Speech API将语音转换为文本。我在下面有一个示例代码。它工作正常,它突然停止工作,现在它总是抛出错误 - 400 错误请求。我正在使用GOOGLE_SPEECH_KEY在没有 OAuth2 令牌的情况下进行身份验证。

不知道我到底错过了什么。我是否需要创建 OAuth 身份验证,或者是否需要修改 Google 门户中的任何控制台设置,或者需要修改代码本身?请帮忙!

我使用了以下所有 API 和相同的 400 错误:1. 网址 = "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;
2. 网址 = "https://speech.googleapis.com/v1/speech:recognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;
3. 网址 = "https://speech.googleapis.com/v1p1beta1/speech:recognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;

    public static string GoogleSpeechToTextApi(string flacUrl)
    {
        string pTranscriptText = "None", pTranscriptConfidence = "";
        string appendText = "";
        try
        {
            // Stream responseStream = imageResponse.GetResponseStream();             
            if (flacUrl != null)
            {
                string blobURI = flacUrl;
                WebClient myWebClient = new WebClient();
                Stream fileStream = myWebClient.OpenRead(blobURI);
                byte[] BA_AudioFile = null;
                using (var stream2 = new MemoryStream())
                {
                    fileStream.CopyTo(stream2);
                    stream2.SetLength(stream2.Length);
                    stream2.Read(stream2.GetBuffer(), 0, (int)stream2.Length);
                    BA_AudioFile = stream2.GetBuffer();
                }
                string audioInput = Convert.ToBase64String(BA_AudioFile);
                Config config = new Config();
                config.encoding = "flac";
                config.languageCode = "en";
                  config.sampleRate = "8000";
                Audio audio = new Audio();
                audio.content = audioInput;
                JsonRequest request = new JsonRequest();
                request.config = config;
                request.audio = audio;
                string json = JsonConvert.SerializeObject(request);
                string url = "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;  // original api url
                //url = "https://speech.googleapis.com/v1/speech:recognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;                  // tested with this
                //url = "https://speech.googleapis.com/v1p1beta1/speech:recognize?key=" + ACCESS_GOOGLE_SPEECH_KEY;           // tested with this
                WebRequest webRequest = WebRequest.Create(url);
                webRequest.Method = "POST";
                byte[] byteArray = Encoding.UTF8.GetBytes(json);
                webRequest.ContentLength = byteArray.Length;
                Stream dataStream = webRequest.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                WebResponse response = webRequest.GetResponse();
                dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                RootObject ro = JsonConvert.DeserializeObject<RootObject>(responseFromServer);
                dynamic JsonArray = JsonConvert.DeserializeObject(responseFromServer);
                var jsonResult = JsonArray["results"];
                foreach (var item in jsonResult)
                {
                    appendText += item.alternatives[0].transcript;
                }
            }
            return appendText;
        }
        catch (Exception ex)
        {
            return appendText = "Error";
        }
    }
}

}

>错误 400 表示您的请求不正确。您可以尝试使用文件wav进行encoding = linear16audioChannelCount = 2sampleRateHertz = 16000。顺便说一句,您可以在标头请求中传递密钥,而不是在您的 url 中传递

最新更新