11

これは私のスクリプトです:

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

リクエストは成功し、次のようなレスポンスが得られます。

ここに画像の説明を入力

この種の応答をどのように使用しますか? 応答がデシリアライズされたオーディオであることは理解していますが、実際に再生するにはどうすればよいでしょうか?たとえば、HTML5 オーディオ要素内ではどうすればよいでしょうか?

さらに、SOに関するこの回答は、このタイプの配列がオーディオデータに適している理由を説明しています: https://stackoverflow.com/a/26320913/1325575

4

3 に答える 3

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

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

私はChattyKathyと呼ばれる Javascript ライブラリを作成しました。これは、簡単な方法を取りたい場合に、プロセス全体を処理します。

それに 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!");
于 2016-12-15T21:47:02.497 に答える