再帰型ニューラルネットワークベースの音声区間検出が WebRTC に入った

再帰型ニューラルネットワーク(RNN) については一切理解していません。さらに音声区間検出(VAD)についてもどんなものかくらいしか理解していません。

理解していないだらけで申し訳ありませんが、自分のメモがてらに書いていきます。

まずはこのチケットです。RNN ベースの VAD を追加するというチケットです。そもそもなんだこれは、と。

これが一番最初のコミットです。4/19 に入りました。ここから AGC2 RNN-based VAD のコミットが始まります。

AGC2

AGC2 は Automatic Gain Controller 2 らしいです。ちなみに AGC2 の 2 はおそらく既存の AGC があってそれのアップデートバージョンということで定義されているんだと思います。たぶんですが。

“多くの電子機器で使われている適応システムである。ピーク信号レベルをフィードバックすることで利得が入力信号レベルに対して適切な範囲になるよう調整する”

Automatic Gain Controller とは自動利得制御らしく、出力する音量を一定に保つ仕組み … と理解しました。

VAD

VAD は Voice Activity Detection の略です。

日本語だと音声区間検出と翻訳されるようです。つまりマイクから入ってきた音が音声なのか非音声なのかを判断する仕組みです。

例えば、風の音は音声ではありませんが、音量でみれば一定音量が発生してしまいます。これは非音声だというフラグがたっていれば、音声ではないと判断できるようになります。

RNN

RNN は Recurrent Neural Network の略で日本語だと回帰結合型ニューラルネットワークになるようです。ディープラーニング系のなにからしいですが、ちょっとここは理解を諦めます … 。まぁなんか凄い便利なやつって認識にしておきます。

いつか読む。

AGC2 RNN-based VAD

これのベースは Mozilla Research の RNNoise プロジェクトのようです。

RRNoise プロジェクトは、ノイズ抑制に深い学習を適用する方法を示しています。これは古典的な信号処理とディープラーニングを組み合わせていますが、小型で高速です。高価なGPUは必要ありません。ラズベリーパイで簡単に実行できます

つまりノイズを抑制する仕組みをディープラーニングを利用して上手いことやったとようです。さらに小型で高速といいことしかなさそうです。

この RNNoise のノイズ抑制機能を利用して音声区間検出を実現した機能ということのようです。

これ、なにが嬉しいかという話ですが、自社製品のスポットライト機能でとても効いてきます。

自社製品のスポットライト機能は直近で音声を発した人だけの音声や映像を配信するという仕組みです。

ただこれには欠点があり、例えば会議をしていない人の誰かが遠くで椅子をひいいて「ガタ!」って音がしたら音量が一定値を超えてしまう可能性が高く、その人の音声や映像を配信してしまうことになります。

これを AGC2 RNN-based VAD を利用することで、椅子をひいた音は音声ではなくノイズと判断できるようになります。

これは期待しかありません。楽しみです。

googAutoGainControl2

ちなみに、このオプションを使うことで有効になるような気がしますので、実際に使ってみようと思います。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store