【发布时间】:2017-04-13 15:08:45
【问题描述】:
我正在尝试在浏览器 javascript 中使用 AWS Polly REST API 发出一个简单的 POST 请求以从纯文本合成语音。由于一些外部原因,我没有使用 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��`�ù�CNX�DDDGwws����'��wDDDB��D/��?����!+��������.... ...一堆随机数据。
我尝试对其进行编码并以某种方式对其进行操作,但没有任何效果。我浏览了所有 AWS Polly 文档,大部分 stackoverflow 帖子,但没有结果。文档说我需要以特定格式接收 AudioStream 我的响应只是一个不可读的字符串。
有什么想法吗?
谢谢!
如果它们可以帮助您更好地理解问题,这里是文档:http://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html
更新
通过将响应拼写错误更改为 blob 而不使用 ajax 而是使用本机 javascript POST 请求来解决问题。
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function(){
// something
}
xhr.open('POST')
xhr.setRequestHeader(...)
xhr.responseType = 'blob'
【问题讨论】:
-
您正在取回 MP3 - 您需要将它提供给可以播放结果的设备。
-
我想用html
<audio src="" />标签播放它,但是如何转换它以填充src参数? -
无需转换,您已有音频文件。
-
是的,你是对的,我有,但 Polly 以文本格式提供给我。如何转换它以便我可以播放它?
标签: javascript amazon-web-services post text-to-speech amazon-polly