Отправьте файл в Google Cloud Speech в Text API из C# в приложении Unity - PullRequest
0 голосов
/ 22 апреля 2020

Я работаю над игрой, использующей распознавание речи в 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». Вы знаете, как я могу решить эту проблему?

...