繁体   English   中英

AWS Polly REST API返回不可读的字符串-javascript

[英]AWS Polly REST API returns unreadable string - javascript

我试图提出一个简单的POST请求,以使用浏览器JavaScript中的AWS Polly REST API从纯文本合成语音 由于某些外部原因,我未使用AWS JS SDK。 这是我的要求:

 $.ajax({
        url: 'https://polly.us-west-2.amazonaws.com/v1/speech',

        type: 'POST',

        data:'{"OutputFormat":"mp3","Text":"Some text to listen","TextType":"text","VoiceId":"Joanna"}',

        dataType: 'text',

        beforeSend: function(xhr){

           xhr.setRequestHeader('Authorization', '<String>');

           xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        },

        success: function(result){
           console.log(result);
        }

});

请求成功,但是在打印结果时, 我收到以下消息

ID3#TSSELavf57.56.101`ùCNXDDDGwws'wDDDBD/?!+ .......一堆随机数据。

我尝试对其进行编码和操作,但是没有任何效果。 我浏览了所有的AWS Polly文档,大部分的stackoverflow帖子都没有,但没有结果。 该文档说,我需要以一种特定的格式接收AudioStream,我的回答只是一个不可读的字符串。

有任何想法吗?

谢谢!

如果他们可以帮助您更好地理解问题,请参见以下文档: http : //docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html

更新

通过不使用ajax而是将响应拼写更改为blob而是使用本机javascript POST请求来解决此问题。

var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function(){
   // something
}
xhr.open('POST')
xhr.setRequestHeader(...)
xhr.responseType = 'blob'

更新时间:似乎需要改组。 这看起来很接近: https : //stackoverflow.com/a/23082623/1483006一旦到达办公桌,将通过示例进行更新。

已更新:因此,您将从API获得正确的结果。 它会向您发送所请求语音的mp3文件。 然后,您的服务器应用程序应使用“ Content-Type:音频/ mpeg”将此mp3返回到调用的Web浏览器。

一个将所有这些总结的例子; 在客户端(Web浏览器)中,创建一个音频元素,其源URL指向您的服务器应用程序。 在应用程序的处理程序中,从Polly检索mp3,然后将其与适当的标头(“ Content-Type:audio / mpeg”)一起发送回去。 应该很简单。

老:我强烈建议您让图书馆为您这样做: https//github.com/ejbeaty/ChattyKathy

至少,请仔细阅读它以获取有关如何自己实现的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM