[英]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.