2016-12-10 1 views
4

이 내 스크립트입니다JavaScript SDK를 사용하여 AWS Polly에서 AudioStream 응답을 재생하는 방법은 무엇입니까?

<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 오디오 요소 안에서 어떻게 재생합니까? 나는 자바 스크립트 라이브러리를 촬영할 경우에 당신을위한 전체 프로세스를 처리 할 것 ChattyKathy라고 만든 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(); 

: 오디오 데이터에 적합한 배열이 유형의 이유

또한,에,이 대답은 SO 설명 쉬운 길.

그냥 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

와우, 남자, 와우. –

+0

IE에 문제가 있습니다. 약속은 함수 (메시지)에서 정의되지 않았습니다. Chrome에서 완벽하게 작동합니다. – user525504

+0
관련 문제