英語のリスニング能力を鍛える! コピーしたテキストを Amazon Polly に読み上げさせる

Posted on

AWS re:Invent 2018 に参加してから、英会話をマスターするためにいろいろ試行錯誤しています。

読み書きはそこそこできる反面、リスニングがとても苦手です。リスニングが苦手なので、相手の話していることが理解できず会話が続きません。日本人の典型的なパターンではないでしょうか?

これは日常生活の中で英語を耳にする機会がほとんどないのが原因だと思います。 re:Invent に参加したときも、後半になるにつれて耳が慣れてきて聞き取れるワードが増えました。

というわけで、意識的に英語をリスニングすれば良さそうです。エンジニアという職業柄、日常的に英語のドキュメントや GitHub のコメントは読んでいるので、これを Text-to-Speech で読み上げさせることにしました。一度理解した内容であればリスニングしやすいというメリットもあります。

Text-to-Speech のサービスはいろいろありますが、今回は Amazon Polly を使ってみました。

コピーしたテキストを Amazon Polly に読み上げさせる

Amazon Polly を使うのはとても簡単です。テキストを Amazon Polly の API に投げれば、読み上げた音声ファイルがレスポンスで返ってきます。 AWS CLI でも簡単に試せます。

aws polly synthesize-speech \
  --output-format mp3 \
  --voice-id Joanna \
  --text 'Hello, my name is Joanna.' \
  hello.mp3

生成された音声ファイルを聞いてみると、その自然な発音に驚くと思います。人間の声に近づけるためディープ ラーニングを使っているようです。

ただ、リスニングのために毎回このコマンドを叩くのは面倒です。というわけで、コピーしたテキストを一発で読み上げさせるラッパーコマンドを書いてみました。 macOS 固有のコマンドを使っているので他の OS では動きません。

#!/usr/bin/env bash

text="<speak><prosody rate='slow'>$(pbpaste)</prosody></speak>"
date=$(date '+%Y%m%d%H%M%S')
output_path="${HOME}/Music/polly"
output_file="polly-${date}.mp3"

mkdir -p ${output_path}

aws polly synthesize-speech ${output_path}/${output_file} \
  --output-format mp3 \
  --voice-id Joanna \
  --text-type ssml \
  --text "${text}" > /dev/null

open --reveal ${output_path}/${output_file}

このスクリプトを PATH の通ったところに置いて、テキストをコピーしてから実行するだけです。クリップボードの中身を pbpaste というコマンドで取得しているのがポイントです。また open コマンドで生成されたファイルを選択状態で開いているので、スペースキーを押すだけで Quick Look で再生されます。

文字だとうまく伝わらないと思うので動画も用意しました。

プレーンテキストを渡すと普通に読み上げるだけですが、SSML (Speech Synthesis Markup Language) というマークアップ言語を使うと読み上げ速度を制御できます。今回は prosody rate="slow" で少しゆっくり読み上げています。

詳しくは SSML Tags Supported by Amazon Polly に載っています。

まとめ

Amazon Polly は 1 か月あたり 500 万文字の無料利用枠があります。英語のリスニング能力を鍛えるのに活用してみてはいかがでしょうか?