gitkadoの日記

島根の若手エンジニアが暇潰しに書いてます

SAM使って文字起こし&言語分析してみた

はじめに

先日開催された JAWS-UG Shimane#10 で行ったハンズオンが非常に面白かったです。
ざっくり下図のような構成のハンズオンで、以下のリポジトリがハンズオンの資料です。

f:id:gitkado:20200206191753p:plain

https://github.com/harunobukameda/Amazon-Translate---Amazon-Polly---Amazon-Transcribe---Amazon-Comprehend---Amazon-Elasticsearch

ここから本題

これらをハンズオン後に、AWS SAM 使って一式構築してみました。

↓ 実装したソース一式
https://github.com/gitkado/aws-sam-polly-transcribe-comprehend

ポイント

  • Lambda関数をRubyで実装しました。
  • SAMを使用してワンライナーで構築することができます。

利用サービス

構成

f:id:gitkado:20200206191746p:plain

TranslateFunction

  1. 英語文章でリクエストされたparams['text']を日本語文章に変換して出力(Translate)

ComprehendFunction

  1. リクエストされたparams['text']を読み上げてmp3ファイルを生成 (Polly)
  2. 作成したmp3をS3にアップロード (S3)
  3. S3のmp3ファイルを文字起こし (Transcribe)
    ※ params['text']と同じ値が生成される予定
  4. 文字起こししたJSONファイルを言語分析して結果を出力 (Comprehend)

実行手順

  • Cloud9上で実行できることは確認できています。
  • Cloud9で本リポジトリをcloneして使用してください。
    • template.yamlの7行目に作成するS3バケット名を入力して使用してください。
# 関数実行
$ sam local invoke TranslateFunction --event events/us_event.json
$ sam local invoke ComprehendFunction --event events/ja_event.json

# APIサーバ起動(http://127.0.0.1:3000/)
$ sam local start-api

# sam package
$ sam package \
    --template-file template.yaml \
    --s3-bucket 作成済みの自由なバケット名 \
    --output-template-file packaged-template.yaml \
    --region ap-northeast-1
# sam deploy
$ sam deploy \
    --template-file packaged-template.yaml \
    --stack-name cfn-aws-sam-polly-transcribe-comprehend \
    --capabilities CAPABILITY_IAM

感想

  • AWSを知ったつもりになっていたが、まだまだ奥が深い。
  • Comprehend, Polly, Transcribe, Translateをそれぞれ初めて知って始めて使った。
  • こんな面白いサービスが準備なく、手軽に使えるのはクラウドの強みだと思った。
  • これらの使い方は大体わかったので、LINE BOTとかと組み合わせて、いい感じに何かしたいと思った。
  • 亀田さん、ありがとうございました!!
    また島根でお待ちしてます!!