TOEIC学習にAIを使う試み
背景
世はAIの時代!(前回のつづき、前回は以下のリンクから)
賛否あると思うが、否応無しにAIが日々の生活に浸透していきそうな様相をみせている
もう誰も止められないと思われる
そんなこともあり、TOEICの学習にも、AIを活かす方法を模索する
といっても、現状、公開されているモデルを利用するだけだが
今後、もっと面白いことができるように入門する
直近のやりたいこと
Part 2の音声において、「A.」、「B.」、「C.」という音声を削除したい
Part 2の音声で「問題」と「正解の応答」の組み合わせの音声を作りたい
特典で付属している書籍もある
TOEIC® L&Rテスト精選模試【総合】など
音声認識を使えば、音声の編集をしやすくなると考える
今回、試したモデル
今回、OpenAIの Whisper を試してみた
Whisperは、汎用目的のスピーチを認識して文字データにできるモデル
現時点で、コードとモデルの重みが MITライセンス下で公開されている
筆者の誤解、変更の可能性などがあるので、GitHubを参照されたい
インストール
Pythonが入った環境で、以下のコマンド(pip)でインストールできる
インストールの詳細はGitHubが参考になる
モデルは、初めて使うときに別途、自動的にダウンロードされる
pip install -U openai-whisper
ざっくりと試す(音声認識した文字は伏せている)
公式TOEIC問題集のPart 2の、ある問題を認識させてみる
認識した英語の文字列は伏せているが、正しく認識できている
権利上の問題になる場合がある、問題集のネタバレになる、ので認識した文字を伏せている
たったこれでけで、認識した文字列と、セグメント(台詞)ごとの開始時間と終了時間が得られる
languageは指定なくても自動で言語が判定されるが、
自動判定は時間がかかるので、音声に含まれる言語が1つで、把握している場合は指定した方がパフォーマンスに有利
TSV形式のファイル(他の形式も選択できる)で、認識した文字と時間が出力される
whisper p2.mp3 --language en
モデルのサイズをbaseにしてみると
(モデルのサイズについては後ほど述べる)
なんと、A、B、Cが発音されるタイミングも得られた!
これなら、簡単に「A.」、「B.」、「C.」を削除できそう
と思ったが、そう簡単ではなかった
whisper p2.mp3 --language en --model base
モデルサイズについて
Whisperには、サイズの異なるモデルが複数用意されている
「速度」と「正確性」のトレードオフをして、モデルを選択する
英語専用のバージョンもあり、末尾に「.en」が付く
パフォーマンスに有利とのこと
モデルサイズごとに試す
閲覧注意
これ以降、TOEIC Programの公式サイトにある参考問題のNo. 7を文字起こしした内容が含まれる
今後、問題を解こうと考えている方にとっては、知りたくない情報を得てしまう可能性がある
これ以降を閲覧する前に、以下のURLのページのNo. 7を解くことをお勧めする
本ページの目的は、Whisperの認識精度を確認して、参考情報として公開することだが、権利上、問題になりそうならば削除する
https://www.iibc-global.org/toeic/test/lr/about/format/sample02.html
以下、モデルのサイズごとに、TOEIC Part 2の参考音声を認識した結果である
(他のハイパーパラメーターによっても変化する)
tiny
sevenになっているが、7の方が都合がよい
この例ではないが「A.」が「8.」と認識されることがあった
問題番号、設問、A、B、Cとセグメントで別れるので扱いやすい
[00:00.000 --> 00:02.340] Number seven.
[00:02.720 --> 00:04.120] Where's the new fax machine?
[00:04.860 --> 00:07.520] A. Next to the water fountain.
[00:08.180 --> 00:10.920] B. I'll send a fax tomorrow.
[00:11.600 --> 00:13.600] C. By Wednesday.
tiny.en
Aだけセグメントが別になった
[00:00.000 --> 00:02.080] Number seven.
[00:02.680 --> 00:04.340] Where's the new fax machine?
[00:05.100 --> 00:05.540] A.
[00:06.320 --> 00:07.620] Next to the water fountain.
[00:08.520 --> 00:10.960] B. I'll send a fax tomorrow.
[00:11.980 --> 00:13.600] C. By Wednesday.
base
sevenではなく、7になった
参考ページの音声では「A.」、「B.」、「C.」のタイミングでセグメントが別にならない
公式問題集でテストしたときは別になったのだが
字幕などを考えると、区切られない方が扱いやすいかもしれないが、
音声を編集する目的では区切ってほしいところ
[00:00.000 --> 00:01.600] Number 7.
[00:02.540 --> 00:03.880] Where's the new fax machine?
[00:05.100 --> 00:07.400] A. Next to the water fountain.
[00:08.360 --> 00:10.800] B. I'll send a fax tomorrow.
[00:11.760 --> 00:13.500] C. By Wednesday.
base.en
en版の方が扱いづらそう
(何かを間違えたかもしれない)
[00:00.000 --> 00:09.960] Number 7. Where's the new fax machine? A. Next to the water fountain. B. I'll send
[00:09.960 --> 00:13.340] a fax tomorrow. C. By Wednesday.
small
smallでは、再び、sevenになっているが、7の方が都合がよい
選択肢ごとにセグメント化されない
baseの方が扱いやすい
[00:00.000 --> 00:10.140] Number seven. Where's the new fax machine? A. Next to the water fountain. B. I'll send a
[00:10.140 --> 00:13.480] fax tomorrow. C. By Wednesday.
small.en
en版では7
[00:00.000 --> 00:04.000] Number 7. Where's the new fax machine?
[00:05.360 --> 00:10.860] A. Next to the water fountain. B. I'll send a fax tomorrow.
[00:11.820 --> 00:13.500] C. By Wednesday.
medium
選択肢ごとに区切られない
smallと同じ
GitHubにも、smallとmediumは、大きな差がないと述べられている
[00:00.000 --> 00:10.280] Number 7. Where's the new fax machine? A. Next to the water fountain. B. I'll send a
[00:10.280 --> 00:13.600] fax tomorrow. C. By Wednesday.
medium.en
en版と無印で変化なし
よくみると、タイミングが若干違う
[00:00.000 --> 00:10.180] Number 7. Where's the new fax machine? A. Next to the water fountain. B. I'll send a
[00:10.180 --> 00:13.540] fax tomorrow. C. By Wednesday.
large-v3
安定していそう
処理に時間がかかる
[00:00.000 --> 00:03.780] Number 7. Where's the new fax machine?
[00:05.100 --> 00:07.300] A. Next to the water fountain.
[00:07.860 --> 00:10.600] B. I'll send a fax tomorrow.
[00:11.300 --> 00:13.400] C. By Wednesday.
まとめ
モデルのサイズを「base」にすると、速度と正確性のバランスがよさそう
単語単位の時間を得ることができるみたいなので次回、試す
セグメント毎の認識では、「A.」「B.」「C.」のタイミングを判定できないことがありそうなので
TOEICの音声を認識する例においては、AI(ディープラーニング)ではなく、無音を手掛かりにした解析の方が早くて、正確かもしれない(というのは内緒で)
Part 2の音声は、
「設問番号」、「無音」、「問」、「無音」
「A.」、「無音」、「Aの応答」、「無音」
「B.」、「無音」、「Bの応答」、「無音」
「C.」、「無音」、「Cの応答」、「無音」
という流れは固定なので
費用面
「ローカルで実行する形式」と「WebのAPI形式」で費用感も比較したいところ
ローカルでの実行は電気代がかかるので
めちゃくちゃ時間を使ってしまった、んなことより、TOEICの勉強せねば…
この記事が気に入ったらサポートをしてみませんか?