AWS の AI サービスを使って伝言ゲームしてみた
三尾 泰士, 西村 航
みなさんこんにちは ! ソリューションアーキテクトの三尾です。
突然ですが、みなさんは AWS の AI サービスをご存知ですか ?「興味はあるけど、機械学習はやったことがないし難しそう」なんて思っている方もいらっしゃるのではないでしょうか。
AWS の AI サービス は、機械学習の経験がなくても使うことができます。実は、私も機械学習の経験はほとんどありませんが、簡単に使うことができました。
また、こちらの画像にある通り、様々なユースケースに対応したサービスが用意されており、アプリケーションとの統合も簡単に行うことができます。
ある日、このリストをぼんやり眺めていると、こんな疑問が浮かんできました。
「Amazon Polly でテキストを読み上げて、Amazon Transcribe で文字起こししたら、元通りのテキストが得られるのか ?」
思いついたらやってみたくなるのが Builder の性 (さが) です。
今回は Amazon Polly から利用可能な複数の音声を使って、伝言ゲームで遊んでみました。
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
この記事のデモを無料でお試しいただけます »
毎月提供されるデベロッパー向けアップデート情報とともに、クレジットコードを受け取ることができます。
今回使用するサービス
次の 2 つの AI サービスを使い、音声データでやりとりをして、最終的にお題を復元できるか確かめます。
Amazon Polly
Amazon Polly は、テキスト読み上げ (Text-to-Speech) を行うことができる AI サービスです。2021 年 7 月現在、29 の言語で 64 種類の音声をサポートしており、日本語にも対応しています ! また、音声出力の修正やカスタマイズを行うことができ、ニーズにあった音声を生成することができます。
Amazon Transcribe
Amazon Transcribe は、音声の文字起こし (Speech-to-Text) ができる AI サービスです。こちらも様々な言語に対応しており、もちろん日本語にも対応しています。カスタムボキャブラリやカスタム言語モデルによる文字起こしのカスタマイズだけでなく、不適切な単語のフィルタリングにも対応しています。
伝言ゲームの流れ
伝言ゲームのやりとりは図のように行います。
まず Amazon Polly を使って、用意したお題を読み上げる女性の音声を生成します。次に、 Amazon Translate を使ってこれを文字起こしします。続いて、文字起こしした結果を読み上げる男性の音声を生成し、最後にもう一度これを文字起こしします。つまり、Text-to-Speech-to-Text-to-Speech-to-Text です。このやりとりの中でテキストがどう変化していくのかを観察します。
また、操作はすべて AWS マネジメントコンソール上で行い、特に断りがなければ各種設定はデフォルトとしています。
やってみた
いくつか特性の異なるお題を用意して、伝言ゲームをやってみました。
1. AI サービス紹介ページの説明文
お題として用意したのはこちらの文。
AWS の事前トレーニング済み AI サービスでは、アプリケーションやワークフロー用のすぐに使えるインテリジェンスが提供されます。
アルファベットの略語やカタカナ語が入り混じっていますが、読み上げやすそうな日本語の文です。
まず、Amazon Polly のコンソールからテキスト読み上げ機能のページへ移動します。
日本語の場合、エンジンはスタンダードのみの対応 (2021 年 7 月現在) となっているため、こちらを選択。また、音声として女性の Mizuki さんを指定します。生成された音声を聴いてみましょう。
イントネーションに若干の不安を覚えるものの、ほとんど完璧に読み上げています (筆者の主観です)。また、今回は行いませんでしたが、カスタム辞書や SSML タグを用いたカスタマイズも行うことができます。
次の処理のため、Amazon S3 に生成した音声を保存しておきます。
クリックすると拡大します
次に、Amazon Transcribe のコンソールに移動し、読み上げた音声を文字起こしします。
文字起こしをするには、Transcription jobs のページから job を作成します。適当な名前をつけ、Language に Japanese を指定します。Input data として先ほど保存した音声を指定したら、あとは job を作成するだけです。少し待つと、job の詳細ページから結果が確認できます。
クリックすると拡大します
今回の結果がこちら。
の事前トレーニング墨絵アイサービスではアプリケーションやワークフロー用のすぐに使えるインテリジェンスが提供され、ます
おや、ちょっと崩れましたね。AWS や AI といった、アルファベットの略語がうまく認識されなかったようです。しかし大部分は復元されています。人間の伝言ゲームより遥かに優秀ですね。
Amazon Transcribe では、カスタム言語モデル (2021 年 7 月現在、英語のみの対応) やカスタムボキャブラリ、好ましくない単語のフィルタリングなど様々な機能をサポートしています。今回認識できなかった AWS や AI をカスタムボキャブラリとして登録すると正しく認識される可能性がありますね。
さて、続いて男性の Takumi さんの音声を用いて、同様に処理を行なっていきます。まず、テキストから音声を生成します。
入力テキストに忠実な発音です。日本語として不自然な文章ですが、生成された音声全体が乱れてしまうようなことはありませんでした。
そして、これを文字起こししてみると・・・
の事前トレーニング墨絵アイサービスではアプリケーションやワークフロー用のすぐに使えるインテリジェンスが提供され、ます
音声生成の入力と完全に一致した・・・ !
当たり前といえば当たり前なのかもしれないですが、音声の生成と文字起こしの品質がそれぞれ高いことがわかります。
2. 早口言葉
人間にとっては発音するのが難しい早口言葉。音声生成は正しく機能してくれるのでしょうか ?
用意したお題はこちらです。私の苦手な文を選んでみました。
竹垣に竹立てかけたのは竹立てかけたかったから竹立てかけた
それでは、先ほど同様 Mizuki さんの発音です。どうぞ !
さすが、噛みそうな気配すらありません。このままだとあまり面白くないので、SSML を使って速度を上げてみましょう。音声速度の変更については、Amazon Polly デベロッパーガイド - 音声の速度 をご参照ください。
今回は全体の速度を 200 % にしてみました。それがこちら。
早くしても全く噛みませんし、発音が明瞭で、しっかりと聞き取ることができます。コンピュータは羨ましい・・・。
さて、それではこれを文字起こししてみましょう。ドキドキ。
結果はこちら。
だけが気にかけてくれるのは竹立て掛けたかったからかけてきた
おおっ ! 結構崩れましたね。コンピュータが間違えて (?) くれると嬉しくなっちゃうのは私だけでしょうか。
ちなみに等速で実験したところ、ほぼ完全に聞き取られてしまいました。ぜひご自身の目で確かめてみてください。
次はこれを Takumi さんに発音してもらいます。Mizuki さんと同様、倍速です。
人間からしてみると、むしろこっちのほうが読みづらいですよね。
そして、文字起こししてみます。今度はどれくらい崩れるでしょうか ? ワクワク
だけど気にかけてくれるのは竹立て掛けたかったからかけてきた
全然崩れてない ! すごい !! 文字数でいえば 1 文字しか変わっていません。こんな早口でも結構な精度で文字に起こしてくれるんですね。
3. 英語の文章
最後のお題はこちら。
Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversations?”
ルイス・キャロル『不思議の国のアリス』の冒頭部分です。
音声生成・文字起こしにとってこの題材が難しいかどうかはわかりませんが、果たしてどうなるでしょうか。
英語なので、音声も変更になります。今回は、英語 (英国) でサポートされている Amy と Brian にお願いしましょう。
また、 Amy と Brian は、エンジンとしてニューラル音声に対応しています。ニューラル音声は、新しい機械学習アプローチによる音声品質の高度な改善を実現します。詳細については、Amazon Polly デベロッパーガイド - ニューラル TTS をご参照ください。
ニューラル音声の方で伝言ゲームを続けてみましょう。
次に、文字起こしをします。
Amazon Transcribe は、自動で言語識別し、文字に起こす機能をサポートしています。今回はこちらを使ってみましょう。
使用するには、コンソール画面で Language settings を Automatic language identification に変更するだけです。
クリックすると拡大します
そして文字起こしした結果がこちら。
Alice was beginning to get very tired of sitting by her sister on the bank and of having nothing to do. Once or twice. She had peeped into the book her sister was reading, but it had no pictures or conversations in it. And what is the use of a book thought Alice without pictures or conversations?
言語は en-AU (オーストラリア) と検出されました。英語として認識はされたものの、生成時に指定したものとは違っています。
一方、文字起こしした結果については、単語単位で見ると完全に一致しています。自分の脳から Amazon Transcribe の API を叩ける日が待ち遠しいです。
このままいくと最後までうまくいきそうですね。やってみましょう。
次に Brian の音声でこれを読み上げます。同じく、エンジンはニューラル音声です。お聞きください。
そして文字起こしした結果がこちらになります。緊張の瞬間・・・。
Alice was beginning to get very tired of sitting by her sister on the bank and of having nothing to do. Once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it. And what is the use of a book, thought Alice, without pictures or conversations?
言語は先ほど同様、英語としては認識されましたが、今度は en-US (アメリカ) と検出されました。英語同士の違いは難しいのでしょうか。人間だったら聞き分けられるんでしょうか・・・?
文字起こし結果については先ほどと同様、単語単位で完全に一致しました !
まとめ
いかがでしたか ? 今回は AWS の AI サービスを使って遊んでみました。デフォルトの設定でも十分正しく発音し、正しく文字起こしできたと言えるのではないでしょうか。AI も人間も 100% 完璧はありませんから、お互いの得手不得手を補い合っていけるといいですね。
というわけで、みなさんもぜひやってみてください ! それでは、よい AWS ライフを !
筆者プロフィール
三尾 泰士
アマゾン ウェブ サービス ジャパン合同会社
技術統括本部 ソリューションアーキテクト
2021 年 4 月に入社。音楽と自然とゲームを愛するソリューションアーキテクト。もちろん AWS も愛してます。
監修者プロフィール
AWS を無料でお試しいただけます