NPU の ASLP 研究所は、WeNet の CPPN に基づいたニューラル ネットワーク ホットワード拡張音声認識ソリューションをオープンソース化しました。

コンテキストバイアスは、コンテキスト知識を音声認識 (ASR) システムに統合して、関連分野の単語 (一般に「ホット ワード」として知られている)の認識精度を向上させることを目的としています。多くの ASR シナリオでは、認識される音声には、ドメイン固有の名詞やユーザーのアドレス帳内の名前など、トレーニング データではめったに見られない、または見られないフレーズが含まれる場合があります。これらのフレーズの認識精度は、ユーザー エクスペリエンスに大きな影響を与えるか、下流タスクへの影響は大きいものの、汎用データで ASR システムをトレーニングする場合に完全に正しく特定するのは困難です。したがって、コンテキスト バイアス手法は、これらの「ホット ワード」の認識精度を向上させることを目的として非常に価値があります。

NPU の音声および音声処理研究グループ (ASLP@NPU) は最近、音声研究のトップカンファレンスである INTERSPEECH2023 で、「コンテキストフレーズ予測ネットワークによるコンテキスト化されたエンドツーエンド音声認識」と題する論文を発表しました。この論文では、ホット ワード フレーズ予測ネットワークに基づくディープ ホット ワード エンハンスメント手法を提案します。この手法は、ホット ワード エンコーディングを使用して音声内のホット ワードを予測し、バイアス損失を計算することでディープ バイアス モデルのトレーニングを支援します。提案された方法は、さまざまな主流のエンドツーエンド ASR モデルに適用でき、ホットワード データに対するモデルの認識精度が大幅に向上します。

このソリューションのコードは主に、論文の最初の著者である Huang Kaixun によって完成されました。現在、WeNet コミュニティのオープンソースです。詳細については、https://github.com/wenet-e2e/wenet/pull/ を参照してください。 1982年

ルールベースのホットワード拡張

WeNet によって以前に実装されたホット ワード ソリューションは、ルールベースのホット ワード拡張です。つまり、デコード プロセス中にホット ワード リスト内の単語が一致すると、デコード パスに特定の報酬が与えられ、検索パスに次のものが含まれます。ホットワードは確率が高く、より正確であり、容易に認識されます。詳細については、以下を参照してください。

WeNet ホットワード拡張 2.0 が登場します

WeNet アップデート: ホットワード拡張をサポート

このソリューションは通常の状況では優れた処理能力を備えていますが、まれな単語やトレーニングでは見られない単語に対する認識効果は非常に低くなります。本質的に、この手法は浅い​​融合 (シャドウ フュージョン、または融合後) のホット ワード ソリューションであり、トレーニング中には見ら​​れず、予測することが困難です。デコード候補パスにはまったく表示されないため、いくら報酬が得られるわけでもありません。役立ちます。以下に紹介するニューラル ネットワークのホット ワードはディープ フュージョン (またはプレフュージョン) であり、レア ワードの問題を非常に効果的に解決でき、一般的なホット ワード認識でもより良い結果が得られます。

ニューラルネットワークのホットワード強化

ニューラル ネットワークに基づくホット ワード強化では、一連の独立したバイアス モジュールをエンドツーエンドの ASR モデルに導入して、ホット ワード情報をモデル化および統合し、ホット ワード強化のプロセスをニューラル ネットワーク モデル推論のプロセスに配置します。デコード マップに基づく従来のホット ワード強化スキームと比較して、ニューラル ネットワークのホット ワード強化は非常に柔軟に使用でき、小さなホット ワード リストに対してはデコード マップ強化スキームよりも優れた結果を達成できます。トレーニングセットに一度も出現したことのない単語のデコードマップ強化スキーム 珍しい単語にも優れた強化効果があります。

近年、ニューラルネットワークのホットワード強化手法が急速に発展しています。2018 年に Google は、LAS モデル上の完全なニューラル ネットワークを通じてホットワード情報を統合した CLAS モデル [2] を初めて提案しました。CLAS のモデル構造は次の図に示されており、含まれる 2 つのバイアス モジュールは次のとおりです。

  • ホット ワード エンコーダ (バイアス エンコーダ): RNN を通じてホット ワード情報をエンコードし、長さが等しくないホット ワードを同じ次元のホット ワード埋め込みにエンコードします。

  • ホット ワード バイアス レイヤー (アテンション): マルチヘッド アテンション レイヤーが含まれており、オーディオ エンコーディングをクエリとして使用し、ホット ワード エンコーディングをキーと値として使用し、現在のオーディオに関連するホット ワードをクエリし、ホット ワード対応エンコーディングを抽出します。

写真

ニューラル ネットワークのホット ワード強化に関するその後の研究は、基本的に CLAS に従い、ホット ワードのエンコード、オーディオ関連のホット ワードのクエリ、情報の統合の 2 つのステップに分かれていました。他の ASR モデルでは、RNNT [3] モデルや CIF [4] モデルに適したニューラル ネットワーク ホットワード拡張モデルが提案されており、TCPGen [5] や NAM [6] など、ニューラル ネットワーク拡張手法の多くのバリアントも作成されています。 ] 待って。

CPPN論文紹介

これまでのニューラル ネットワークのホット ワード強化の研究では、主に、RNNT などの ASR モデルに対するホット ワードの強化の効果の達成または改善が検討されていましたが、AED モデルに対する効果的な純粋なニューラル ネットワークのホット ワード強化方法が不足していました。したがって、私たちの最初の動機は、AED モデルで効果的なニューラル ネットワーク ホット ワード強化スキームを見つけることであり、実験には WeNet フレームワークを使用しているため、CTC 事後分布に依存するアテンション リスコア デコードの特性に基づいて、次のことができることを期待しています。エンコーダ部分でニューラルネットワークを実行し、インターネットのホットワードを強化します。

実験の初期段階では、ホットワードエンコーダとホットワードバイアス層を含む基本的なホットワード強化モジュールをトレーニング用にAEDモデルのエンコーダに追加しようとしましたが、モデルはホットワードを強化する機能を学習しませんでした。推論 プロセス中にホットワード情報を追加しても、結果にはほとんど影響しません。私たちの分析によると、これは、AED モデルの場合、ホットワード エンハンスメント モジュールがホットワード エンコーディングとオーディオ エンコーディングの間の関係を学習することがより困難であるという事実による可能性が高いことが示唆されています。ホットワード強化タスクの明示的な監視なしで、トレーニングのために ASR の損失関数のみに依存する場合、モデルはホットワード強化モジュールの出力を直接放棄する傾向があります。したがって、私たちの研究の焦点は、ホットワード強化タスクの効果的な教師あり損失を見つけることに移りました。

最も直観的なアイデアは、ホット ワード拡張モジュールに文に含まれるホット ワードを直接予測させることですが、ホット ワード モジュールの入力および出力の長さはオーディオのエンコード長と同じであるため、エンコード長の間にギャップが生じます。文中に含まれるホットワードフレーズの長さ。私たちの実験では、CTC 損失がこの問題をうまく解決できることがわかりました。また、エンコーダー自体も WeNet AED モデルの実装における補助トレーニングで CTC 損失に依存しているため、ホット ワード タスクの予測に CTC 損失を同じように使用することで、ホット ワードを実現できることがわかりました。拡張モジュールはエンコーダーの出力によりよく適合します。これに基づいて、Contextual Phrase Prediction Network (CPPN) に基づくホットワード音声認識ソリューションを提案しました。ホットワード強化モデルの構造を次の図に示します。

写真

図 (c) は、AED モデルに基づいて実装したホット ワード拡張モデルの構造です。モデルのエンコーダー部分のみが変更されているため、デコーダー部分の構造は描画されていません。このホット ワード拡張スキームは、 1 つのエンコーダの CTC モデルのみを含むモデル。AED ホット ワード拡張モデルには、ホット ワード拡張に関連するモジュールが含まれます。

  • ホット ワード エンコーダ (コンテキスト エンコーダ): ホット ワード フレーズをエンコードするホット ワード エンコーダとして BLSTM を使用します。

  • ホット ワード バイアス レイヤー (バイアス レイヤー): 図 (b) に示すように、現在のオーディオに関連するホット ワードをクエリし、ホット ワードの知覚エンコーディングを抽出します。

  • Combiner: オーディオ コーディングとホット ワード対応コーディングを結合し、線形レイヤーを通じて情報を統合します。

  • ホット ワード フレーズ予測ネットワーク (CPP ネットワーク): 図 (a) に示すように、2 つの線形層が含まれており、そのうち 2 番目の線形層はエンコーダの CTC 線形層とパラメータを共有します。ホット ワード フレーズ予測ネットワークは、文に含まれるホット ワード フレーズを予測するための入力としてホット ワード対応エンコーディングを使用し、CTC 損失監視を使用してトレーニングされます。たとえば、文ラベルが「音声認識を勉強するために NPU に行きたいです」である場合、「NPU」と「音声認識」がホットワードであれば、ホットワード フレーズ予測ネットワークのラベルは「NPU 音声認識」になります。

図 (d) は RNNT モデルに基づいたホットワード拡張モデルの構造です. CATT [7] のホットワード拡張スキームに基づいてホットワード フレーズ予測ネットワークを追加しました. AED モデルと比較して, タグ エンコーダ (ラベル エンコーダ) 、ホットワードバイアスレイヤーも追加されました。

ニューラル ネットワークに基づくホット ワード強化スキームには、ホット ワード フレーズ リストのサイズに敏感であるという問題もあります。このモデルは、オーディオに関連付けられたホット ワード フレーズを見つけるアテンション メカニズムに依存しているため、指定されたホット ワード リストが存在する場合、大きすぎると注意が散漫になり、さらに分散してホットワード強化の効果に影響を与えます。そこで,我々は 2 段階のホットワードフレーズスクリーニングアルゴリズム [8] を導入し,まずホットワード強調モジュールを計算せずにモデルのエンコーダ部分の出力を計算し,CTC 事後係数を使用して事後係数と信頼度を計算する. (PSC) とシーケンス順序信頼性 (SOC) を使用して、オーディオに出現する可能性が最も高いホット ワードをフィルターで除外し、より小さなホット ワード リストを構築して、ニューラル ネットワークのホット ワード拡張を実行します。

企画の詳細は以下のツイートをご覧ください。

Interspeech2023 | ホットワード フレーズ予測ネットワークに基づくホットワード音声認識

モデルの実装

  1. ほとんどのホット ワード拡張モジュールの実装は、transformer/context_module.py にあり、ホット ワード エンコーダー、ホット ワード バイアス レイヤー、コンバイナー、ホット ワード フレーズ予測ネットワーク、拡張タスクの CTC を ContextModule クラスで宣言します。論文の実装と比較して、ここではコンバイナーを、線形層を通じてオーディオ エンコーディングに直接追加する単純な形式に置き換えます。これにより、ASR モデルをホット ワード モジュールからより切り離すことができ、テスト済みです。基本的に効果に違いはありません。また、ホット ワード強化の度合いを制御するために、追加のホット ワード強化重みも設定します。ホット ワード対応エンコーディングには、最初にこの重みが乗算されてから、オーディオ エンコーディングに追加されます。

class ContextModule(torch.nn.Module):
    """Context module, Using context information for deep contextual bias

    During the training process, the original parameters of the ASR model
    are frozen, and only the parameters of context module are trained.

    Args:
        vocab_size (int): vocabulary size
        embedding_size (int): number of ASR encoder projection units
        encoder_layers (int): number of context encoder layers
        attention_heads (int): number of heads in the biasing layer
    """
    def __init__(
        self,
        vocab_size: int,
        embedding_size: int,
        encoder_layers: int = 2,
        attention_heads: int = 4,
        dropout_rate: float = 0.0,
    ):
        super().__init__()
        self.embedding_size = embedding_size
        self.encoder_layers = encoder_layers
        self.vocab_size = vocab_size
        self.attention_heads = attention_heads
        self.dropout_rate = dropout_rate
        # 热词编码器
        self.context_extractor = BLSTM(self.vocab_size, self.embedding_size,
                                       self.encoder_layers)
        self.context_encoder = nn.Sequential(
            nn.Linear(self.embedding_size * 4, self.embedding_size),
            nn.LayerNorm(self.embedding_size)
        )
        # 热词偏置层
        self.biasing_layer = MultiHeadedAttention(
            n_head=self.attention_heads,
            n_feat=self.embedding_size,s
            dropout_rate=self.dropout_rate
        )
        # 组合器
        self.combiner = nn.Linear(self.embedding_size, self.embedding_size)
        self.norm_aft_combiner = nn.LayerNorm(self.embedding_size)
        # 热词短语预测网络
        self.context_decoder = nn.Sequential(
            nn.Linear(self.embedding_size, self.embedding_size),
            nn.LayerNorm(self.embedding_size),
            nn.ReLU(inplace=True),
        )
        self.context_decoder_ctc_linear = nn.Linear(self.embedding_size,
                                                    self.vocab_size)
        # 热词 CTC 损失
        self.bias_loss = torch.nn.CTCLoss(reduction="sum", zero_infinity=True)
  1. ホット ワード フレーズ スクリーニング部分のコードを /utils/context_graph.py に実装しました。このファイルは元々、デコード グラフに基づいてホット ワード強化を実装する役割を担っていました。デコードに使用されるホット ワード リストに関する情報が含まれているため、ホット ワード フレーズのスクリーニングを実行し、ホット ワード リストをテンソル形式でホット ワード拡張モジュールに渡します。

class ContextGraph:
    
    def get_context_list_tensor(self, context_list: List[List[int]]):
        """Add 0 as no-bias in the context list and obtain the tensor
           form of the context list
        """

    def two_stage_filtering(self,
                            context_list: List[List[int]],
                            ctc_posterior: torch.Tensor,
                            filter_window_size: int = 64):
        """Calculate PSC and SOC for context phrase filtering,
           refer to: https://arxiv.org/abs/2301.06735
        """
  1. トレーニング中のホット ワード サンプリングのコードは、/dataset/processor.py の context_sampling メソッドと context_label_generate メソッドにあります。トレーニング中に、各発話からランダムな長さのいくつかのフレーズを発話のホット ワードとしてランダムに選択します。各バッチから抽出されたホット ワード フレーズといくつかの干渉フレーズ (前のバッチからのホット ワード) が一緒に使用されます。バッチを構成する単語。

def context_sampling(data,
                     symbol_table,
                     len_min,
                     len_max,
                     utt_num_context,
                     batch_num_context,
                     ):
    """Perform context sampling by randomly selecting context phrases from the
       utterance to obtain a context list for the entire batch

        Args:
            data: Iterable[List[{key, feat, label}]]

        Returns:
            Iterable[List[{key, feat, label, context_list}]]
    """

def context_label_generate(label, context_list):
    """ Generate context labels corresponding to the utterances based on
        the context list
    """

実験結果

[9] で指定されているホット ワード リストを使用して、Librispeech テストの他のテスト セットをテストします。このリストは次のリンクから入手できます: https://github.com/facebookresearch/fbai-speech/tree/main/ is21_deep_bias

WeNet のオープン ソース Librispeech 事前トレーニング済み AED モデルを実験に使用し、元の ASR モデルのパラメーターをフリーズし、ホット ワード拡張モジュールのみを 30 エポックでトレーニングし、3 エポックの平均モデルを結果として取得しました。トレーニング中は、use_dynamic_chunk ストリーミング トレーニング オプションをオフにする必要があります。このオプションをオンにすると、ホット ワード強化効果が低下します。非ストリーミング トレーニングのテストを通じて得られたモデルは、非ストリーミング デコードとストリーミング デコードに対して基本的に一貫したホット ワード拡張パフォーマンスを備えています。トレーニングされたホットワード拡張モデルは、次のリンクからダウンロードできます: https://huggingface.co/kxhuang/Wenet_Librispeech_deep_biasing/tree/main

単語誤り率 (WER) に加えて、非ホットワード部分とホットワード部分の単語誤り率をそれぞれ U-WER と B-WER を使用して評価した実験結果は次のとおりです。

非ストリーミング推論:

方法 リストのサイズ グラフスコア バイアススコア WER ユーワー B-WER
ベースライン / / / 8.77 5.58 36.84
コンテキストグラフ 3838 3.0 / 7.75 5.83 24.62
CPPN 3838 / 1.5 7.93 5.92 25.64
コンテキストグラフ + CPPN 3838 2.0 1.0 7.66 6.08 21.48
コンテキストグラフ 100 3.0 / 7.32 5.45 23.70
CPPN 100 / 2.0 7.08 5.33 22.41
コンテキストグラフ + CPPN 100 2.5 1.5 6.55 5.33 17.27

表内のコンテキスト グラフは、WeNet のデコード グラフに基づくホット ワード拡張方法を表します。デコード マップ ベースの方法は、より大きなホット ワード リスト (3838) を使用するとより効果的に機能しますが、CPPN の拡張効果はより小さなホット ワード リスト (100) を使用するとより効果的です。ホットワード リストのサイズに関係なく、適切な強化の重みとスコアを使用して両方の方法を同時に使用すると、単一の方法よりも優れた結果が得られます。

ホット ワード リスト (3838) の場合は、デコード マップ ベースの方法の方が効果的ですが、ホット ワード リストが小さい (100) 場合は、CPPN の拡張効果が優れています。ホットワード リストのサイズに関係なく、適切な強化の重みとスコアを使用して両方の方法を同時に使用すると、単一の方法よりも優れた結果が得られます。

小規模なホット ワード リストの実験では、非ホット ワード部分の WER の低下も示されました。これは、ホット ワードの強化後、モデルが正しいホット ワードを含むパスを選択できるため、非ホット ワードの方が正確であるためです。ビームサーチ中の単語部分。

ストリーミング推論 (チャンク 16):

方法 リストのサイズ グラフスコア バイアススコア WER ユーワー B-WER
ベースライン / / / 10.47 7.07 40.30
コンテキストグラフ 100 3.0 / 9.06 6.99 27.21
CPPN 100 / 2.0 8.86 6.87 26.28
コンテキストグラフ + CPPN 100 2.5 1.5 8.17 6.85 19.72

ストリーミング推論の結果では、CPPN を使用すると B-WER が大幅に向上しました。これは、非フロー推論のホットワード強化効果と基本的に一致しています。

参考文献

[1] Kaixun Huang、Ao Zhang、Zhanheng Yang、Pengcheng Guo、Bingshen Mu、Tianyi Xu、Lei Xie: コンテキスト フレーズ予測ネットワークによるコンテキスト化されたエンドツーエンドの音声認識、INTERSPEECH 2023

[2] Golan Pundak、Tara N. Sainath、Rohit Prabhavalkar、Anjuli Kannan、Ding Zhao: ディープ コンテキスト: エンドツーエンドのコンテキスト音声認識。SLT2018

[3] Mahaveer Jain、Gil Keren、Jay Mahadeokar、Geoffrey Zweig、Florian Metze、Yatharth Saraf: オープン ドメイン ASR のコンテキスト RNN-T。インタースピーチ2020

[4] Minglun Han、Linhao Dong、Shiyu Zhou、Bo Xu: エンドツーエンドの文脈音声認識のための Cif ベースの協調デコーディング ICASSP 2021

[5] Guangzhi Sun、Chao Zhang、Philip C. Woodland: エンドツーエンドのコンテキスト音声認識のためのツリー制約型ポインター ジェネレーター。ASRU 2021

[6] Tsendsuren Munkhdalai、Khe Chai Sim、Angad Chandorkar、Fan Gao、Mason Chua、Trevor Strohman、Françoise Beaufays: オンデバイスのパーソナライズされた音声認識のための神経連想記憶による高速文脈適応。ICASSP 2022

[7] フェンジュ・チャン、ジン・リュー、マーティン・ラドファー、アタナシウス・ムクタリス、マウリツィオ・オモロゴ、アリア・ラストロウ、ジークフリート・クンツマン:

音声認識用のコンテキスト認識型トランスデューサー。ASRU 2021 [8] Zhanheng Yang、Sining Sun、Xiong Wang、Yike Zhang、Long Ma、Lei Xie: 統合ストリーミングおよび非ストリーミング トランスデューサーにおけるコンテキスト バイアスに対する 2 段階のコンテキスト ワード フィルタリング。インタースピーチ2023

[9] Duc Le、Mahaveer Jain、Gil Keren、Suyoun Kim、Yangyang Shi、Jay Mahadeokar、Julian Chan、Yuan Shangguan、Christian Fuegen、Ozlem Kalinli、Yatharth Saraf、Michael L. Seltzer: コンテキスト化されたストリーミングのエンドツーエンド音声認識トライベースのディープ バイアスとシャロー フュージョンを使用します。インタースピーチ2021

おすすめ

転載: blog.csdn.net/weixin_48827824/article/details/132836161