Developers.IO 2020 Showcase 「AWSのAIサービスインテグレーション – AIの仕組みを活用した課題解決」 #devio_showcase
データアナリティクス事業本部の貞松です。
2020年11月4日に開催された、Developers.IO 2020 ShowcaseのDay4にて「AWSのAIサービスインテグレーション - AIの仕組みを活用した課題解決」というタイトルのセッションを担当させていただきました。
本記事では、セッション概要や当日の資料等の掲載、セッション中のQAについて記載します。
セッション概要
セッションの概要としては以下の通りです。
AWSのサービス群にはAIや機械学習に関連するサービスが多数用意されています。現実世界で直面する課題の幾つかは、AWSで用意されているAIサービスそのまま適用、あるいは組み合わせて適用することで解決できます。本セッションでは、Amazon Transcribeを利用した文字起こしシステムやAmazon Rekognition + Amazon Translate + Amazon Pollyの組み合わせによる画像中のテキスト翻訳と読み上げのシステムについて、その仕組みと実際の動作について解説します。
普段のAI/ML系のサービスに関するセッションでは、一つのサービスについて機能や利用手順の解説ベースで掘り下げていくことが多いのですが、今回はイベント自体が「Showcase」と銘打たれていることもあって、出来るだけ見た目にわかりやすいデモンストレーションを軸に構成しました。
その結果、必然的に複数のサービスを組み合わせたり、通常スコープ外としているアプリケーションの部分にも踏み込む内容となっております。
スライド資料
当日のスライド資料は以下です。今回はデモが多めだった為、スライドだけでは伝わらない部分もありますが、その辺りは後日公開されるセッション録画にて補完していただければと思います。
セッション録画
近日YouTubeのクラスメソッド公式チャンネルにて公開予定です。公開され次第、本記事にもリンクします。
チャンネル登録すると新着通知が受け取れますので、必要に応じて登録いただければ幸いです。
QA
セッション中に幾つかの質問をいただき、誠にありがとうございました。
こちらで改めて回答をまとめます。
Q1: 今回作成されたデモ環境は、どのくらいの工数が必要だったのでしょうか?
本セッションでご紹介したデモソリューション2つ(画像から抽出したテキストの翻訳・読み上げアプリ、音声からの文字起こし結果の閲覧・編集ツール)それぞれ約2週間程度で作成しました。
Q2: デモのシステムを作られた際に「この機能があるともっと楽なのに」と思った点はありましたか?
AWSの自然言語処理系のサービスは日本語対応していない機能が多いので、全面的に日本語対応されていればもう少しシンプルな構成に出来たというところはあります。
Q3: pdfファイルのOCRを検討しているのですが、どのようなサービスを組み合わせるのが適切でしょうか。
AWSのサービスとしては、Amazon TextractというサービスがOCRの機能を持っており、PNG、JPEG、およびPDF形式のファイルに対応していますが、残念ながら抽出可能なテキストが「標準的な英語のアルファベットとASCII記号からラテン文字」となっている為、日本語の文書に対するOCRは別サービスを検討する必要があります。
例えば、Google Cloud Vision APIでは、OCR機能で日本語をサポートしています。
Q4: 製品名など翻訳されすぎるのを防ぐためにユーザ辞書みたいなのを用意することはできるでしょうか。
Amazon Translateの機能として、カスタム用語の登録と適用が可能です。登録された用語を参照して正しく翻訳できるようにすることで「固有名詞等の用語が一般的な用語に翻訳され過ぎてしまう」ことを防ぐことができます。
また、このセッションでお話しした翌日(11/5)に、Amazon Translateのアップデートにより「翻訳したくないテキストにマークを付ける」機能が実装されました。この機能を使用することで、翻訳するテキストに対する前処理は必要になるものの、明示的に翻訳したくないテキストを設定することが可能になりました。
Q5: 専門用語の辞書ファイルを定義できるとの事ですが、どのくらいの量の語彙を登録できるのでしょうか?また、登録した量が多い場合はレスポンスは遅くなるのでしょうか?
Amazon Transcribenのカスタム語彙に登録可能な辞書ファイルの最大サイズは50KBで、1語彙の最大文字数は256文字までとなっております。
登録した量が多い場合のレスポンスですが、もちろんカスタム語彙を参照する分の処理が単純に追加されることになるので全く影響が無いとは言えませんが、実際にカスタム語彙を使用した場合の体感として、明らかに気になるほどの差異はありませんでした。
Q6: その他のAmazonのサービスで、よく組み合わせて使われているものなどはありますか?
各種AIサービスを呼び出して実行するために、セッション中で紹介したAmazon API GatewayやAWS Lambdaを組み合わせることが多くなりますが、実際にシステムとして組み込む場合の実行制御としてAWS Step Functionsやログ監視の機能として Amazon CloudWatch Logsなどを組み合わせることも多いです。
Q7: zoomなどを利用して会議をしている際、そのライブ音声をそのまま日本語文字起こしテキスト化させるようなwebアプリの実装も可能でしょうか(リアルタイム文字起こし) また、そのアプリ開発の難易度は相当高いでしょうか?
Amazon Transcribeにもリアルタイム文字起こしの機能が追加されたのですが、日本語および東京リージョンでの使用は未対応となっている為、その他のサービスと組み合わせた実装が必要となります。
例えばGoogle Cloud Speech-to-Textであれば、日本語のリアルタイム文字起こしが可能です。
日本語に対応したリアルタイム文字起こし機能を持つサービスを利用できれば、実装のハードルはかなり下がりますが、自前での実装となると開発の難易度はかなり高くなります。
まとめ
平日ど真ん中の最終セッションという難しい時間帯にも関わらずご参加いただいた皆様に心より感謝申し上げます。少しでも有用なサービスインテグレーションのアイデアをご提供できていれば幸いです。
もし、本セッションをご覧になって「AWSのAIサービスを使って何となくこういうことが出来そうだけど、実際にどうやって使ったら(作ったら)良いかわからない…」というお悩みがありましたら、是非クラスメソッドにご相談ください!