Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向异步API发送音频blob的AJAX请求_Javascript_C#_Jquery_Ajax_Azure Cognitive Services - Fatal编程技术网

Javascript 向异步API发送音频blob的AJAX请求

Javascript 向异步API发送音频blob的AJAX请求,javascript,c#,jquery,ajax,azure-cognitive-services,Javascript,C#,Jquery,Ajax,Azure Cognitive Services,我正在处理一个遗留系统,我正在尝试调用一个HTTP处理程序,我添加了一些逻辑,可以从Azure服务检索音频blob。 问题是,我似乎无法将内容返回给客户端以便播放。 我从jQuery调用中得到的响应是: “System.Threading.Tasks.Task`1[System.String]” 这是processRequest代码: public void ProcessRequest(HttpContext context) { var text = "walk";

我正在处理一个遗留系统,我正在尝试调用一个HTTP处理程序,我添加了一些逻辑,可以从Azure服务检索音频blob。 问题是,我似乎无法将内容返回给客户端以便播放。 我从jQuery调用中得到的响应是: “System.Threading.Tasks.Task`1[System.String]”

这是processRequest代码:

public void ProcessRequest(HttpContext context)
    {
        var text = "walk";
        Authentication auth = new Authentication("subscriptionID");
        context.Response.Write(auth.getVoice(text));
    }
下面是getVoice函数:

 public async Task<string> getVoice(string text)
    {
        using (var client = new HttpClient())
        {
            try
            {
                client.DefaultRequestHeaders
                    .Add("User-Agent", "uagent");
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
                client.DefaultRequestHeaders.Add("Authorization", "Bearer " + this.token);
                client.DefaultRequestHeaders.Add("host", "westeurope.tts.speech.microsoft.com");
                client.DefaultRequestHeaders.Add("X-MICROSOFT-OutputFormat", "audio-16khz-32kbitrate-mono-mp3");
                UriBuilder uriBuilder = new UriBuilder(VoiceUri);
                // send xml post 
                var voiceTest = "<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Female'\n\rname='Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)'>\n\rWalk\n\r</voice></speak>";
                var data = new StringContent(voiceTest, Encoding.UTF8, "application/xml");
                data.Headers.ContentType = new MediaTypeHeaderValue("application/ssml+xml");
                var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, data);
                return await result.Content.ReadAsStringAsync();
            }
            catch (Exception e)
            {

                return null;
            }
        }
公共异步任务getVoice(字符串文本) { 使用(var client=new HttpClient()) { 尝试 { client.DefaultRequestHeaders .Add(“用户代理”、“用户代理”); client.DefaultRequestHeaders.Add(“Ocp Apim订阅密钥”,subscriptionKey); client.DefaultRequestHeaders.Add(“授权”、“持有人”+此.token); client.DefaultRequestHeaders.Add(“主机”,“westeurope.tts.speech.microsoft.com”); client.DefaultRequestHeaders.Add(“X-MICROSOFT-OutputFormat”、“audio-16khz-32kbitrate-mono-mp3”); UriBuilder UriBuilder=新的UriBuilder(VoiceUri); //发送xml邮件 var voiceTest=“\n\rWalk\n\r”; var data=newstringcontent(voiceTest,Encoding.UTF8,“application/xml”); data.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/ssml+xml”); var result=wait client.PostAsync(uriBuilder.Uri.AbsoluteUri,data); 返回wait result.Content.ReadAsStringAsync(); } 捕获(例外e) { 返回null; } }
服务器API调用成功,但我似乎无法在客户端接收它,以便在之后向用户播放。

您必须打开
auth.getVoice
的结果。您可以使用
wait
关键字来完成此操作。您还需要处理程序实现
httptasksynchHandler
类,以便使其具有劳动

public class TestHandler : HttpTaskAsyncHandler
{
    public async override Task ProcessRequestAsync(HttpContext context)
    {
        var text = "walk";
        Authentication auth = new Authentication("subscriptionID");
        context.Response.Write(await auth.getVoice(text)); //added await here
    }
//..
}

好的,代码更改允许我接收blob数据,但我仍然不知道如何播放。我正在尝试使用音频元素,但到目前为止没有成功。