【发布时间】:2016-12-17 13:48:33
【问题描述】:
我正在尝试向 Microsoft Bing 语音 API 发送 HTTP 发布请求或转录音频文件。首先,我们需要发送一个发布请求以获取“访问令牌”作为响应,然后在另一个发布请求中使用此令牌(作为授权)来上传实际文件并在响应中获取转录。我可以发送第一个发布请求并成功获取访问令牌,但我无法为我的第二个发布请求获得合理的响应。我关注此页面:https://www.microsoft.com/cognitive-services/en-us/speech-api/documentation/api-reference-rest/bingvoicerecognition
这是第二次发帖请求:
Guid requestId = Guid.NewGuid();
var Uri = @"https://speech.platform.bing.com/recognize?version=3.0&requestid=" + requestId.ToString() + @"&appID=D4D52672-91D7-4C74-8AD8-42B1D981415A&format=json&locale=en-US&device.os=Windows%20OS&scenarios=ulm&instanceid=f1efbd27-25fd-4212-9332-77cd63176112";
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, Uri);
request.Headers.Add("Authorization", String.Format("Bearer {0}", accessToken));
request.Headers.TryAddWithoutValidation("Content-Type", @"audio/wav; samplerate=16000");
MemoryStream ms = new MemoryStream();
using (var fs = System.IO.File.OpenRead("audio.wav"))
{
byte[] buffer = new byte[1024 * 8];
while (fs.Read(buffer, 0, buffer.Length) > 0)
{
ms.Write(buffer, 0, buffer.Length);
}
fs.Close();
}
ms.Seek(0, SeekOrigin.Begin);
HttpContent _Body = new StreamContent(ms);
request.Content = _Body;
var client2 = new HttpClient();
var response2 = client2.SendAsync(request);
我想问题出在我为标题设置“Content-Type”的位置。原因是当我调试时,我没有看到在请求的 Header 中设置了这个属性。实际上,header 中没有 Content-Type。任何帮助,将不胜感激。此页面讨论了等效的 curl 命令,也可以提供帮助:https://social.msdn.microsoft.com/Forums/en-US/ad73e4f1-e576-4080-9fe7-060cc2f583ca/microsoft-bing-voice-recognition-api-authorization-404resource-not-found?forum=SpeechService
【问题讨论】:
标签: c# http-post httpclient content-type bing-api