首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >403禁止从机器人调用Microsoft语音API

403禁止从机器人调用Microsoft语音API
EN

Stack Overflow用户
提问于 2017-04-05 15:20:06
回答 1查看 685关注 0票数 1

更新:代码与微软(f2da0a19f4d94875880e9fbaceabc97d)的试用密钥完美地工作,但我在Azure中生成的自己的密钥却失败了。哇哈?

解决方案:我使用了一个键“翻译器语音API”,而不是“必应语音API”。那是个错误。哇。浪费了两个小时。

我在写一个接收语音输入的机器人。为此,我使用的是微软的必应语音API。

我发送请求如下,并收到403禁止错误。根据官方文件,403意味着认证或配额问题。但是,我有一个付费帐户(不是免费帐户),身份验证令牌似乎是正确接收的。

URL:

https://speech.platform.bing.com/recognize?scenarios=ulm&appid=D4D52672-91D7-4C74-8AD8-42B1D98141A5&locale=en-US&device.os=bot&version=3.0&format=json&instanceid=45d58c78-e2d8-444f-83c8-9a5dca7225ba&requestid=a3613a79-d84b-497d-87d7-19b19552c0a5

标题:

授权:无记名eyJ0eXAiOiJlV1QiLCJhbGciOiJIUzI1NiJ9.eyJzY29wZSI6Imh0dHBzOi8vZGV2Lm1pY3Jvc29mdHRyYW5zbGF0b3IuY29tLyIsInN1YnNjcmlwdGlvbi1pZCI6ImM4ZWQyMTNlNjUyMTRhYzc4MDFlNGU0M2RjZmQ1ZWZkIiwicHJvZHVjdC1pZCI6IlNwZWVjaFRyYW5zbGF0b3IuUzEiLCJjb2duaXRpdmUtc2VydmljZXMtZW5kcG9pbnQiOiJodHRwczovL2FwaS5jb2duaXRpdmUubWljcm9zb2Z0LmNvbS9pbnRlcm5hbC92MS4wLyIsImF6dXJlLXJlc291cmNlLWlkIjoiL3N1YnNjcmlwdGlvbnMvZmU4ZjI4ZDktZDJlNy00YWY0LxIwOGUtNWU3N2Y5YTc0ODY2L3Jlc291cmNlR3JvdXBzL2JvdHMvcHJvdmlkZXJzL01pY3Jvc29mdC5Db2duaXRpdmVTZXJ2aWNlcy...bWljcm9zb2Z0dHJhbnNsYXRvciIsImV4cCI6MTQ5MTQwNTcxM30.mdFdi98OGyjZ_sDYvd2lMWZqvPMROYyiChQz0JKh7fk}

我得到的回复是403禁止没有任何额外的信息。

有什么想法吗?我只是从这里使用微软的参考实现-- https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/intelligence-SpeechToText --但是我有自己的订阅密钥。

代码:

代码语言:javascript
运行
复制
    public async Task<string> GetTextFromAudioAsync(Stream audiostream)
    {
        var requestUri = @"https://speech.platform.bing.com/recognize?scenarios=ulm&appid=D4D52672-91D7-4C74-8AD8-42B1D98141A5&locale=en-US&device.os=bot&version=3.0&format=json&instanceid=45d58c78-e2d8-444f-83c8-9a5dca7225ba&requestid=" + Guid.NewGuid();

        using (var client = new HttpClient())
        {
            var token = Authentication.Instance.GetAccessToken();
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);

            //using (var binaryContent = new ByteArrayContent(StreamToBytes(audiostream)))
            using (var binaryContent = new ByteArrayContent(File.ReadAllBytes(Environment.GetEnvironmentVariable("HOME").ToString() + "\\site\\wwwroot\\test.wav")))
            {
                binaryContent.Headers.TryAddWithoutValidation("content-type", "audio/wav; codec=\"audio/pcm\"; samplerate=8000");

                var response = await client.PostAsync(requestUri, binaryContent);
                var responseString = await response.Content.ReadAsStringAsync();
                try
                {
                    dynamic data = JsonConvert.DeserializeObject(responseString);
                    if (data == null)
                    {
                        throw new Exception("Server responded: " + response.StatusCode);
                    }
                    return data.header.name;
                }
                catch (JsonReaderException ex)
                {
                    throw new Exception(responseString, ex);
                }
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-18 03:47:27

我使用了一个键“翻译器语音API”,而不是“必应语音API”。那是个错误。哇。浪费了两个小时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43235365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档