1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS日記⑨ (Polly)

Last updated at Posted at 2020-05-31

はじめに

今回は Amazon Pollyの音声合成を試します。

今回作成したAmazon Polly の音声合成機能を試すページ

準備

[Lambda , API Gatewayの準備をします。]
(https://qiita.com/tanaka_takurou/items/3f93295de6cff060ec09)
[S3の準備をします。]
(https://qiita.com/tanaka_takurou/items/de897b0906087cec1a86)

[Amazon Pollyの資料]
Amazon Polly を使用した日本語テキスト読み上げの最適化
Amazon Pollyを触ってみたよ by PHP

WEBページ・API作成

GO言語のAWS Lambda関数ハンドラー aws-lambda-go を使用してHTMLやJSONを返す処理を作成します。
また、Polly を使用するため aws-sdk-go を利用します。

[参考資料]
AWS SDK for Go API Reference

音声合成を利用するには SynthesizeSpeech を使う。
main.go
func synthesizeSpeech(message string)(string, error) {
        t := time.Now()
        svc := polly.New(session.New(), &aws.Config{
                Region: aws.String("ap-northeast-1"),
        })

        voiceId := "Takumi"
        input := &polly.SynthesizeSpeechInput{
                Text:         aws.String(message),
                TextType:     aws.String("text"),
                VoiceId:      aws.String(voiceId),
                LanguageCode: aws.String(languageCode),
                OutputFormat: aws.String(outputFormat),
        }
        res, err := svc.SynthesizeSpeech(input)
        if err != nil {
                return "", err
        }
        buf := new(bytes.Buffer)
        io.Copy(buf, res.AudioStream)
        data := buf.Bytes()
        contentType := "audio/mp3"
        filename := t.Format(layout2) + ".mp3"
        sess, _ := session.NewSession(&aws.Config{
                Region: aws.String(bucketRegion)},
        )
        uploader := s3manager.NewUploader(sess)
        _, err = uploader.Upload(&s3manager.UploadInput{
                ACL: aws.String("public-read"),
                Bucket: aws.String(bucketName),
                Key: aws.String(filename),
                Body: bytes.NewReader(data),
                ContentType: aws.String(contentType),
        })
        if err != nil {
                return "", err
        }
        url := "https://" + bucketName + ".s3-" + bucketRegion + ".amazonaws.com/" + filename
        return url, nil
}

作成された音声ファイルをS3にアップロードし、そのURLを指定することでWebページ上で再生する方法をとりました。

終わりに

今回はAmazon Pollyの音声合成機能を試しました。
他の機能として、発話スタイルを指定した音声を合成ができます。現在は米国英語限定です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?