Wit.aiを使用しているので、私は音声をテキストに使用しようとしています。私はGithubのWit3Dの例を使用しています:https://github.com/afauch/wit3d/blob/master/Assets/UserScripts/Wit3D.csWit.aiタイムアウトC#Unity
.wavファイルへのサウンドの保存と保存はうまくいきます。要求をサーバーに送信することはできません。 .wavファイルは、手動でPostmanから要求を出したときに応答を受け取るので有効です。 「エラー:要求タイムアウト」の行を削除
私は、次のエラーメッセージが表示されます
string GetJSONText(string file)
{
// get the file w/ FileStream
FileStream filestream = new FileStream(file, FileMode.Open, FileAccess.Read);
BinaryReader filereader = new BinaryReader(filestream);
byte[] BA_AudioFile = filereader.ReadBytes((Int32)filestream.Length);
filestream.Close();
filereader.Close();
//var bytes = File.ReadAllBytes(Path.Combine(Application.dataPath, "sample.wav"));
// create an HttpWebRequest
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.wit.ai/speech?v=20160901");
request.Method = "POST";
request.Headers["Authorization"] = "Bearer 3XFWDOBVS65V5A2VZWZFBB2PHOKDWGOH";
request.ContentType = "audio/wav";
//request.Timeout = 10000;
request.GetRequestStream().Write(BA_AudioFile, 0, BA_AudioFile.Length);
// Process the wit.ai response
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
print("Http went through ok");
StreamReader response_stream = new StreamReader(response.GetResponseStream());
return response_stream.ReadToEnd();
}
else
{
return "Error: " + response.StatusCode.ToString();
return "HTTP ERROR";
}
}
catch (Exception ex)
{
return "Error: " + ex.Message;
return "HTTP ERROR";
}
}
または要求に応じてタイムアウトを入れずに:
要求コードは次のようになります: エラー:取得時にエラーが発生しまし応答ストリーム
request.GetRequestStream().Write(BA_AudioFile, 0, BA_AudioFile.Length)
は私に応答もらえます(書き込み:認証や暗号解読に失敗しましたが) 解読するものがないので意味があります。 私のファイアウォールは問題ではないようです。タイムアウトがある理由のアイデア?バイトを取得するさまざまな方法を使用しても、それを修正することはできませんでした。
編集: コードを通常のコンソールアプリケーションに入れると機能します。これはUnityの問題のようです。