我正在编写一个Angular 2应用程序(使用angular cli构建),并尝试使用AWS Polly文本到语音API。
根据API,您可以请求音频输出以及可以描述单词定时,视位等的“语音标记”。音频以“mp3”格式传送,语音标记为“application / x-json” -stream“,我理解为”新线“分隔JSON。由于新行,无法使用JSON.parse()进行解析。我还无法读取/解析这些数据。我查看过几个用于“json streaming”的库,但它们都是为node.js构建的,不适用于Angular 2.我的代码如下......
onClick() {
AWS.config.region = 'us-west-2';
AWS.config.accessKeyId = 'xxxxx';
AWS.config.secretAccessKey = 'yyyyy';
let polly = new AWS.Polly();
var params = {
OutputFormat: 'json',
Text: 'Hello world',
VoiceId: 'Joanna',
SpeechMarkTypes:['viseme']
};
polly.synthesizeSpeech(params, (err, data) => {
if (err) {
console.log(err, err.stack);
} else {
var uInt8Array = new Uint8Array(data.AudioStream);
var arrayBuffer = uInt8Array.buffer;
var blob = new Blob([arrayBuffer]);
var url = URL.createObjectURL(blob);
this.audio.src = url;
this.audio.play(); // works fine
// speech marks info displays "application/x-json-stream"
console.log(data.ContentType);
}
});
奇怪的是,Chrome浏览器知道如何读取此数据并将其显示在响应中。
非常感谢任何帮助。
答案 0 :(得分:0)
我遇到了同样的问题。我保存了文件,以便我可以逐行读取它,当我需要突出显示正在读取的单词时访问JSON对象。请注意,这可能不是最有效的方法,但这是一种简单的方法,可以继续前进并开发有趣的东西。
我正在尝试与Polly合作的不同方式,如果我找到更好的方法会更新答案