電子竹林:Blog2

Tech関係、はてなダイアリーから移転済み...

プログラミング英語検定の単語リストで遊んでみる (2) 発話

概略

詳細

$ sort -R adv300.txt | head -n 10 | cut -f 1 | say -i -v ava
  • sort -R はランダムにソート、head -n 10で最初10行だけを切り出して、cut -f 1で英単語の第1フィールドだけを切り出して、sayコマンドに渡す。say の-iは発話と同時に文字を表示、-v avaでAvaの声を指定している。何の声があるかは"say -v ?"で分かる。個人的には米語はAva、日本語はKyokoが好み。無い場合は、macOSのシステム環境設定/アクセシビリティ/スピーチ/システムの声/カスタマイズで声を追加できる。
  • Avaが英語を、Kyokoが日本語を読み上げるには↓の通り。前と同じようにランダムに10個取り出したものを、awkで、sayコマンドで英単語の第一フィールド$1を表示しながらAvaの声で読み上げ、意味の第3フィールド$3を表示しながらKyokoの声で読み上げる。-iで日本語を表示するのはちょっとbugっぽいので、ちゃんとやるならechoを使った方がいい。
$ sort -R adv300.txt | head -n 10 | awk '{system("say -v ava -i " $1 "; say -v kyoko  -i " $3)}'
  • sayコマンドは↓のように簡単に音声ファイルに落とすことが出来る。-f で入力のテキストファイルを、-oで出力の音声ファイルを指定する。Avaの声で音声ファイルにしたものをGitHub - zom-1/Programming_Englishに入れておいた。
$ say -v ava -f adv300.txt -o adv300.aiff
  • 英語をAvaの声、日本語をKyokoの声でのように、異なる声を一度にファイルに落とすことはできないので、その場合は別ファイルに落として、soxなどで合成するのがいいだろう。