カスタム音声テキスト変換を実装する

Azure AI サービス
Azure AI 音声
Azure Machine Learning

この 2 部構成のガイドでは、高品質の音声対応アプリケーションを効率よく実装するためのさまざまなアプローチについて説明します。 AI 音声サービスによって提供される音声テキスト変換機能のベースライン モデルの拡張とカスタマイズに重点を置いています。

この記事では、ソリューションを設計するための問題空間と意思決定プロセスについて説明します。 「カスタム音声テキスト変換ソリューションをデプロイする」と題する 2 番目の記事では、これらの手順と推奨プラクティスを適用するためのユース ケースについて説明します。

事前構築済みとカスタムの AI スペクトル

"事前構築済みとカスタムの AI スペクトル" は、すぐに使用できる事前構築済みモデルから完全にカスタマイズされた AI ソリューションまで、AI モデルのカスタマイズと開発作業の複数のレベルを表します。

カスタマイズ レベルのスペクトルを示す図。

スペクトルの左側では、 Azure AI サービス を使用すると、事前トレーニング済みのモデルを介して、AI 機能をアプリケーションに迅速かつ低摩擦での実装が可能になります。 Microsoft では、これらのベースライン モデルをトレーニングおよび構築するために、広範なデータセットをキュレーションしています。 そのため、ユーザーは追加のトレーニング データなしでベースライン モデルを使用できます。 これらは、セキュリティ強化されたプログラムによる API 呼び出しを介して使用されます。

次のような Azure AI サービスがあります。

  • 音声認識、 音声テキスト変換、テキスト読み上げ、音声翻訳、話者認識
  • 言語。 エンティティ認識、感情分析、質問応答、会話言語理解、翻訳ツール
  • Vision。 Computer Vision と Face API
  • Decision。 Anomaly Detector、Content Moderator、Personalizer
  • OpenAI Service。 高度な言語モデル

事前構築済みのベースライン モデルではデータが十分正確に実行されない場合、その問題ドメインに関連するトレーニング データを追加してベースライン モデルをカスタマイズできます。 このカスタマイズには、十分なデータを収集して許容可能なモデルをトレーニングおよび評価する追加の作業が必要になります。 カスタマイズ可能な Azure AI サービスには、 Custom VisionCustom TranslatorCustom SpeechCLUなどがあります 。 事前構築済みの Azure AI サービス モデルの拡張は、スペクトルの中心にあります。 この記事の大半は、その中央の領域に焦点を当てています。

または、モデルとトレーニング データで特定のシナリオに重点が置かれ、専用のトレーニング データセットが必要な場合、 Azure Machine Learning が提供するカスタム ソリューション リソース、ツール、コンピューティング、ワークフロー ガイダンスで完全なカスタム モデルの構築をサポートできます。 このシナリオは、スペクトルの右側に位置します。 これらのモデルはゼロから構築されます。 通常、Azure Machine Learning を使用したモデルの開発は、 AutoML などのビジュアル ツールを使用するものから、 ノートブックを使用してプログラムでモデルを開発するものまで多岐にわたります。

Azure Speech サービス

Azure Speech Service は、音声テキスト変換、テキスト読み上げ、音声翻訳、音声アシスタント、話者認識の各機能を、Azure AI サービスに基づく単一サブスクリプションに統合します。 使いやすい SDK と API を使用して Speech サービスと統合することにより、音声用のアプリケーションを有効にできます。

Azure 音声テキスト変換サービスは、音声をリアルタイムまたは非同期に分析して、音声をテキストに文字起こしします。 すぐに使用できる Azure 音声テキスト変換では、一般的に使用される音声言語を反映するベースラインとしてユニバーサル言語モデルが使用されます。 このベースライン モデルは、さまざまな一般的ドメインを表す方言と発音で事前にトレーニングされています。 そのため、ベースライン モデルを使用するのに追加の構成は不要で、ほとんどのシナリオで適切に機能します。

ただし、音声に周囲の雑音が含まれている場合や、業界およびドメイン固有の専門用語が数多く含まれている場合は、ベースライン モデルでは不十分なことがあります。 そのような場合、カスタム音声モデルを構築することは理にかなっています。 これを行うには、その特定のドメインに関連付けられている追加のデータでトレーニングを行います。

カスタム ドメインのサイズによっては、複数のモデルをトレーニングし、個々のアプリケーションのモデルをコンパートメント化することも理にかなっている場合があります。 たとえば、オリンピックの解説者はさまざまな競技についてレポートしますが、そのそれぞれに独自の専門用語があります。 各競技には他の競技とは大きく異なるボキャブラリがあるため、競技に固有のカスタム モデルを作成すると、その特定の競技に関連するものに発話データを制限することで精度が向上します。 結果として、そのモデルは、正確で対象を絞った一連のデータを使って学習できます。

したがって、Azure 音声テキスト変換を実装するには、次の 3 つのアプローチがあります。

  • ベースライン モデル は、音声に周囲の雑音が含まれず、文字起こしされた音声が一般的に話される言葉で構成されている場合に適しています。
  • カスタム モデル は基本モデルを拡張したもので、カスタム ドメインのすべての領域で共有されるドメイン固有のボキャブラリが含まれます。
  • 複数のカスタム モデル は、そのカスタム ドメインに多数の領域があり、それぞれが固有のボキャブラリを持つ場合に理にかなっています。

Azure 音声テキスト変換を実装するための 3 つのアプローチをまとめた図。

考えられるユース ケース

カスタム音声テキスト変換が役立つ一般的なシナリオとユース ケースを次に示します。

  • 医療分野の文字起こしやコール センターの文字起こしなど、特定ドメインの音声の文字起こし
  • アプリ内で使用したり、ライブ ビデオ ストリーミング用のキャプションを提供したりするライブ文字起こし

Microsoft SDK とオープンソース ツール

音声テキスト変換を使用している場合、次のリソースが役立つ可能性があります。

設計上の考慮事項

このセクションでは、音声ベースのアプリケーションを構築するための設計上の考慮事項について説明します。

ベースライン モデルとカスタム モデル

Azure Speech には、さまざまな言語をサポートするベースライン モデルが含まれています。 これらのモデルは、膨大な量のボキャブラリとドメインで事前トレーニングされています。 ただし、認識を必要とする特殊なボキャブラリが存在する場合もあります。 その場合、ベースライン モデルでは不十分な可能性があります。 基本モデルで十分かどうかを判断する最良の方法の 1 つは、ベースライン モデルから生成された文字起こしを分析し、同じ音声で人間が生成した文字起こしと比較することです。 このガイドの デプロイに関する記事 では、Speech Studio を使用してトランスクリプトを比較し、単語誤り率 (WER) スコアを取得する方法について説明します。 誤った単語の置換が結果に複数ある場合は、それらの単語を認識するようにカスタム モデルをトレーニングすることをお勧めします。

1 つのカスタム モデルと多くのカスタム モデル

目的のシナリオでカスタム モデルからメリットが得られる場合、次のステップとして、構築するモデルの数を決定することが必要になります。 発話が 1 つの領域またはドメインに密接に関連している場合は、通常、1 つのモデルで十分です。 一方、ボキャブラリが複数のドメイン領域で大幅に異なる場合は、複数のモデルが最適です。 このシナリオでは、さまざまなトレーニング データも必要になります。

前述のオリンピックの例を使って説明します。 アイスホッケー、リュージュ、スノーボード、アルペン スキーなど、複数の競技の音声解説の文字起こしを含める必要があるとします。 競技ごとに固有の用語があるため、競技ごとにカスタム音声モデルを構築すると精度が向上します。 ただし、各モデルに多様なトレーニング データが必要になります。 各競技の解説者ごとにモデルを作成することは、あまりにも限定的で、伸張性に欠けます。 より実用的なアプローチは、競技ごとに単一のモデルを構築し、アクセントの付け方、性別、年齢層が異なるさまざまな解説者を含むグループの音声を含めるようにすることです。 多様な解説者からキャプチャされた、その競技に関連するドメイン固有のフレーズがすべて同一のモデルに存在することになります。

また、サポートする言語とロケールも考慮する必要があります。 これらのモデルをロケール別に作成することが理にかなっている場合もあります。

音響モデル適応と言語モデル適応

Azure Speech には、カスタム モデルをトレーニングするための 3 つのオプションが用意されています。

言語モデル適応 は、最もよく使用されるカスタマイズです。 言語モデルは、特定のコンテキストまたは特定のドメインで特定の単語がどのように一緒に使用されるかをトレーニングするのに役立ちます。 言語モデルの構築は、比較的簡単かつ迅速に行えます。 まず、特定のドメインのさまざまな発話とフレーズを提供して、モデルをトレーニングします。 たとえば、アルペン スキーの文字起こしを生成することが目的の場合は、人間が作成した複数のスキー イベントのトランスクリプトを収集します。 トランスクリプトをクリーンアップして結合し、約 50,000 のフレーズと文を含む 1 つのトレーニング データ ファイルを作成します。 カスタム言語モデルをトレーニングするためのデータ要件の詳細については、「トレーニングおよびテストのデータセット」を参照してください。

発音モデルのカスタマイズ も、最もよく使用されるカスタマイズの 1 つです。 発音モデルは、標準的な発音とは異なる一般的でない単語をカスタム モデルで認識するのに役立ちます。 たとえば、アルペン スキーの用語の中には、 schussmogul など、他の言語からの借用語が含まれています。 このような単語は、発音データセットを使用してトレーニングするのに適しています。 発音ファイルを使用して認識を改善する方法の詳細については、「トレーニング用の発音データ」を参照してください。 Speech Studio を使用してカスタム モデルを構築する方法の詳細については、「Custom Speech とは」を参照してください。

音響モデル適応 では、特定の単語を Azure Speech で正しく認識できるようにするため、それらの単語の発音に関する音声トレーニングが提供されます。 音響モデルを構築するには、音声サンプルと、人間が作成したトランスクリプトが必要です。 認識言語が en-US などの一般的なロケールと一致する場合は、現在のベースライン モデルを使用するだけで十分です。 ベースライン モデルは、ネイティブと非ネイティブの英語話者の声を使用して、膨大な量の英語ボキャブラリをカバーする多様なトレーニングがなされています。 このため、en-US ベース モデルに音響モデル適応を構築しても、それほど改善されない可能性があります。 カスタム音響モデルのトレーニングには時間もかかります。 カスタム音響トレーニングのデータ要件の詳細については、「トレーニングおよびテストのデータセット」を参照してください。

最終的なカスタム モデルには、このセクションで説明した 3 つのカスタマイズすべてを組み合わせて使用するデータセットを含めることができます。

カスタム モデルのトレーニング

カスタム モデルをトレーニングするには、次の 2 つのアプローチがあります。

  • そのドメインの多数のフレーズと発話の例を使用してトレーニングする。 たとえば、クリーンアップと正規化が済んだアルペン スキー イベントの音声のトランスクリプトと、以前のイベントの人間が作成したトランスクリプトを含めます。 トランスクリプトには、アルペン スキーで使用される用語と、それらの用語を解説者が発音したサンプルが複数含まれるようにします。 このプロセスに従うと、結果のカスタム モデルでドメイン固有の単語やフレーズを認識できるようになります。

  • 問題領域に焦点を当てた特定のデータを使用してトレーニングする。 このアプローチは、トレーニング データがあまりない場合に適しています。たとえば、アルペン スキーのイベント中に新しいスラング用語が使用され、その用語をモデルに含める必要がある場合などに使用できます。 この種類のトレーニングでは、次のアプローチが使用されます。

    • Speech Studio を使用して文字起こしを生成し、人間が作成した文字起こしと比較します。
    • 解説者の発言に含まれるパターンから問題領域を特定します。 識別する:
      • 問題の単語または発話が適用されるコンテキスト。
      • その単語または発話のさまざまな語形変化と発音。
      • その単語または発話の各解説者に固有の適用方法。

特定のデータを使用したカスタム モデルのトレーニングには、時間がかかる場合があります。 手順には、文字起こしのギャップを慎重に分析し、トレーニング フレーズを手動で追加して、このプロセスを複数回繰り返すことが含まれます。 ただし、最終的にこのアプローチでは、以前に誤って文字起こしされた問題領域に焦点を当てたトレーニングが提供されます。 また、このモデルは、重要な領域を選択的にトレーニングし、重要度順にトレーニングを進めることにより、反復的に構築することができます。 もう 1 つの利点は、トレーニング データの構築を何度も繰り返した後でも、データセット サイズに含まれる発話が数千にもならず、数百で済むことです。

モデルの構築後

モデルの構築後は、次の推奨事項に留意する必要があります。

  • 字句テキストと表示テキストの違いに注意する。 Speech Studio では、字句テキストに基づいて WER が生成されます。 ただし、ユーザーが目にするのは、句読点や大文字と小文字の区別があり、数値の単語が数字で表される表示テキストです。 次に、字句テキストと表示テキストの例を示します。

    字句テキスト: 素晴らしいスピードですそしてさらに素晴らしいのはタイムですこのドイツ選手は五十七点ゼロ六三秒でした

    表示テキスト: 素晴らしいスピードです。 そして、さらに素晴らしいのはタイムです。 このドイツ選手は 57 点 063 秒でした。

    期待されるテキスト: 素晴らしいスピードです。 そして、さらに素晴らしいのはタイムです。 このドイツ選手は 57.063 秒でした。

    カスタム モデルでは WER 率が低くなりますが、ユーザーが認識するエラー率 (表示テキストのエラー) が低くなるわけではありません。 この問題は主に英数字入力で発生します。これは、適用が異なると、その入力の表示方法も異なる場合があるためです。 WER のみに頼らないようにする必要があります。 また、最終的な認識結果を確認する必要もあります。

    表示テキストが間違っているように見える場合は、SDK からの詳細な認識結果 (字句テキストを含む) を確認します。これにはすべてがスペルアウトされています。字句が正しい場合、認識は正確です。 その後、後処理ルールを追加することにより、表示テキスト (最終的に認識された結果) の誤りを解決できます。

  • データセット、モデル、およびそれらのバージョンを管理する。 Speech Studio では、プロジェクト、データセット、モデルを作成するときに、名前と説明の 2 つのフィールドしかありません。 データセットとモデルを反復的に構築する場合は、適切な名前付けとバージョン管理のスキームに従って、データセットの内容と、そのデータセットのバージョンを反映するモデルを簡単に識別できるようにする必要があります。 この推奨事項の詳細については、「カスタム音声テキスト変換ソリューションをデプロイする」を参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Pratyush Mishra |プリンシパル エンジニアリング マネージャー

その他の共同作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順