Bing语音转文本机器人的Skype音频

问题描述 投票:2回答:1

我有一个Azure机器人,能够使用Bing Speech API获取wav音频文件并转换为文本。我试图将其连接到Skype。我想不出如何从附件中获取信息流。我的代码的第一部分找到ContentType ='audio'好的Skype附件:

    public async Task<string> GetText(IMessageActivity messageActivity)
    {
        var connector = new ConnectorClient(new Uri(messageActivity.ServiceUrl));
        try
        {
            var skypeAudioAttachment = messageActivity.Attachments?.FirstOrDefault(sa => sa.ContentType.Equals("audio"));
            if (skypeAudioAttachment != null)
            {
                var stream = await GetAudioStream(connector, skypeAudioAttachment);

但是然后我尝试使用下面的代码(从Microsoft BotBuilder示例的Controller \ MessagesController.cs文件中获取:https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/intelligence-SpeechToText)来获取流:

    private static async Task<Stream> GetAudioStream(ConnectorClient connector, Attachment audioAttachment)
    {
        using (var httpClient = new HttpClient())
        {
            // The Skype attachment URLs are secured by JwtToken,
            // you should set the JwtToken of your bot as the authorization header for the GET request your bot initiates to fetch the image.
            // https://github.com/Microsoft/BotBuilder/issues/662
            var uri = new Uri(audioAttachment.ContentUrl);
            if (uri.Host.EndsWith("skype.com") && uri.Scheme == "https")
            {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await GetTokenAsync(connector));
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));
            }

            return await httpClient.GetStreamAsync(uri);
        }
    }

    private static async Task<string> GetTokenAsync(ConnectorClient connector)
    {
        var credentials = connector.Credentials as MicrosoftAppCredentials;
        if (credentials != null)
        {
            return await credentials.GetTokenAsync();
        }

        return null;
    }

失败,我想是因为我无法访问该网址。有谁知道如何掌握Skype音频流或知道我应该怎么做的示例?

ContentUrl的格式为:https://smba.trafficmanager.net/apis/v3/attachments/LONG_ID_GOES_HERE/views/original。我从httpClient.GetStreamAsync请求中得到的错误是“响应状态代码不指示成功:401(未授权)。”

谢谢

c# azure botframework skype bing-speech
1个回答
0
投票

您找到解决方案了吗???我处于相同的情况

© www.soinside.com 2019 - 2024. All rights reserved.