「ディープラーニングを用いて通話時のノイズを抑える」という試みにNVIDIAが挑戦している
by bruce mars
通話時のノイズキャンセリングは電話や通話アプリなどで快適な会話を行うために必要不可欠ですが、必ずしも常に完璧にノイズをシャットアウトしてくれるとは限りません。アメリカの大手半導体メーカーであるNVIDIAは、「ディープラーニングを用いて実用的なノイズキャンセリング機能を構築する」としてさまざまな取り組みを行っています。
AI Powered Speech Enhancement | 2hz
https://2hz.ai/?utm_source=Nvidia%20blog
Real-Time Noise Suppression Using Deep Learning | NVIDIA Developer Blog
https://devblogs.nvidia.com/nvidia-real-time-noise-suppression-deep-learning/
私たちの日常は多くの騒音に包まれており、町中や空港で電話をかけるとたくさんのノイズも通話相手に聞こえてしまい、通話相手の近くで鳴っているノイズもこちら側に聞こえてきます。そんな通話時のノイズを軽減するためにNVIDIAは機械学習を用いることに決め、2年間にわたって多くの試行錯誤を続けてきたとのこと。
2Hzと名付けられた、ディープラーニングによって構築されたノイズキャンセリングシステムのデモンストレーションを行ったムービーが以下。
2Hz demo
まずは環境音が耳障りなほど聞こえる環境で言葉を録音します。
録音された音声にはノイズが入り、かなり聞き取りにくい状態です。
ここで2Hzによるノイズキャンセリングを行うと……
音声が非常にクリアに聞き取れ、背後のノイズは全くと言っていいほど聞こえなくなりました。
続いて警察のパトカーが鳴らすサイレンの音と共に録音された音声を、2Hzシステムを通さずに再生すると……
サイレンの音が非常に大きな音で聞こえ、言葉を聞くためには耳をそばだてなければなりません。
しかし、2Hzシステムを使ってノイズキャンセリングすると……
驚くほどクリアに人間の言葉だけが聞こえるようになり、サイレンが背後で鳴っているということすらわからなくなりました。
NVIDIAはこのようにかなり高い水準のノイズキャンセリング機能を実現していることがわかりますが、ノイズを抑制するシステムの構築は非常に困難な道のりだったとのこと。
まず、NVIDIAが構築したノイズキャンセリング機能とは、下の図のように電話をかけている双方の背後に聞こえるノイズを、相手側に送信する時に抑えるというもの。これと対照的なのがイヤホンなどに搭載されているアクティブノイズキャンセリング(ANC)機能。ANCでは自分の背後で鳴っている騒音をイヤホンやヘッドフォンが感知し、自分の耳に届かないようにシャットアウトします。NVIDIAはあくまでも通話相手に聞こえるノイズを抑える機能に焦点を当てています。
通話時のノイズを抑制する機構は近年でもかなりの進歩を遂げており、10年前の携帯電話等と比較すると格段に通話時のノイズが少なくなっています。近年のスマートフォンには以下の画像で黄色に示された2つのマイク、もしくはさらにそれ以上のマイクが実装されているとのこと。
一つはユーザーが通話する時に口から発された声がよく届く部分、それ以外のマイクは口元のマイクからできるだけ離れた、背面などの環境音がよく届く部分に設置されるのが一般的。口元のマイクが声を主に拾う一方で背面のマイクが環境音を拾い、デバイス内部のソフトウェアが音声から周囲の環境音を打ち消してクリーンな音を生み出すという仕組みでノイズキャンセリングを行っています。
しかし、この技術には「スマートウォッチや小さなマイクといった2つ以上のマイクが離れた場所に設置できないデバイスや、ユーザーとデバイスの位置が離れていたり揺れ動いていたりするとうまく働かない」という欠点があります。また、マイクを複数搭載する面で製造面のコストもかかります。そこでNVIDIAは複数マイクではなく、単一のマイクでノイズキャンセリングを実装できる仕組みを作り出すことにしました。
音声の背景に聞こえるノイズだけを除去するノイズキャンセリングでは、デジタル信号処理(DSP)アルゴリズムが多く使用されています。このDSPアルゴリズムは連続した定常的な騒音をカットする際はうまく動作しますが、赤ちゃんの泣き声やサイレンの音といった短く素早い騒音にはうまく対処できません。2Hzでは、従来のノイズキャンセリングが働きにくかった騒音についても対処するため、ディープラーニングを用いることにしたとのこと。
ディープラーニングを用いたノイズキャンセリングシステムの構築法は、ノイズ音とクリーンな音声という2種類の音声データを用意し、それらを混ぜ合わせた「ノイズの入った音声」を作り出します。そしてクリーンな音声データと人工的なノイズ入り音声データをディープニューラルネットワーク(DNN)に入力し、入力されたノイズ入り音声データからクリーンな音声データを出力するように訓練します。そしてクリーンな音声データを抽出できるマスクを作成するというものが、ディープラーニングを用いたノイズキャンセリングシステム作成方法です。2Hzプロジェクトでは独自のDNNアーキテクチャを開発し、さまざまなノイズに対処できるマスクを作り出すことができました。
また、音声通話にノイズキャンセルを使用する際に問題となるのが、音声の遅延です。人はリアルタイムの会話を行う時に0.2秒までの遅延には耐えられますが、遅延がそれ以上になるとお互いに発話するタイミングがかぶってしまい、スムーズな会話ができなくなってしまいます。回線・コンピューター・コーディングといった3要素が通話の遅延に影響し、通常は最も大きく遅延に影響を与えるのは回線の状況だとのこと。しかし、DNNを使用したノイズキャンセリングを用いることで、実際の通話に支障が出るほどの計算待ち時間が発生する可能性は否定できません。
高品質なノイズキャンセリング通話をサポートするためには、処理を行うコンピューターの性能を上げる必要があります。しかし、通話に使用するスマートフォンなどのデバイスに対し、ノイズキャンセリングのためにハイスペックなコンピューターを搭載することは現実的ではありません。そこで、NVIDIAはノイズキャンセリング機構をクラウド化するという発想にたどり着きました。ノイズキャンセリングのシステムはソフトウェアベースのため、必ずしもローカルのデバイス自体に搭載している必要はないとのこと。
巨大なVoIPプロバイダは大量の通話を同時に処理する必要があります。あるVoIPプロバイダでは、1つのベアメタルメディアサーバーによってG.711という音声符号を用いた通話を同時に3000件も処理しているとのこと。ノイズキャンセリングをVoIPでの通話システムに組み込む場合、サーバー側での処理が遅くなって処理が重くなってしまうとサービスの品質に悪影響が出るため、ユーザーはノイズキャンセリングを使用したがりません。
まず、2HzはCPUを用いて処理を行おうとしましたが、費用対効果の高い結果は得られませんでした。そこでGPUの「GTX1080 Ti」を用いてノイズキャンセリング込みのVoIP処理を実験したところ、サーバーの最適化なしで1000もの通話を同時に処理できた上、最適化を行えば3000もの同時通話に対応できることがわかりました。音声の送信やコーディングといった基本的な処理はCPUが行い、GPUはそれに対してノイズキャンセリングのバッチ処理を専門に行い、標準のVoIP処理に影響を与えずにノイズを抑制できるとのこと。
GPUは3Dグラフィックス処理の必要性から大規模な並列処理を得意としており、ディープラーニングによるバッチ処理はGPUが得意とする分野に属しているそうです。そのため、NVIDIAはディープラーニングを用いたノイズキャンセリングのバッチ処理にはGPUが適していると述べました。
・関連記事
深層学習を用いて歌からボーカルや楽器だけを抽出する技術が開発される - GIGAZINE
ザトウクジラの生態把握のためAIでクジラの「声」を聴くGoogleの取り組みが進行中 - GIGAZINE
Microsoftの研究者が「声を出さずに音声入力可能」なシステムを開発 - GIGAZINE
ヒーリング音で雑音を防ぐ安眠専用の超軽量ワイヤレスイヤホン「BOSE NOISE-MASKING SLEEPBUDS」レビュー - GIGAZINE
「耳鳴り軽減」や「集中力アップ」に効果があるといわれるホワイトノイズは聞き続けると脳に悪影響が出る可能性あり - GIGAZINE
・関連コンテンツ