2016-12-10 6 views
4

Это мой сценарий:Как играть в ответ AudioStream в AWS Polly с помощью JavaScript SDK?

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.7.13.min.js"></script> 
<script> 
    AWS.config.region = 'eu-west-1'; 
    AWS.config.accessKeyId = 'FOO'; 
    AWS.config.secretAccessKey = 'BAR'; 

    var polly = new AWS.Polly({apiVersion: '2016-06-10'}); 

    var params = { 
     OutputFormat: 'mp3', /* required */ 
     Text: 'Hello world', /* required */ 
     VoiceId: 'Joanna', /* required */ 
     SampleRate: '22050', 
     TextType: 'text' 
    }; 

    polly.synthesizeSpeech(params, function(err, data) { 
     if (err) console.log(err, err.stack); // an error occurred 
     else  console.log(data);   // successful response 
    }); 
</script> 

Запрос успешно, и я получаю такой ответ:

enter image description here

Как использовать этот вид реакции? Я понимаю, что ответ - десериализованный звук, но как я могу его воспроизвести, скажем, внутри аудиоэлемента HTML5?

Кроме того, этот ответ на SO объясняет, почему этот тип массива подходит для аудиоданных: https://stackoverflow.com/a/26320913/1325575

ответ

14
var uInt8Array = new Uint8Array(audioStream); 
var arrayBuffer = uInt8Array.buffer; 
var blob = new Blob([arrayBuffer]); 
var url = URL.createObjectURL(blob); 

audioElement.src = url; 
audioElement.play(); 

я создал библиотеку Javascript называется ChattyKathy, который будет обрабатывать весь процесс для вас, если вы хотите принять легкий выход.

Просто передайте объект AWS Credentials, а затем скажите ей, что сказать. Она назовет AWS, преобразует ответ и воспроизводит аудио.

var settings = { 
    awsCredentials: awsCredentials, 
    awsRegion: "us-west-2", 
    pollyVoiceId: "Justin", 
    cacheSpeech: true 
} 

var kathy = ChattyKathy(settings); 

kathy.Speak("Hello world, my name is Kathy!"); 
kathy.Speak("I can be used for an amazing user experience!"); 
+0

Woah, man, wow. –

+0

Была проблема с IE. Обетование не определено в функции say (message). Прекрасно работает в Chrome .. – user525504

+0

Вы можете исправить ошибку обещания в IE с помощью user525504

 Смежные вопросы

  • Нет связанных вопросов^_^