はじめに
2019年1月23日(木) に Microsoft 主催の Ignite The Tour : Osaka に コミュニティ登壇させていただきました。
本記事は、上記イベントで発表させていただいた LT ( ライトニングトーク ) の内容を記事にしたものです。
※また、本記事では、3大クラウドプラットフォーム ( Azure / AWS / GCP ) の Speech To Text サービスの性能を比較し、ランク付けをさせていただいておりますが、使用する音声の録音環境、録音デバイス、その他環境の差により、当記事の検証結果と異なる場合がございますので、使用用途に応じて各自ご自身の判断で活用するサービスの選定を行うようにしてください。
( 3大クラウドネタとして楽しんでいただければ幸いです )
今回のコミュニティ登壇の経緯
私自身、普段から関西発Azureコミュニティ「Azure Tech Lab.」の主催・運営をしているのですが、今回 Ignite The Tour の主催者であるMicrosoftさんにお声がけいただき、イベント会場内でアンカンファレンスセッションを行うことになりました。アンカンファレンスという言葉はなかなか耳なじみのない言葉ですが、格式高いセミナー ( 登壇者から参加者へ一方通行 ) と違って、参加者と登壇者が一緒になって創り上げていくようなカンファレンス形式のことを指します。今回私たちのアンカンファレンスセッションでは、普段コミュニティに参加しているメンバーによるLTや参加者に対するデモ体験の実施、そして会場の皆さんからのリアルタイムな質問にお答えするといったカタチで実施させていただきました。本記事では、70分のアンカンファレンスセッションの中で私が LT ( ライトニングトーク ) をさせていただいた部分についてのみ抜粋し、ご紹介したいと思います。
私の LT 登壇タイトルは、「桃太郎デスマッチ - Azure/AWS/GCP で Speech To Text の結果を比較してみた」 。Microsoftさん主催のイベントで、他社クラウドの話をぶち込むのはなかなか勇気がいったのですが、私の主催しているコミュニティのテーマが__「クラウドベンダーの垣根を超えたエンジニアの交流」__ということもあるので、半ば強引に LT をさせていただきました。しかも、10分の LT のはずが気が付いたら20分も話してました。。ごめんなさい。登壇資料は、こちらの SpeakerDeck にも公開しております。
結論から言うと、GCP ( Google Cloud Platform ) が一番精度が高かったです。
ただ、単純な性能差以外にも、様々な評価軸で多角的に評価してみたので、
そちらの内容を記事中で事細かくお伝えできればと思います。
本日の MS Ignite Osaka での登壇資料はこちらです!
— Futo Horio (@Futo_Horio) January 23, 2020
桃太郎デスマッチ ー Azure / AWS / GCP で Speech-To-Text の結果を比べてみた!#MSIgniteTheTour #UNC10033 #azuretechlove #Azure #AWS #GCP #TTS https://t.co/XmmVVpqn13
会場の雰囲気や登壇時の写真等は、以下のブログに記載があるのでそちらをご覧ください。
それでは、長い前置きは終わりにして、本題に移りたいと思います。
さて本題 ⇒ 桃太郎デスマッチ
という訳で、事前学習済みAIサービスという位置づけで3大クラウドで展開されているサービス内容を調査し、性能検証を行いました。
学習済みAI ( 人工知能 ) サービス比較表
まずは、3大クラウド ( Azure / AWS/ GCP ) 概要
学習済みAI ( 人工知能 ) サービスラインナップ (5分類)
続いて、各ベンダーのサービスの性能を比較してみます。
学習済みAI ( 人工知能 ) サービス: Speech To Text スペック比較
各ベンダーごとに特色があり、同じ Speech To Text だからと一概に比較できるものではないですが、今回は以下環境下における検証を実施いたしました。
続いて、今回行った検証内容...
※ちなみに、今回の検証には自分の声をスマートフォンで録音した音声ファイル ( 短文、長文 ※詳細後述 ) を使用しました。サンプル音声録音に使用したアプリは「PCM録音」という iOSアプリです。ファイル形式やサンプリング周波数など、音声ファイルの設定が簡単に変更できるのでサクッと検証する分にはこちらのアプリを使用されるのがおすすめです。
検証環境の準備 ( 各プラットフォーム )
( Azure ) Speech To Text [ 10 ~ 15 min ]
- Azrue MarketPlace より
Speech Service サブスクリプションキー
を発行する
-
Azure-Samples/cognitive-services-speech-sdk
の GitHubリポジトリをクローン -
pip install --upgrade azure-cognitiveservices-speech
( SDKインストール ) -
quickstart.py
に修正を加える (サブスクリプションキー&使用リージョン&ファイルパス) - 日本語変換に対応するため
speech_config
の設定を追加する - resource 配下に 対象の音声ファイルを追加
-
$ python quickstart.py
を実行
( AWS ) Amazon Transcribe [ 10 ~ 15 min ]
- AWS CLI セットアップ / SDK for Python (boto3) インストール
- 今回解析する 音声ファイル (mp4) を S3 にアップロードする
- ご利用開始にあたって (
SDK for Python
) ページを開く - サンプルの Python スクリプトを追加&修正を加える (音声の言語指定&ファイル拡張子&リージョン)
- python スクリプトを実行 (今回はコンソール画面で結果を確認)
( GCP ) Cloud Speech-to-Text API [ 20 ~ 25 min ]
- プロジェクトの作成 / Cloud SDK のインストール / 環境変数の設定 (
GOOGLE_APPLICATION_CREDENTIALS
)
- クライアントライブラリをインストールする
- サンプルの Python スクリプトを追加&修正を加える
( ※ 音声ファイルパス & エンコード方式 & サンプリング周波数を指定 ) - python スクリプトを実行 ( 結果確認 )
※サンプリング周波数、エンコード方式がソースコードと異なる場合、APIを実行できないので注意!
検証に使用した音声ファイルはこちら
まずは、短文での性能検証を行い、続いて長文を行いました。
-
短文 ( 音声 )
みなさん、こんにちは。こちらは UNC10033 のアンカンファレンスセッションになります。 -
長文 ( 音声 )
昔々、あるところにおじいさんとおばあさんが住んでいました。おじいさんは山へ芝刈りに... ( 続く )
短文編 ( 結果 )
長文編 ( 結果 )
検証音声ファイル書き起こし全文 ( 桃太郎 )
認識結果 ( Azure )
認識結果 ( AWS )
認識結果 ( GCP )
検証結果
以下、5つの軸で評価してみました。( 主観含む )
- 対応ファイル形式
- 音声認識の精度
- 料金体系
- 開発のしやすさ
- ドキュメントの読みやすさ
- 精度の順で並べると、残念ながら今回は GCP> Azure > AWS の順となった。
- ドキュメントきめ細やかさは Azure > GCP > AWS のように感じた ( 主観 )
- 開発SDKの豊富さの順でも Azure = GCP > AWS となった ( CLI含む )
まとめ
精度と導入しやすさバランスを取るなら Azure
AWS他サービスとの連携を重視するなら AWS
とにもかくにも精度が一番大事なら GCP
- カスタムせずに汎用的なモデルのみを使用する場合だと GCP が一番精度が高いです。
- 学習済みAIサービスの種類(数)は、Azure ≫ AWS > GCP の順となり、
明確な用途があるのであれば Azure が一番手っ取り早く導入できる印象を受けました。 - 句読点が反映されるのは Azure だけ ( 標準設定 ) でした。
- 利用料金でいうと、Azure < AWS = GCP となるので Azure が一番安いです。
- GCPは細かなチューニングができる分、検証時に詰まるポイントが多いように感じました。( GCP力が低いだけかも )