Я работаю над игрой, использующей распознавание речи в Unity, и я хотел бы использовать Google API. Поток кода должен быть таким: я узнаю ключевое слово (например, «Unity») для начала записи (используя KeyWordRecognizer из библиотек Unity), затем я начинаю записывать звук с микрофона; когда я заканчиваю запись sh, я сохраняю аудио в файл wav, затем отправляю его в API для получения транскрипции. У меня проблемы с реализацией запроса к API Goole; на данный момент я использовал код из этого git, но я немного изменил его:
//after saving the audio to a wav file
string apiURL = "https://speech.googleapis.com/v1p1beta1/speech:recognize?key=" + apiKey;
string Response;
Response = Upload(apiURL, filePath);
Функция загрузки:
private string Upload(string url, string file) {
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "audio/l16; rate=44100";
wr.Method = "POST";
wr.KeepAlive = true;
wr.Credentials = CredentialCache.DefaultCredentials;
Stream rs = wr.GetRequestStream();
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
rs.Write(buffer, 0, bytesRead);
fileStream.Close();
rs.Close();
WebResponse wresp = null;
try {
wresp = wr.GetResponse();
Stream stream2 = wresp.GetResponseStream();
StreamReader reader2 = new StreamReader(stream2);
string responseString = string.Format("{0}", reader2.ReadToEnd());
Debug.Log("HTTP RESPONSE" + responseString);
return responseString;
}
catch(Exception ex) {
Debug.Log(string.Format("Error uploading file error: {0}", ex));
if(wresp != null) {
wresp.Close();
wresp = null;
return "Error";
}
}
finally {
wr = null;
}
return "empty";
}
Когда я запускаю В приложении в Unity я получаю ошибку 400 «Bad Request». Вы знаете, как я могу решить эту проблему?