Я хочу получить аудиофайл из С# и отправить 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());
}
Эта часть предназначена для загрузки файла .wav и получения ответа на API Google, который я нашел из Интернета.
Но мой код всегда ловит исключения:
вы должны записать байты длины содержимого в поток запросов до вызова в _HWR_SpeechToText.GetResponse(); Но я уже написал ContextLength.
Итак, мой вопрос в том, почему моя программа не удалась? Это потому, что ссылка google или HTTPWebRequest я использовал ненадлежащим образом?
Правильно ли я получил ключ API?