Amazon Polly を使って読み上げdiscord botを作った話(3)
Amazon Polly を使って読み上げdiscord botを作った話(2) - やよいの日記
の続き。
いよいよ読み上げ部分の作成。
その前に、AWSサービスに登録して、IAMユーザーでAmazon Pollyのユーザーを作っとく。
const AWS = require('aws-sdk'); const Stream = require('stream'); const Polly = new AWS.Polly({ signatureVersion: 'v4', region: 'us-east-2', accessKeyId: 'IAMユーザーのアクセスキー', secretAccessKey: 'IAMユーザーのシークレットキー' }); if (voice_ch) { if (message.channel.name != text_ch.name) { return; } if (message.content) { let text = message.content; let params = { 'Text': text, 'OutputFormat': 'mp3', 'VoiceId': 'Mizuki'}; Polly.synthesizeSpeech(params, (err, data) => { if (err) { console.log(err.code) } else if (data) { if (data.AudioStream instanceof Buffer) { let buffer_stream = new Stream.PassThrough(); buffer_stream.end(data.AudioStream); conn.play(buffer_stream); } } }); } }
Polly.synthesizeSpeech の部分が音声を取得するところ。
取得した音声データはdata.AudioStreamに入っているけど、そのままじゃ使えないので
Stream.PassThrough をつかってリーダブルバッファーに変換してあげる。
これでとりあえず音声を流すことができました。パチパチ。
でも実際に流してみるとたぶん ffmpeg のエラーが出てうまく流せないと思う。
その辺はまた後日解説いたします。