【社会人博士】学位を取得して意味があったのか?
博士号に興味はあるけど、お金もかかるし休日も犠牲になるし、そもそも取ったところで意味があるのか?など、いろいろ不安に思うかと思います。
私は幸運なことに博士号を取得することができ、それから数年が経ちましたので、博士号を取得して何か変化があったのか?その後何をやっているのか?という点について、私の体験談をお話したいと思います。
博士号取得による変化① 基礎研究所への異動
厳密には学位の有無は関係ないのですが、プライベートな時間を使って大学に通っているというやる気とそこで培ったであろう専門性を認めていただき、社内の基礎研究部署に異動させていただきました。
もともとのモチベーションの一つが、仕事でもっと研究的なことがしてみたいということだったので、この点は非常に大きな変化でした。
これまでは、あくまでも学生として論文を投稿していたのに対して、会社の業務として論文を投稿するようになったので、プロの研究者として一つ世の中に残すことができたということで非常に嬉しかったのを覚えています。
もちろん、プロと呼ぶにはまだまだですが、学生の頃のように学費を払って論文を出すのではなく、給料をもらいながら論文を投稿できたということに一つ成長を感じました。
また、研究を行う環境としても、それまでは所属する研究室に閉じた環境で研究を進めていましたが、指導教員からの紹介もあり、様々な大学とのネットワークも徐々に拡大していき、いくつかの大学と共同研究もできるようになってきました。
博士号取得による変化② 論文投稿以外の対外活動の増加
完全に予想外の嬉しい出来事だったのですが、学会や勉強会といった対外的な活動も少しずつ増えてきています。
①Teck talk登壇
社会人博士時代に学会で知り合った研究者の方から、有志の勉強会にご招待いただき、自身の研究について発表させていただく機会をいただきました。
学会や研究会での招待講演ほどかっちりしたものではないですが、業界で有名な方がたくさん参加されている会だったので、非常に光栄に思いつつもめちゃくちゃ緊張しました。。
オンラインですが200名ぐらいの方に聴講していただき、大変貴重な経験になりました。
オンラインだからこそこれほどたくさんの方に聞いていただけたという面はありつつも、対面で知り合いになれなかったのは少し残念でした。
②国際学会でのワークショップ主催、Session chair経験
完全に指導教員のサポートのおかげではあるものの、ワークショップのオーガナイザーやセッション座長の経験もさせていただきました。
右も左もわからず、非常に緊張しましたが、これも社会人博士がなければありえない貴重な経験でした。
③論文の査読
厳密には博士号がなくても査読の依頼は回ってくるのですが、社会人博士時代は仕事と大学の両立でいっぱいいっぱいだったために引き受けられなかったので、卒業後に初めて査読というものをやらせていただきました。
まあ、査読はお金がもらえるわけではないので、デメリットととらえる方もいらっしゃるかもしれませんが、自分で査読を経験してみることで、自分の論文がどういう見られ方をするのかという視点が身についたような気がします。
いずれも過去の経験が次の機会を運んできてくれるという、それまでの仕事ではあまり経験してこなかった体験になりました。
博士号取得による変化③ 名刺に書ける
今となってはほとんど効力を発揮しないのであまり何も思いませんが、名刺に博士(工学)と書いてもらえたのは地味に嬉しかったです。
それ以外にも、ごくまれに学会等でDr. ○○と呼んでもらえることもあり、ちょっとだけ嬉しかったのを覚えています。完全に自己満ですが。
社会人博士のデメリット
上記のように、いいこともたくさんありましたが、社会人博士にもデメリットはありました。
それは、「ストレートで博士課程に進んだ人と比べて出遅れている」という点です。
私の場合、長いこと研究とは遠い業界で働いていたということもあり、同世代あるいは私よりも若い研究者に追いつくためにはかなり頑張らないといけません。
とはいっても、ストレート博士たちとは異なる面では成長しているはずなので、自分にできることをやっていくしかないのですが。
まとめ
本記事では、社会人博士によって、その後どんな変化があったかについてまとめました。
個人的には、今のところいいことばかりですが、唯一デメリットを挙げるとするとストレート博士に出遅れているという点でした。
これを聞くと、「じゃあもう歳だからやめておこう」、「今から始めても無理なのか」と思ってしまいそうですが、一つ言えることは、現時点で迷っているのであれば、早めに行動することをお勧めします。
仮に今40歳でも50歳でも、やってできないことはないと私は信じています。
今から野球選手にはなれなくても、行動することで今よりも満足できる人生にはなると思います。
そんな風に自分に言い聞かせて、自分にできる範囲でもう少し頑張ってみようと思います。
End-to-end手話認識の概要
手話認識の必要性
以下の図は、深層学習を活用した健聴者と手話話者とのコミュニケーション例を示しています。
上図に示すように、健聴者→手話話者には、音声認識モデルを使用することができます。
深層学習と学習データの拡充にともない、近年は非常に高い精度で音声を書き起こすことができますので、下図に示すように、いくつかのアプリもリリースされています。


しかし、反対に手話話者が健聴者に何かを発信する場合、依然として筆談などの方法に頼らざるを得ず、リアルタイムでスムーズにコミュニケーションをとるのは非常に難しいのが現状です。

したがって、手話話者と健聴者のコミュニケーションをサポートするためには、下の図のように手話認識技術が必要です。
また、上段の音声認識でさえ、手話に比べると理解しづらい場合があるので、できればテキストではなく手話を生成することが望ましいです。本記事では、手話認識に焦点を当てるので、手話生成については割愛します。

手話認識の概要
以下の図は、手話認識の一般的なパイプラインを示しています。
一般に手話はGlossと呼ばれる、単語のような単位から構成されており、Glossを複数組み合わせることでセンテンスを表します。
したがって、健聴者が理解しやすいように、Glossシーケンスを一般的なテキストシーケンスに翻訳する必要があります。
ここでは、手話からGlossシーケンスへの変換を手話認識、Glossシーケンスからテキストシーケンスへの変換を手話翻訳と呼びます。

Yin, Kayo, and Jesse Read. "Better sign language translation with STMC-transformer." arXiv preprint arXiv:2004.00588 (2020).
カスケード手話翻訳からEnd-to-end手話翻訳へ
過去に、音声認識やSpeaker diarizationと同じく、手話翻訳についても、近年、ニューラルネットワークを用いたEnd-to-end手話翻訳が提案されています。

2] Necati Cihan Camgoz et al. “Neural sign language translation”. In: Proceedings of the IEEE conference on computer vision and pattern recognition. 2018, pp. 7784–7793
しかし、以下の表に示す通り、音声認識と異なり手話翻訳にはデータセットが圧倒的に少ないという大きな課題があります。
データセットが少ないため、結果として認識性能も悪い傾向があり、実用化を妨げています。
今後のアプローチとしては、放送局やYoutubeの手話データ等を用いた学習データの拡充や大規模言語モデル、音声モデル等の活用による手話翻訳モデルの性能向上が考えられます。

[2] Necati Cihan Camgoz et al. “Neural sign language translation”. In: Proceedings of the IEEE conference on computer vision and pattern recognition. 2018, pp. 7784–7793
[3] Camgoz, Necati Cihan, et al. "Sign language transformers: Joint end-to-end sign language recognition and translation." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020.
複数話者の音声認識におけるSpeaker diarizationの役割
本記事では、複数話者の音声認識における音声認識の難しさについて簡単に述べた後、そのようなユースケースでの必須技術であるSpeaker diarizationの概要をまとめます。
複数話者の音声認識の難しさ
以前の記事で、End-to-end音声認識モデルについてまとめましたが、これらの音声認識モデルは、基本的には左図のようなクリーンな音声を対象としています。
しかし、よりユーザの使い勝手向上のためには、右図のような複数話者が一つのマイクを使用するようなケースに対応する必要があります。
このような環境では、複数話者の音声や周囲の雑音が混入してしまうため、上記のようなクリーンな音声を想定している音声認識モデルをそのまま適用すると大幅な性能劣化が生じることが知られています。

複数話者の音声認識を行うための一般的なパイプライン
このような環境で正しく音声認識を行うためには、音声認識モデルに音声を入力する前に、話者ごとに音声信号を分離する必要があります。
以下の右図に示すのは、その一例であり、Speaker diarization、音源分離、音声認識モデルから構成されています。簡単に各モジュールの役割について述べます。

①Speaker diarization
複数話者の音声の混合信号を入力とし、「誰が○○秒~○○秒まで話した」という情報を出力します。発話区間検出(Voice Activity Detection, VAD)の多クラス版ということになります。
②音源分離
Speaker diarizationで「誰が○○秒~○○秒まで話した」という情報が得られれば、話者ごとに別々に音声認識を行うことが可能になりますが、実際のシーンでは複数話者が同時に話していることあります。
そのようなオーバーラップした発話を正確に認識するために、音源分離を行います。
音源分離については、少し古いですが、以下も参照いただければと思います。
③音声認識
話者ごとに分離された音声信号が音声認識モデルに入力され、結果として話者ごとに音声認識結果が得られます。
Speaker diarizationとは?
ここでは、上記のパイプラインにおけるSpeaker diarizationについて、もう少し詳しく述べます。
繰り返しになりますが、Speaker diarizationとは、複数話者の混合信号から、「誰が○○秒~○○秒まで話した」という情報を出力します。より具体的にいうと、下図のように、各時間フレームごとに、アクティブな話者IDを出力します。

従来のSpeaker diarization
音声認識モデルの歴史とよく似ていますが、従来は以下に示す複数のモジュールにより、Speaker diarizationは実現されていました。
①発話区間検出(Voice Activity Detection, VAD)
まず、話者IDによらず、発話区間のみを抽出します。
発話区間検出としては、エネルギベースの手法,統計モデルを用いた手法や深層学習ベースの方法も提案されています。
②Speaker embedding
VADにより検出された発話区間の信号に対し、各時間フレームごとにi-vectorやx-vectorなどのspeaker embeddingを計算します。
speaker embeddingは話者ごとの声質の特徴をとらえたものとみなすことができ、声を使った本人認証や話者識別にも使用されています。
③クラスタリング
Speaker embeddingは話者の声質特徴とみなすことができるので、それらをクラスタリングすることで、話者ごとにspeaker embeddingを分離することができます。
これらの処理は、各時間フレーム事に行われているので、Speaker diarizationの目的である、「誰が○○秒~○○秒まで話した」という情報得ることができます。

しかし、このようなクラスタリングアプローチには、一つ大きな問題があります。
③でクラスタリングアプローチを採用しているため、必ずどれか1人の話者IDにしか分類されないことです。
すなわち、複数話者がオーバーラップして話していた場合、必ずどちらか片方の話者しかアクティブになりません。
End-to-End Neural Diarization (EEND)
そこで、近年、3つのモジュールから構成されていたSpeaker diarizationを一つのニューラルネットワークで実現する、End-to-End Neural Diarization (EEND)が提案されています。

EENDアプローチでは、マルチクラスアプローチではなく、マルチラベルアプローチを採用することで、複数話者のオーバーラップにも対応することができます。
以下の図にマルチクラスとマルチラベルの違いを示しています。

・マルチクラス
マルチクラスアプローチでは、最終層にSoftmax関数を採用しており、必ずどれか1つのクラスが選択されます。
そのため、オーバーラップした発話には対応することができませんが、ImageNetのような、画像のクラス分類(dog or cat or horse) のように、重複することがないタスクに適しています。
・マルチラベル
一方、マルチラベルアプローチでは、最終層にSigmoid関数を使用することで、複数のクラスが同時にアクティブになることできます。
Speaker diarizationのほかに、音響イベント検出にも適しています。
クラスタリングアプローチとEENDの比較
以下は、2019年の論文で提供されている実験結果を引用しています。
上記のように、EENDはオーバーラップに対応することができるため、DER (Diarization Error Rate) という指標で、よりエラーが小さくなっていることが示されています。

まとめ
本記事では、複数話者の音声認識の概要とその必須モジュールであるSpeaker diarizationについて述べました。
本記事では、オーバーラップに対応できるという利点に焦点を当てましたが、話者数のカウントが難しいというような課題も存在します。
もし興味がありましたら、さらに調べてみていただければと思います。
End-to-End音声認識サーベイ オフラインモデルの概要とオンライン化
本記事では、End-to-End音声認識において、オフラインモデルの代表的な手法とそのオンライン化について述べます。
各手法の詳細には触れませんが、そもそもEnd-to-End音声認識とは何かよくわからない方のための記事です。
大体の概要を掴んでいただいた後、各手法の詳細を調べていただければと思います。
End-to-End音声認識については、以下を参照していただければと思います。
オンラインモデルとオフラインモデルの違い
・オンラインモデル
オンラインモデルは、発話が開始された直後から逐次的に処理が開始されます。
発話した直後からテキストが出力されるため、レスポンス時間が短いというメリットがありますが、オフラインモデルに比べ、性能が低いというデメリットがあります。
・オフラインモデル
オフラインモデルは、発話全体を入力する必要があるため、1つの発話が完了するまで処理を開始することができません。
例えば、1つの発話が10秒間だったとすると、発話が完了した10秒後から処理が開始され、発話中は何も出力されません。
レスポンス時間が遅いというデメリットはありますが、前後関係を学習することができるため、オンラインモデルと比べると性能が高いというメリットがあります。

オフラインモデルのレスポンス時間
オフラインモデルのレスポンス時間が遅い原因について述べます。
Attention-based encoder decoderは大きく、以下の3つのモジュールから構成されています[1]。
・Encoder
音響特徴量を入力し、中間層の特徴量を抽出するモジュール。Bidirectional LSTM、Transformerなど、さまざまな手法が提案されている。
・Decoder
Encoderで抽出する特徴量から、出力であるテキストへの変換を行います。Encoder同様、LSTMやTransformerなどが使用できます。
・Attention
中間特徴量と出力テキストのアラインメントを取ります。直感的に言うと、音声信号とテキストのどの部分が対応しているかを学習します。

この中で、レスポンス時間を遅くしているのは、以下の2点です。
①Attention
Attentionでは、音声信号とテキストがどう対応しているかを学習するため、発話全体を入力する必要があります。つまり、1つの発話が完了してからでないと処理を開始できません。
※Encoder、DecoderにTransformerやConformerを使用した場合、それぞれのモジュール内にもSelf-Attentionが使用されているため、発話全体の入力が必要になります。
②AutoregressiveなDecoder
上図の赤矢印で示すように、デコード時には1時刻前のテキストが必要になります。1時刻前のテキストがないと次のテキストがデコードできないため、複数の文字を並列でデコードすることができません。
2つの原因により、発話が完了してから処理が開始され、1文字ずつしか出力されないということになりますので、実用上は非常に大きなデメリットとなります。
レスポンス時間短縮のための手法
レスポンス時間短縮のため、Non-autoregressiveモデルと呼ばれる手法が提案されています。
これらの手法は、前節②AutoregressiveなDecoderを解決するための手法です。
Mask CTC [2]
詳細は割愛しますが、Mask CTCという手法は、Non-autoregressiveなデコーダによって、複数の文字を並列にデコードすることを可能としています。
CTC(Connectionist Temporal Classification)
CTCは、レスポンス時間短縮のために提案された手法というよりは、最初のEnd-to-Endモデルの手法として提案されたものですが、エンコーダしか用いないため計算量が少なく、近年でも注目されている手法です。

オフラインEnd-to-End音声認識のオンライン化
発話全体における、音声信号と出力テキストの対応関係を学習するためのAttentionという機構があるために、Attention-based encoder decoder構造の手法はオンライン処理ができないということを述べました。
しかし、近年、Streaming Transformerと呼ばれる、ブロックごとに処理をすることでオンライン処理を可能にした手法も提案されています [3]。
詳細は割愛しますが、Contextual Block Processing of the EncoderとBlockwise Synchronous Beam Search of the Decoderという処理によって、前後のコンテキストを維持したままブロック処理を行います。

まとめ
本記事では、オフラインEnd-to-End音声認識モデルとそのオンライン化について概要を述べました。
次から次へと新たな手法が登場し、混乱している方の参考になれば幸いです。全体像を俯瞰した上で、各手法の詳細を調べていただければと思います。
Reference
[1] Watanabe, Shinji, et al. "Hybrid CTC/attention architecture for end-to-end speech recognition." IEEE Journal of Selected Topics in Signal Processing 11.8 (2017): 1240-1253.
[2] Higuchi, Yosuke, et al. "Mask CTC: Non-autoregressive end-to-end ASR with CTC and mask predict." arXiv preprint arXiv:2005.08700 (2020).
[3] Tsunoo, Emiru, Yosuke Kashiwagi, and Shinji Watanabe. "Streaming Transformer ASR with blockwise synchronous beam search." 2021 IEEE Spoken Language Technology Workshop (SLT). IEEE, 2021.
【論文執筆】執筆途中の原稿をgitで管理し、Pocket gitで効率的にタブレットで推敲する方法
本記事では、githubを使って論文執筆を行い、タブレットを使って推敲を行う方法を紹介します。
この記事は以下のような方を想定しています。
① 論文やドキュメントを「2021_1224_〇〇仕様書_最終版_ver2」等の名前を付けてしまい、管理が煩雑になってしまう。特に、別のPCから作業をする可能性があるので、バージョン管理を楽に正確に行いたい。
② PC画面ではミスに気づきにくいため、印刷してじっくり読みながら推敲したいが、ゆくゆくは大量の紙ゴミになってしまう。
以上のような方を対象に、以下の方法を紹介します。
① 執筆中の論文をgitで管理する方法
② その論文をタブレットで閲覧、スタイラスペンでメモ書きしながら推敲する方法
論文を書く方はLatexを使うことが多いかと思いますが、wordやexcelを使ったドキュメントでも同じ方法で管理することができます。
①執筆中の論文をgitで管理
本記事では、gitの使い方自体の説明は省略しますが、執筆する論文のフォルダをgitに登録します。
※全世界に公開されてしまいますので、公開設定を必ずPrivateにしてください。
また、機密性の高い文書の場合、よりセキュアなツール等をご検討ください。そのあたりの検討は、自己責任でご検討いただければと思います。

②執筆中はこまめにcommit, push
執筆中は、こまめにcommit, pushし、web上で管理します。
以下の図のように、変更内容のメモとともに、各バージョンをgitで管理することができます。
最大のメリットは、別のPCからでもいつでも最新版をpullすることができる点です。
手作業でGoogle Drive等にアップロードしていると、必ずバージョンの不整合が生じます。
常にgitに最新版をpushしておくことで、自宅のデスクトップPCでも、外出用ノートPCでも執筆作業が可能になります。
※繰り返しになりますが、githubへのpushに関して、公開設定や機密性の検討はご自身でよく検討してください。

② タブレットで閲覧、スタイラスペンでメモ書きしながら推敲する方法
①と同様に、バージョン管理を容易にするため、推敲に使用するタブレットでもgitを使用します。

本記事では、Androidタブレットを想定します。
具体的には、Pocket gitというアプリをインストールします。無料ではありませんが、300円弱のAndroidアプリです。
通常のGitと同じようにclone, commit, pushなど一通りの機能を使うことができます。
いろいろできるのでしょうが、タブレットでソフト開発を行うわけではないので、基本的にはcloneとpullしか使いません。
以下は、論文執筆用のrepositoryをcloneした後の画面です。
ご覧のように、数回のタップで最新版の原稿をpullすることができます。

最新版をpullした後は、原稿ファイルをタップすれば、タブレット上で原稿の閲覧を行うことができます。
文章の推敲を行う際は、私はペンで書き込みながら読みたいので、Pen&PDFというアプリで開きます。
PDF編集ができるアプリはたくさんありますが、このアプリはむしろ最小限の機能しかありません。
その分余分な設定の手間がなく、開いた瞬間から書き込むことができます。

タブレットは、ファーウェイのMediapad M5を使っています。
iPadと比べると重いのが難点ですが、付属のスタイラスペン性能がそれなりによく、価格もそこそこです。appleユーザーではないのであれば、おすすめかと思います。
どのタブレットでも問題ありませんが、10インチ以上のディスプレイにすることをお勧めします。
8インチだと、小さすぎてA4の論文は読みにくいです。10インチでもまだ足りませんが、持ち運びやすさを考えると、妥当なサイズかと思います
|
|
あとは、書き込んだ画面を見ながらPC上で再度修正、タブレットで推敲を繰り返します。
これで私は快適に論文の執筆ができるようになりました。
まとめ
本記事では、私が使っている論文執筆の方法を紹介しました。
論文に限らず、その他のドキュメントでも使える管理方法だと思いますので、参考になれば幸いです。
執筆中の論文でなく、世の中の論文を管理する方法についても紹介していますので、よければそちらも参考にしてください。
ESPnetを用いたEnd-to-End音声認識モデル学習のステージ構成、オプション
ESPnetというEnd-to-End音声認識のオープンソースについて、Referenceに示す資料を調べので、本記事にまとめます。

レシピのステージ構成
●データセットの前処理
Stage 1: trainセット、validセット、evalセットに対応するデータディレクトリを生成する
local/data.shが呼び出されます。
data/フォルダが作成され、trainセット、validセット、evalセットフォルダの中に、以下のメタファイルが作成される。evalセットはコーパスによっては、複数のフォルダが作成される。
utt2spk:各発話IDに対し、その発話に含まれる話者IDを示す
spk2utt:各話者IDに対し、その話者IDがどの発話に含まれるかを示す
text:各発話IDに対する正解データとなるテキスト
wav.scp:各発話IDに対応する音声ファイルのパス
Stage 2(Optional): 話速変化に基づくデータ拡張を実施するステージ
--speed_purturb_factorsオプションを指定した場合のみ実行されます。
Stage 1で作成されたtrainセットフォルダ内のwav.scpにパイプを使ったsoxコマンドが追記されます。
Stage 3: 特徴量抽出を行う
data/フォルダのメタデータに基づいて、特徴量抽出が行われる。特徴量データはdump/フォルダに出力される。
特徴量のタイプは、--feats_typeオプションに応じて処理が異なる。デフォルトはfeats_type=rawであり、特徴量抽出の代わりにwav.scpの整形のみが行われます。feats_type=raw以外を利用する場合は、Kaldiの特徴量抽出を利用します。この場合、Kaldiのコンパイルが必要となります。
※rawを選択した場合でも、実際にはmel log spectrogramに変換される。
Stage 4: 発話のフィルタリングを行う
学習セットと検証セットの中の最短しきい値以下の発話と最長しきい値以上の長さの発話を取り除きます。最短及び最長しきい値は--min_wav_duration及び--max_wav_durationオプションでそれぞれ指定することができます。
Stage 5: トークンリスト(辞書)を作成する
--token_typeオプションに応じて、利用するトークンのタイプが異なります。ASRではtoken_type=charもしくはtoken_type=bpeが利用可能です。token_type=bpeの場合、SentencePieceによるサブワードへの分割が行われます。
●オプショナル言語モデルの学習
Stage 6(Optional): 言語モデル学習のための統計量を算出する
動的にバッチサイズを変更するための各データのシェイプ情報(系列長及び次元数)を取得します。言語モデルの利用をしない場合、--use_lmオプションをuse_lm=falseにすることでStage 6から8までをスキップすることができます。
Stage 7(Optional): 言語モデルの学習を行う
--lm_config及び--lm_argsオプションに応じて言語モデルの学習を行います。
デフォルトではLSTMを用いたニューラル言語モデルが学習される。conf/フォルダのコンフィグファイルでモデルのパラメータ等を変更可能。
Stage 8(Optional): 学習した言語モデルのパープレキシティ(PPL)を計算する
簡易的に言語モデルの評価を実施します。
Stage 9(Optional): N-gramを計算するステージ
ニューラル言語モデルではなく、N-Gramによる言語モデル
●End-to-Endモデルの学習、推論
Stage 10: ASRモデルの学習のための統計量を算出する
動的にバッチサイズを変更するためのデータのシェイプ情報(系列長及び次元数)と、特徴量の正規化を行うための学習データ全体の統計量(平均及び分散)を計算します。
Stage 11: ASRモデルの学習を行う
--asr_config及び--asr_argsオプションに応じてASRモデルの学習を行います。
exp/フォルダに学習済みモデルやlossの推移等の情報が保存される。
Stage 12: 学習したモデルを利用してデコーディングを行う
--inference_config及び--inference_argsオプションに応じて、学習した言語モデルとASRモデルを用いた推論を行います。
デフォルトでは、CPUを使った推論が行われる。
Stage 13: デコードされた結果の評価を行う
Character Error Rate(CER)及びWord Error Rate(WER)を算出します。
--token_type charを選択した場合、WERは正しく計算されない(SERになる)。
●モデルのアップロード(デフォルトではスキップされる)
Stage 14-15(Optional): 学習済みのモデルのパッキング及びZenodoへのアップロードを行うステージ。
利用するには、Zenodoにユーザー登録を行い、トークンを発行する必要があります。
指定可能なオプション例
・開始、終了ステージの設定
動作確認が取れるまでは、以下のオプションを用いてステージごとに実行するほうが望ましい。
--stage
--stop_stage
・特徴量タイプ(raw or fbank)
デフォルトでは特徴量はraw。fbankにする場合は、kaldiのインストールが必要。
kaldi用にすでに抽出済の特徴量を使用する場合、dumpフォルダに保存しておく。
--feats_type
・トークンタイプ
デフォルトでは文字ベースのトークンになっている。bpeも選択可能
--token_type
・additionalの言語モデルの有無を選択可能
--use_lm true
様々なモデルの学習(Encoder-decoder, Transducer, CTC)
End-to-Endモデルは、Attention-based Encoder Decoder、CTC、RNN-Transduce系のモデルが存在する。
以下に、各タイプのモデルの学習方法を記載する。
Attention-based Encoder Decoder
以下の図にAttention-based Encoder Decoder構造の概要を示す。デフォルトでは、CTC lossとAttention lossの重みづけ和が損失として採用されている。以下のパラメータで変更可能。yamlに記載するか、オプションで指定する。
--ctc_weight
エンコーダ、デコーダブロックには、Conformer, Transformer, LSTMのyamlファイルがデフォルトで用意されている。
CTC
上図におけるエンコーダ部分だけを使用することでCTCモデルの評価が可能。
具体的には、Attention-based Encoder Decoder構造における、yamlファイルにて、Attention lossの重みを0(CTC lossの重みを1)にする。
具体的には、train.yaml, decode.yamlの両方で、ctc_weight=1.0と設定する。
※ただし、モデル自体はオフライン
RNN-Transducer
RNN-Transducerを学習する場合、ESPnet1のyamlファイルに以下を記載する。
デフォルトでは、BLSTMを用いたRNN-Transduceが学習される。
criterion: loss
model-module: "espnet.nets.pytorch_backend.e2e_asr_transducer:E2E"
Reference
ESPnet2で始めるEnd-to-End音声処理
https://kan-bayashi.github.io/asj-espnet2-tutorial/
End-to-End音声処理の概要とESPnet2を用いたその実践
https://www.jstage.jst.go.jp/article/jasj/76/12/76_720/_pdf
ESPnet: end-to-end speech processing toolkit
https://espnet.github.io/espnet/tutorial.html#transducer
ESPnet Hackathon 2019@Tokyo ESPnet概要説明
End-to-End音声認識手法サーベイ ネットワーク構造による3分類
本記事では、End-to-End音声認識手法の概要をサーベイします。
各手法の詳細には触れませんが、そもそもEnd-to-End音声認識とは何かよくわからない方のための記事です。
大体の概要を掴んでいただいた後、各手法の詳細を調べていただければと思います。
End-to-End音声認識モデルとHybrid音声認識モデル
近年、深層学習を用いたEnd-to-End音声認識モデルが大きなトレンドになっていますが、深層学習登場前は、音響モデルと言語モデルがカスケードに接続されたHybridモデルと呼ばれる方法が用いられていました。
以下の図は、Hybrid音声認識モデル(GMM-HMM, DNN-HMM)とEnd-to-End音声認識モデルを示しています。
①GMM-HMM
深層学習登場以前は、GMMやN-gramでモデル化された音響モデル、言語モデルのカスケード構造が用いられていました。
音響モデルは、音声入力から音素列を出力し、言語モデルは、音素列から文字列を出力します。
②DNN-HMM
2010年代に、従来GMMやN-gramでモデル化されてきた音響モデルや言語モデルが深層学習に置き換えられました。
具体的には、DNNを用いた音響モデルやRNNを用いた言語モデルが提案され、深層学習登場前に比べ、大きく音声認識性能が向上しました。
しかし、このようなカスケード構造では、モデルの表現力および誤差蓄積という点で、性能の限界が存在します。
例えば、音響モデルは音素列を出力しますが、本来話し方にばらつきが存在するところ、無理やり有限パターンの音素列に変換してしまうため、表現力の限界があります。つまり、音響モデルの出力は誤差を含みますが、カスケード構造では誤差が蓄積してしまいます。
③End-to-Endモデル
そのような誤差蓄積を防ぐため、全体を1つのニューラルネットワークで表現したのがEnd-to-Endモデルです。
Hybridモデルのように、音響モデル、言語モデルといったものはなく、音声入力から文字列を直接推定します。
このように、全体を1つのネットワークとして、同時に最適化することで、理論上は全体最適が行われることになります。

音声認識性能の推移
では、End-to-Endモデルの出現以降、どの程度音声認識性能は向上したのでしょうか。
以下の図は、各コーパスにおける音声認識性能の推移を示しています。赤線で示すのがCSJと呼ばれる日本語コーパスでのWER(単語誤り率)です。
2016年に星印で示しているのはDNN-HMMモデルでのWERであり、それ以外の手法はEnd-to-End手法のWERを示しています。
DNN-HMMモデルではWER10%を超えていたのに対し、近年のEnd-to-Endモデルでは5%程度まで削減されています。

End-to-End音声認識手法の3分類
近年、様々なEnd-to-End音声認識モデルが提案されています。ここでは、End-to-End音声認識モデルの分類について述べます。End-to-Endモデルは、大きく分けると以下の3つに分類することができます。
①Attention-based encoder decoder
Encoder, Attention, Decoderの3つのモジュールから構成されています。Encoderブロックでは、音響特徴量から特徴量への変換を行い、Decoderでテキストへの変換を行います。また、Attentionモジュールでそれらのアラインメント(どの特徴量とどのテキストが紐づくか)を行います。
1つの発話全体に対して、Attentionを用いたアラインメントを行うため、ストリーミング処理ができませんが、前後の文脈を考慮することができるため、一般的に認識性能が高いです。
代表手法としては、Transformer, Conformer, LAS (Listen, Attend, and Speller)などがあります。
LASでは、Encoder, decoderにLSTMが用いられていますが、Conformer, Transformerモジュールに置き換えることで性能が向上することが報告されています。
②Transducer
Transducer型のEnd-to-End音声認識モデルは、Encoder, Prediction Network, Joint Networkから構成されます。
Encoderによって音声入力から抽出された特徴量と、1時刻前のテキストを用いて、現在時刻のテキストを逐次的に出力します。
逐次出力が可能であることがこの手法の大きなメリットの一つでありますが、Attentionに比べると、一般的に性能は低くなります。
ただし、後述するCTCでは、前後のコンテキストは考慮されないのに対し、Transducer型では、1時刻前のテキストが入力されるので、left-to-rightのコンテキストは考慮されます。
代表手法としては、RNN-Transducer, Transformer-Transducer, ContextNetがあります。
RNN-Transducerでは、EncoderにLSTMが用いられていますが、TransformerやCNNモジュールに置き換えることで性能が向上することが報告されています。
③CTC
CTCは、Joint NetworkとPrediction Networkを持たない、Transducer型の特殊系と考えることができます。
CTCでは、逐次処理ができることに加え、計算コストが小さいことがメリットとして挙げられますが、出力テキストが互いに独立と仮定されるため、前後のコンテキストが考慮されません。したがって、3つの手法の中では性能は低くなります。
代表手法として、RNN-CTT, QuartzNetがあります。QuartzNetでは、EncoderにCNNを用いています。

End-to-End音声認識手法の性能比較
End-to-End音声認識モデルは、3つに分類されることを述べましたが、それぞれの分類の中でも多くの手法が提案されています。
ここでは、各モデルの性能を比較します。以下の図は、各End-to-End音声認識手法のパラメータ数とLibrispeechコーパスにおけるWERを示しています。
全体の中で最も性能が高いモデルは、Conformer Lであり、WERは4.3%でした。
ストリーミング処理が可能なモデルの中では、ContextNet Lがもっとも性能が高く、WERは4.6%程度でした。

Wav2vec2.0を用いたさらなる性能向上
上図は、Librispeechコーパスだけで学習した際の音声認識性能を示していますが、他のテクニックと併用することで、さらに音声認識性能を向上させることができると報告されています。
詳細は省略しますが、Wav2vec2.0と呼ばれる学習済みのencoderを用いることで、さらなる性能向上が可能であることが報告されています(青線→緑線)。

まとめ
本記事では、End-to-End音声認識モデルの概要を述べました。次から次へと新たな手法が登場し、混乱している方の参考になれば幸いです。全体像を俯瞰した上で、各手法の詳細を調べていただければと思います。
Reference
[1] Watanabe, Shinji, et al. "The 2020 espnet update: new features, broadened applications, performance improvements, and future plans." 2021 IEEE Data Science and Learning Workshop (DSLW). IEEE, 2021.
[2] Chan, William, et al. "Listen, attend and spell." arXiv preprint arXiv:1508.01211 (2015).
[3] Dai, Zihang, et al. "Transformer-xl: Attentive language models beyond a fixed-length context." arXiv preprint arXiv:1901.02860 (2019).
[4] Gulati, Anmol, et al. "Conformer: Convolution-augmented transformer for speech recognition." arXiv preprint arXiv:2005.08100 (2020).
[5] Kriman, Samuel, et al. "Quartznet: Deep automatic speech recognition with 1d time-channel separable convolutions." ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.
[6] Rao, Kanishka, Haşim Sak, and Rohit Prabhavalkar. "Exploring architectures, data and units for streaming end-to-end speech recognition with rnn-transducer." 2017 IEEE Automatic Speech Recognition and Understanding Workshop (ASRU). IEEE, 2017.
[7] Zhang, Qian, et al. "Transformer transducer: A streamable speech recognition model with transformer encoders and rnn-t loss." ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.
[8] Han, Wei, et al. "Contextnet: Improving convolutional neural networks for automatic speech recognition with global context." arXiv preprint arXiv:2005.03191 (2020).
【論文紹介】Deep context: end-to-end contextual speech recognition
本記事では、ユーザ特有のコンテキストに応じたバイアシング手法を提案した論文を紹介する。
Abstract
自動音声認識(ASR)では、ユーザーが何を話すかは、ユーザーが置かれている特定のコンテキストに依存します。一般的に、このコンテキストは、単語のn-gramのセットとして表現されます。
本研究では、このような文脈を利用する、新しい全ニューラル、エンド・ツー・エンド(E2E)のASRシステムを提案します。我々のアプローチは、Contextual Listen, Attend and Spell (CLAS)と呼ばれ、ASRコンポーネントと文脈n-gramのエンベッディングを共同で最適化する。
推論の際、CLASシステムには、学習時には見られなかったout-of-vocabulary (OOV)の用語を含む可能性のある文脈フレーズが提示されることがある。
我々の提案するシステムを、ビームサーチの際に独立して訓練されたLASモデルと文脈N-gramモデルの間で浅い融合を行う、より伝統的な文脈化アプローチと比較した。
いくつかのタスクにおいて、提案するCLASシステムはベースライン手法を相対的なWERで68%も上回ることがわかり、個別に学習したコンポーネントよりも共同で最適化することの優位性が示された。これは、個別に学習したコンポーネントよりも共同最適化の方が有利であることを示している。

Introduction
音声技術の普及に伴い,音声はモバイル機器やインテリジェント・パーソナル・アシスタントの主要な入力モダリティの1つとなっています.このようなアプリケーションでは、話者のコンテキストに関する情報を認識プロセスに組み込むことで、音声認識性能を大幅に向上させることができます。このようなコンテキストの例としては,ダイアログの状態,話者の位置,さらにはユーザの連絡先や曲のプレイリストなど,ユーザに関するパーソナライズされた情報がある.
近年,自動音声認識(ASR)のためのsequence to sequenceモデルを構築することに関心が集まっている.
このモデルは,入力音声の発話を受けて,単語,単語の一部,または書記素を直接出力するものである.
このようなモデルは,従来のASRシステムの構成要素である音響モデル(AM),発音モデル(PM),言語モデル(LM)を暗黙のうちに1つのニューラルネットワークに統合し,対数尤度や,期待される単語誤り率(WER)などのタスク固有の目標を最適化するように共同で学習するものである.
このアプローチの代表的な例としては,単語出力を目標とするコネクショニスト時間的分類(CTC),リカレントニューラルネットワークトランスデューサ(RNN-T),「Listen, Attend, and Spell」(LAS)エンコーダ・デコーダアーキテクチャなどがある.
最近の研究では,このような手法が,12,500時間分のトランスクリプトされた音声を用いて学習した場合,従来のASRシステムを上回る性能を発揮することが示されている.
本研究では,文脈情報を認識プロセスに動的に組み込む技術を検討する.従来のASRシステムでは、このような情報を取り入れるための有力なパラダイムの1つとして、特定の認識コンテキストに関連する少数のn-gramのLM重みを動的に調整する、独立して学習されたon-the-fly (OTF) rescoringフレームワークを使用していた。
このような技術をシーケンサー・シーケンスモデルに拡張することは,システムの性能を向上させる上で重要であり,現在,活発な研究が行われている.このような背景から、これまでの研究では、shallow fusionまたはcold fusionのいずれかによって、認識プロセスに個別のLMコンポーネントを含めることが検討されてきたが、これは認識プロセスがタスク固有のLMに偏る可能性がある。
浅い融合アプローチは,LASの文脈化にも直接使用されており,話者の文脈から構築された特別な重み付き有限状態トランスデューサ(WFST)を用いて出力確率が修正され,パフォーマンスの向上に効果的であることが示されている.
これまでの手法のように,OTFの再スコアリングのために外部の独立して学習されたLMを使用することは,sequence-to-sequenceモデルの構成要素の共同最適化から得られる利点に反する.
そこで、本研究では、文脈のあるフレーズのリストとして提供される文脈情報を活用して認識性能を向上させることができる、新しいオールニューラルメカニズムであるContextual-LAS (CLAS)を提案する。
我々の手法は、まず、各フレーズを文字列として固定次元の表現に埋め込み、次に、モデルの出力予測の各ステップで利用可能なコンテキストを要約するために、注意メカニズムを採用する。
我々のアプローチは、推論時に文脈上のフレーズの数を可変にすることで、ストリーミング・キーワード・スポッティングの文脈で提案された技術を一般化したものと考えることができる。
提案手法は、学習時に特定の文脈情報が利用可能であることを必要とせず、重要な点として、過去の研究とは異なり、語彙外(OOV)の用語を取り込むことができる一方で、再スコアリングの重みを慎重に調整する必要がないことである。
実験的な評価では、CLASは文脈解析コンポーネントをモデルの他の部分と共同で学習することで、数百の文脈フレーズを扱う場合にはオンラインリスコアリング技術を大幅に上回り、数千のフレーズを扱う場合にはこれらの技術と同等であることがわかった。
Background
LAS
このモデルは,エンコーダ,デコーダ,注意ネットワークの3つのモジュールで構成されており,これらを共同で学習させて,一連の音響特徴フレームから一連の書記素を予測する(図1a).エンコーダは,音響特徴量x = (x1, ... , xK)を読み取り,高レベルの特徴量(隠れた状態)h x = (h x 1 , ... , h x K)を出力する,積層型リカレントニューラルネットワーク(RNN) [19, 20] (本研究では単方向)で構成されている.エンコーダは、ASRシステムの音響モデルに似ています。デコーダは積層型の単方向RNNで,出力トークン(ここでは文字)のシーケンスy = (y1, . . . , yT )の確率を次のように計算する.
エンコーダの状態ベクトル h x に対する条件付き依存性は,マルチヘッドアテンション [21, 13] を用いて,現在のデコーダの隠れた状態 dt と完全なエンコーダの状態シーケンス h x の関数として計算されるコンテキストベクトル ct = c x t を用いてモデル化される. 前の文字コンテキスト y<t を捉えるデコーダの隠れた状態 dt は,次のように与えられる.
ここで,dt-1は復号器の前の隠れた状態であり,y〜t-1はyt-1の埋め込みベクトルである.タイムステップtにおける出力の事後分布は次のように与えられる。P(yt
ここで,Wsとbsは再び学習可能なパラメータであり,[ct; dt]は2つのベクトルの連結を表す.このモデルは,識別損失を最小化するように学習される.
On the fly rescoring
On-the-fly rescoringは、我々の基本的なアプローチの一つである。具体的には,単語レベルのバイアスフレーズのセットが事前に分かっていると仮定し,それらを重み付き有限状態変換器(WFST)にコンパイルする.この単語レベルのWFSTであるGは、「speller」FSTであるSと組み合わされ、一連の書記素/単語ピースを対応する単語に変換します。一般的な言語モデルに対するの手順に従って、文脈的なLM、C = min(det(S ◦ G))を得る。コンテクスト化された LM のスコア PC (y) は、標準的な対数尤度項にコンテクスト化された LM からのスケーリングされた寄与を追加することで、デコーディング基準に組み込むことができる。
ここで,λは,ビーム探索の際に,文脈上のLMがモデル全体のスコアにどの程度影響を与えるかを制御する調整可能なハイパーパラメータである.なお、[22]では、ウェイトプッシュは行われていない。その結果、式5の総合スコアは、単語の境界でのみ適用されます。これは、図2(a)に示されています。したがって、この手法は、関連する単語が最初にビーム上に現れない場合、パフォーマンスを向上させることはできません。さらに、この手法は、文脈上のフレーズの数が少ない場合(例:yes, no, cancel)にはそれなりに機能するが、文脈上のフレーズのリストに多くの固有名詞(例:曲名や連絡先)が含まれる場合にはうまく機能しないことが観察された。
ウェイトプッシュを使用する場合、図2bに示すように、スコアは各単語の先頭のサブワードユニットにのみ適用されます。これは、初期段階で人為的に単語をブーストする可能性があるため、オーバーバイアスの問題を引き起こす可能性があります。
そこで、図2cに示すように、単語の各サブワード単位に重みを押し付けることを検討します。また、フレーズ全体にマッチしない接頭辞に人為的に重みを与えることを避けるために、図中の負の重みで示されるように、減算コストも含めています。Resultの項では,これら3つのアプローチを比較している.

CLAS
このモデルでは、提供されたバイアスフレーズのリストzを介して追加のコンテキストを使用し、P(y|x, z)を効果的にモデル化します。zの個々の要素は、パーソナライズされた連絡先の名前や曲のリストなど、特定の認識コンテキストに関連するフレーズを表しています。
3.1. アーキテクチャ
次に、標準的なLASモデル(図1a)を修正して、CLASモデル(図1b)を作成したことを説明します。
この2つのモデルの主な違いは、バイアス・エンコーダーとそれに対応するアテンション・メカニズムが追加されていることです。
これらのコンポーネントを以下に説明します。
このモデルを理解するために、このモデルは、 z = z1, ... ... , zN と表される、追加のバイアスフレーズのシーケンスのリストにアクセスできると仮定する。z = z1, ... , zN . バイアスフレーズの目的は、モデルが特定のフレーズを出力するようにバイアスをかけることです。しかし、すべてのバイアスフレーズが現在の発話に関連しているとは限らず、どのフレーズが関連しているかを判断し、それを用いてターゲット分布P(yt|h x , y<t)を修正するのはモデル次第である。
我々はLASにバイアスエンコーダーを加え、バイアスフレーズをベクトルh z = {h z 0 , h z 1 , ... ... , h z N }のセットに埋め込む。(バイアスフレーズは現在の発話には関係ないかもしれないので、学習可能なベクトルh z 0 = h z nbを追加します。このオプションは、バイアスフレーズが音声にマッチしない場合に、「バイアスなし」のデコーディング戦略にバックオフすることができ、バイアスフレーズを完全に無視することができます。
バイアス・エンコーダーは多層長短期記憶ネットワーク(LSTM)であり,埋め込みh z iは,ziのサブワード(デコーダーが使用するのと同じ書記素または単語単位)の埋め込みのシーケンスをバイアス・エンコーダーに与え,フレーズ全体の埋め込みとしてLSTMの最後の状態を使用することで得られる.
アテンションは,オーディオエンコーダーで使用したものとは別のアテンションメカニズムを使用して,h z に対して計算される.二次的な文脈ベクトルc z tは,デコーダの状態dtを用いて計算される.この文脈ベクトルは,時間ステップtにおけるzを要約したものである.
CLASモデルの他の構成要素(デコーダーとオーディオ・エンコーダー)は、標準的なLASモデルの対応する構成要素と同じである。CLASでは、音声と前回の出力が与えられたときに、特定のバイアス・フレーズを見る確率を明示的にモデル化している点に注目したい。
Training
損失を最小化するようにCLASモデルを学習します。
ここで、バイアスリストzは、各学習バッチの学習中に実行時にランダムに生成される。これは推論に柔軟性を持たせるためで、モデルは推論時にどのようなバイアスフレーズが使われるかを想定していないからである。
トレーニング用のバイアスフレーズリストは、トレーニングバッチ内の発話に関連する参照トランスクリプトからランダムに作成されます。
バイアスリストの作成プロセスでは、リファレンストランスクリプトのリストr1, ... . r1, ... ... ... rNbatch という参照原稿のリストを取り、その中からいくつかの参照原稿の部分文字列として現れるngramフレーズのリストzをランダムに選択します。
zがバッチ内の発話の一部と一致しないという「バイアスなし」のオプションを行使するために、確率Pkeepで各参照を作成プロセスから除外します。参照が除外されても、その発話はバッチ内に保持されますが、そのトランスクリプトからバイアス・フレーズを抽出しません。Pkeep=0に設定すると、トレーニングバッチにバイアスフレーズが表示されず、Pkeep=1に設定すると、バッチ内の各発話に少なくとも1つのマッチするバイアスフレーズが表示されることになります。
次に、保存されている各リファレンスからk個の単語n-gramがランダムに選択されます。ここで、kは[1, Nphrases]から一様に選ばれ、nは[1, Norder]から一様に選ばれます。Pkeep, Nphrases, Norderは学習プロセスのハイパーパラメータです。
例えば、Pkeep = 1.0, Nphrases = 1, Norder = 1 と設定すると、各参照トランスクリプトから1つのユニグラムが選択されます。その他の選択については、実験のセクションで説明します。
セットzが(ランダムに)選択されると,zと各参照転写物rとの交点を計算していきます.一致するものが見つかるたびに、特別な</bias>記号が一致の後に挿入されます。例えば、参照トランスクリプトがplay a song.で、マッチするバイアスフレーズがplayの場合、ターゲットシーケンスはplay</bias> a songに変更されます。</bias>の目的は、正しいバイアス・フレーズを考慮することによってのみ修正可能な学習エラーを導入することです[18]。言い換えれば、</bias>を予測するためには、モデルは正しいバイアス・フレーズに注目しなければならず、その結果、バイアス・エンコーダーが学習中に更新を受け取ることができるようになります。
3.3. 推論
推論では,ユーザは音声特徴ベクトルのシーケンスxと,トレーニングでは見られなかった可能性のあるコンテキストシーケンスのセットzをシステムに渡します.バイアスエンコーダーを用いて,zをh zに埋め込みます.この埋め込みは,オーディオストリーミングが始まる前に行うことができます.次に,オーディオフレームxがオーディオエンコーダに入力され,デコーダは標準的なLASと同様に実行され,ビームサーチデコーディングを用いてN-ベスト仮説を生成する.
3.4. バイアス条件付け
何千ものフレーズがCLASに提示されると、意味のあるバイアス・コンテキスト・ベクトルを取り出すことは困難になる。なぜなら、それは多くの異なるバイアス・エンベッディングの加重和であり、トレーニングで見たコンテキスト・ベクトルとはかけ離れている可能性があるからだ。
BiasConditioningはこの問題を軽減しようとするものである。ここでは、推論の際に、モデルがバイアスフレーズのリストz = z1, ... , zN , およびp = p1, ... , pNというバイアスプレフィックスのリストの両方が推論時にモデルに与えられると仮定する。
この手法では,piが部分仮説y<t(ビーム上で部分的にデコードされた仮説)で検出された場合にのみ,ステップtでバイアスフレーズziが「有効」になる.実際には、次のように設定して、式7のバイアス-アテンション-プロバビリティを更新することで行う。
mit = ( 0 if pi ⊆y<t ∞ otherwise (10)
α z t = softmax(u z t - mt) (11)
ここで、⊆は文字列の包含である。バイアス接頭辞のリストは、任意に構築することができる。
例えば、the cat satというバイアスフレーズをthe catというバイアス接頭辞で条件付けしたい場合がある。この場合、cat sat の埋め込みを計算するが、y<t で猫が検出されたときにのみ埋め込みを有効にすることができる。接頭辞の適切な選択は、同じ接頭辞を共有するフレーズの数を最小限にすることで、偏った注意を「過負荷」にしないようにすると同時に、各フレーズをあまりにも多くのセグメントに分割しないようにすることで、特徴的な偏った埋め込みを可能にする。これは、空の接頭辞(pi = )から始めて、同じ接頭辞が多くのフレーズで共有されない限り、各接頭辞を(ziから)1語ずつ反復的に拡張するアルゴリズムによって達成される。セクション5.3.3では、ルールに基づいた接頭辞の構築について述べるが、アルゴリズムの詳細については今後の課題とする。
Experiment
4.1. 実験セットアップ
実験対象は書記素に限られており、モデルの構成も小さい。本実験では、約25,000時間分のトレーニングセット(3,300万の英語音声)を用いている。このデータセットは、Googleの音声検索トラフィックを代表するものであり、匿名化された手書きのものである。このデータセットに、ルームシミュレーターを用いて人為的にクリーンな発話を加え、様々な程度のノイズと残響を加えることで、全体のSNRが0dBから30dB、平均SNRが12dBになるようにしています。雑音源は,YouTubeや日常生活での雑音環境の記録を使用しています.本節で評価するモデルは,グローバルバッチサイズが4,096の8×8 Tensor Processing Units(TPU)スライスで学習される.各学習コアは,各学習ステップにおいて,シャードサイズの32ユートレンスで動作する.このシャードからバイアスフレーズがランダムに抽出されるため,各シャードが学習中に目にするバイアスフレーズは最大で32個となる.また,25msのウィンドウで10msごとに計算された80次元のlog-mel音響特徴を使用しています.このダウンサンプリングにより,シンプルなエンコーダアーキテクチャを採用することができた.エンコーダのアーキテクチャは、256のノードを持つ10の一方向性LSTM層で構成されています。エンコーダのアテンションは,4つのアテンションヘッドを使って512次元にわたって計算される.バイアス・エンコーダーは,512個のノードを持つ1つのLSTM層で構成され,バイアス・アテンションは512次元にわたって計算されます.最後に,デコーダは256ノードの4つのLSTM層で構成されています.合計で約5,800万個の学習可能なパラメータを持ったモデルとなります。このモデルは,TensorFlowを用いて実装されています.すべての実験において,「バイアスなし」の場合の堅牢性を高めるために,Pkeep = 0.5 を設定した.また,Nphrases = 1 と Norder = 4 を設定した.これにより、予想されるサイズが17(シャードサイズの半分、「バイアスなし」の場合は1)のバイアスリストが得られる。
4.2. テストセット
我々のモデルをいくつかのテストセットでテストしました。それぞれのテストセットのバイアス設定の概要を表1に示します。
音声検索のテストセットには,約3秒の音声検索クエリが含まれています.Dictationテストセットは、テキストメッセージのディクテーションなど、より長い発話を含んでいます。
Voice Search」と「Dictation」のテストセットは,トレーニングデータの一部にマッチした状態であり,偏りをテストするのではなく,偏りのない状態でのモデルのパフォーマンスをテストするために使用されています.
残りのテストセットは、それぞれ Songs、Contacts、Talk-Toの各テストセットには、4つのフレーズから3,000以上のフレーズまで様々な文脈上のフレーズのリストが含まれており、それぞれの発話は必ずしも同一ではありません。
Songs、Contacts、Talk-Toのテストセットは、TTS(Text-to-Speech)エンジンを使って人工的に生成されています。TTSエンジンにはParallel WaveNetを使用し,生成されたサンプルには学習データと同様にノイズが混入されています.Songsテストセットには,音楽の再生リクエスト(例:play rihanna music)が含まれており,アメリカで人気のある曲やアーティスト名を含むバイアスセットが設定されています.Contacts テストセットには,通話要求(例:call demetri mobile)が含まれており,任意の連絡先のリストを含むバイアスセットが設定されています.Talk-Toテストセットには、多くのチャットボットのうちの1つと会話するリクエストが含まれている(例:talk to trivia game)。利用可能なチャットボットのリストは、以前のセットと比べてかなり大きいことに注意してください。詳細は表1を参照。
![PDF] Deep Context: End-to-end Contextual Speech Recognition | Semantic Scholar](https://d3i71xaburhd42.cloudfront.net/8829ed626a278c2eba686ff973496f7c0825a2e8/5-Table1-1.png)
Result
このセクションでは、さまざまなテストセットにおけるCLASのパフォーマンスを紹介します。
5.1. バイアスフレーズのないCLAS
まず、バイアスフレーズが存在しない場合に、我々のバイアスコンポーネントがデコーディングを傷つけるかどうかを確認するために、我々のモデルを表2の同様の「バニラ」LASシステムと比較する。
CLASのモデルはランダムなバイアスフレーズで学習されていますが、推論時にはフレーズの空リストで評価されていることに注意してください(つまり、推論時には「no-bias」のみが提示されます)。驚くべきことに、CLAS-NBはLASよりも優れた結果を示し、バイアスのかかっていないフレーズがあってもCLASは使えると結論づけた。
そこで、この後の実験では、正確な比較を行うために、LASと直接比較するのではなく、CLAS-NBをLASのベースラインの代理として使用することにした。
![PDF] Deep Context: End-to-end Contextual Speech Recognition | Semantic Scholar](https://d3i71xaburhd42.cloudfront.net/8829ed626a278c2eba686ff973496f7c0825a2e8/5-Table2-1.png)
5.2. LASベースラインを用いたOTF(On-the-fly)再スコアリング
表3では、異なるOTFリスコアリングを比較しています。これらは、セクション2.2で説明したように、サブワードユニットに重みを割り当てる方法が異なります。他のテストセットでも同様の傾向が見られましたが、簡潔にするために省略しています。
表を見ると,[22]で行ったように単語の最後にバイアスをかけると,バイアスなしのベースラインに比べてほとんど改善されないことがわかります.各単語の先頭にバイアスをかけることでわずかな改善が得られますが[12]、最良のシステムは各サブワード単位でバイアスをかけることで、単語をビーム上に維持することができます。
このようにして、OTFの再スコアリングに関する以降のすべての実験は、各サブワードユニットにバイアスをかけることになります。

5.3. CLAS with bias phrases
5.3.1. Comparison of Biasing Approaches
CLASと2つのベースラインアプローチを表4で比較する。
(1)セクション5.1で説明したCLAS-NBを用いたLASベースライン、
(2)セクション2.2で説明したLAS OTF rescoring、同じテストセットでλを推定したもの。
その結果、何百ものバイアスのかかったフレーズがあり、OOVの割合が高いテストセット(Songs, Contacts)では、CLASは従来のアプローチに比べて、ハイパーパラメータの調整を必要とせずに大幅に性能が向上することがわかった。
しかし、何千ものフレーズがあるTalk-Toセットでは、CLASの性能は低下します。このスケーラビリティの問題は、バイアスコンディショニングによって解決されます(セクション5.3.3参照)。

5.3.2. バイアスフレーズの数を変化させた場合のCLAS
Talk-ToでのCLASの失敗をよりよく理解するために、参照原稿に現れるフレーズと、バイアスリストからランダムに選ばれたN個のディストラクタ(原稿に存在しないフレーズ)に限定してCLASを評価した。その結果を図4に示します。ディストラクタの数に応じて、WERが徐々に低下していくことがわかる。
このような挙動を示す理由は、バイアスフレーズの数が多いと、それらのエンベッディング間に相関関係が現れ始めるからではないかと考えています。例えば、talking palとtalkative aiの埋め込みは0.6の相関(正規化内積)がありますが、平均的な相関は0.2です。
5.3.3. スケーリング問題の克服: CLAS with Biasconditioning (Cond) and OTF rescoring
次に、CLASとバイアス・コンディショニング(セクション3.4)を組み合わせてみる。Talk-toには最も多くのバイアスフレーズがあるので、このセットのみにバイアスコンディショニングを適用し、ルールベースでプレフィックスを作成して、CLASのスケーラビリティをテストする。まず、talkから次の単語までの接頭辞を作成します(例えば、talk to pharmacy flashcardsというフレーズは、接頭辞pi = talk to pharmacyと接尾辞zi = flashcardsに分割されます)。さらに、talk toの後の最初の単語をその最初の文字で条件付けすることも有用であると考えました(例: pharmacyはtalk to pで条件付けされます)。このようにして、同じ接頭辞を持つフレーズの数を225(対3255)に制限する一方で、バイアスフレーズのセグメント数は10%しか増加しませんでした。
表5では、バイアス条件付けとOTF rescoring(セクション2.2)によるCLASの結果を示しています。CLASは、どちらのアプローチからも、またその組み合わせからもメリットがあります。実際、コンディショニングを行うことで、多数のフレーズにも劣化することなく対応することができました。
![PDF] Deep Context: End-to-end Contextual Speech Recognition | Semantic Scholar](https://d3i71xaburhd42.cloudfront.net/8829ed626a278c2eba686ff973496f7c0825a2e8/6-Table5-1.png)
Conclusion
本研究では、CLASを発表しました。CLASは、全ニューラルでエンドツーエンドのコンテキスト化されたASRモデルであり、フルコンテキストフレーズを埋め込むことでコンテキスト情報を組み込んでいます。実験的評価では、いくつかのテストセットにおいて、提案モデルが標準的な浅い融合バイアス技術よりも優れていることを実証した。さらに、CLASの大規模な文脈フレーズを扱う能力を調査し、CLASの品質をさらに向上させるための条件付け方法を提案した。今後の課題としては、CLASを数万のバイアスフレーズに拡張することである。
【論文紹介】Graph-PIT: Generalized permutation invariant training for continuous separation of arbitrary numbers of speakers
本記事では、話者数を事前に決定することが難しい連続音声分離において、従来のuPITの制約を大きく緩和することのできるGraph-PITという手法を提案した論文を紹介する。
概要
会議の自動採録には,オーバーラップした音声を処理する必要があり,連続音声分離(CSS)システムが求められている。
ニューラルネットワークによる音源分離のために提案されたuPITでは、話者の総数が出力チャンネル数を超えてはならないという制約がある。
本論文では、出力チャンネルへの発話の割り当てを、グラフ着色問題に置き換える手法を提案する。
このシステムは任意の数の話者と任意の長さのセグメントを処理することができ、より多様なシナリオに対応できるようになった。
会議形式のWSJデータを用いた実験では、uPIT基準を用いた場合よりも認識性能が向上した。
Introduction
会議は任意の長さ、任意の数の話者を含むことができるため、連続音声分離(CSS)、すなわち、任意の長さの音声ストリームを処理することが必要となる。
CSSは、入力をセグメント化し、そのセグメントを独立して処理することで実現できる。隣接するセグメントは,類似性尺度を用いて整列され,いわゆるスティッチング処理が行われる.
会議に参加する話者の総数Kはもっと多いかもしれないが,ソースセパレータの出力チャンネル数は,例えばN=2に固定できることが示された.これは、十分に小さいセグメントを選択すれば、通常はKに関係なく、その短いセグメントに登場する話者の数はNと同等かそれ以下になると考えられるからである。
逆に言えば、UPITという制約がセグメントサイズを実質的に制限していることになる。CHiME-5[14]の評価データセットでは、2.4秒という比較的短いセグメントサイズの例でも、22%以上のセグメントに2人以上の話者が含まれている。さらに、会議全体に適用したり、訓練したりすると、UPITの制約を満たすことができない。
本論文では,上記の制約を緩和したuPITの一般化(K ≤ N)を提案する.この一般化は,異なる話者が重ならない限り,同じ出力チャネルに配置することができるという考えを取り入れることで達成される.我々は、発話を出力チャンネルに割り当てる問題を、グラフ着色問題として再定式化し、Graph-based Permutation Invariant Training (GraphPIT)と名付けた。
GraphPITでは、同時発話者の数が出力チャンネルの数を超えないようにすればよい。CHiME-5の評価データセットを見ると、N = 2の場合にこの制約が破られたのは、uPITの制約が22%であったのに対し、9%にとどまっている。
スティッチングベースのCSSシナリオでは、提案されたGraphPITは、一度にN人以上の話者が話さない限り、任意の長さのセグメントと、セグメント内の任意の数の話者を可能にするものである。さらに、セグメンテーションやスティッチングを伴わない一般的なCSSシナリオでは、Graph-PITは理論的に、あらゆる文脈情報を利用できるセパレータで会議全体をモデル化することができる。
Graph-based meeting-level PIT
対象となる発話を出力チャンネルにマッピングすることで,重なり合った発話を分離することができる.このようなマッピングを見つけることは,グラフの彩色問題と同等である.
各発話を頂点としてモデル化し,重なり合う発話の間にエッジを描く場合,このグラフのすべての適切なN-頂点彩色のセットは,発話から出力チャンネルへのマッピングのセットと等しい.N-vertexcoloringは,各頂点にN個の色の集合から色を割り当て,連結された頂点が異なる色になるようにするものである.
図では,ある話者の活動パターンを想定して,グラフGとターゲット発話の出力チャンネルへの可能なマッピング,すなわちカラーリングの例を描いている.
Graph-PITは、話者が2人だけの連結グラフであれば、uPITと等価である(図(a))。
グラフが複数の連結成分で構成されている場合(K≦Nと仮定)、uPITは1人の話者の発話をすべて同じ出力チャネルに配置するので、モデルはグローバルな情報を利用するように強制される。
Graph-PITでは、個々の連結成分が別々に扱われるため、配置の自由度が高い。1つの連結成分にN人以上の話者がいる場合、Graph-PITは割り当て問題の解を提供できるが、uPITはできない。

Experiment
下の表は、約120秒の長さのミーティングでの評価結果を示している。提案手法はWER、SDRともに、uPITよりも性能が高かった。

The effect of stitching
下の図は、stitchingの影響を示している。横軸がセグメントの時間、縦軸にWERとセグメントに含まれる話者数の割合を示している。
uPITでは、セグメント時間が長くなるほど含まれる話者数は多くなり、WERも大きくなるが、Graph-PITでは、WERの劣化が抑えられている。
すなわち、セグメント時間を長く取ることができる。

Conclusion
本論文では,長い録音のCSSスタイル処理のためのuPITの一般化であるGraph-PITを提案した。
GraphPITでは,1つのセグメントに含まれる話者の数が出力チャネルの数よりも少ないという制約を,同時発話者の数が出力チャネルの数よりも少ないという制約に緩和している.
これにより、より多様な会議の処理や、より大きなセグメントの使用が可能になると同時に、スティッチングによる計算オーバーヘッドを削減することができる。
また、Graph-PITの目的を利用して、スティッチングを全く必要としない分離ネットワークを構築できることを示した。