Как использовать Google распознавания речи API в C #?

Я хочу получить аудиофайл из c # и отправить его в API распознавания речи Google для получения ответа «речь в текст».

Мой код такой:

try
{                
    byte[] BA_AudioFile = GetFile(filename);              
    HttpWebRequest _HWR_SpeechToText = null;
    _HWR_SpeechToText =
                (HttpWebRequest)HttpWebRequest.Create(
                    "https://www.google.com/speech-api/v2/recognize?output=json&lang=" + DEFAULT_LANGUAGE + "&key=" + key);
    _HWR_SpeechToText.Credentials = CredentialCache.DefaultCredentials;
    _HWR_SpeechToText.Method = "POST";
    _HWR_SpeechToText.ContentType = "audio/x-flac; rate=44100";
    _HWR_SpeechToText.ContentLength = BA_AudioFile.Length;
    Stream stream = _HWR_SpeechToText.GetRequestStream();
    stream.Write(BA_AudioFile, 0, BA_AudioFile.Length);
    stream.Close();

    HttpWebResponse HWR_Response = (HttpWebResponse)_HWR_SpeechToText.GetResponse();
    if (HWR_Response.StatusCode == HttpStatusCode.OK)
    {
        StreamReader SR_Response = new StreamReader(HWR_Response.GetResponseStream());
        Console.WriteLine(SR_Response.ToString());
    }

}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}

Эта часть предназначена для загрузки файла file.wav и получения ответа на API Google, который я нахожу из Интернета.

Но мой код всегда ловит исключения:

Вы должны записать байты длины содержимого в поток запроса перед вызовом в _HWR_SpeechToText.GetResponse (); Но я уже написал ContextLength.

Итак, мой вопрос, почему моя программа не удалась? Это из-за того, что ссылку на Google или HTTPWebRequest я использовал не по назначению?

Это то место, где я получил ключ API?

Ответы на вопрос(1)

Ваш ответ на вопрос