高橋忍のにゃんともWindows
GPUを使ったノイズキャンセリングがすごかった(5月12日追記)
2020年5月8日 06:55
さて、テレワークが浸透してきた今ですが、やってみると色々問題が出てきます。とくに会議中ににゃんこが登場するとみんなの視線がそっちに集まってしまってなどなど。にゃんこはいいとしてもう一つ大きな問題が生活音やノイズです。
音の問題
じつはオンライン会議などで重要なのは映像よりも音声です。実際に映像がなくても会議はできますが、音声が途切れてしまったら会議どころでは有りません。そしてテレワークにおける音声の問題の一つがいろいろな音が入ってしまうという点。
家族がテレビをつけていればその音が入ってしまいます。宅急便が来れば呼び鈴の音が、家族が掃除をすれば掃除機の音。などなど、マイクの品質を上げて良いものにしたら逆にいろんな音を拾うようになってしまったなんてこともあります。
映像の方は最近は「Zoom」や「Microsoft Teams」の機能として自動的に人物を検出して背景をぼかすといった機能が実装されました。“映像のノイズ”を消す技術がどんどん進んでいます。一方、音声の方はなかなかそういった技術が登場してませんでした。が、突然ぶっちぎりの高性能音声ノイズキャンセルのソリューションが出てきました。それが『NVIDIA RTX Voice』です。
NVIDIA RTX Voice
NVIDIA RTX VoiceはGPUメーカーであるNVIDIAがリリースしたソフトウェアです。マイクからの音声をAIを使って話者の声以外を消してくれるソフトです。
ノイズが消えた音声はNVIDIA RTX Voiceの仮想マイク入力として出力されます。Windows 10上ではあくまで普通のマイクですので、Windows 10上の様々なアプリで利用することができます。
試してみるとわかりますが、びっくりするくらいのノイズキャンセリングぶりです。ノートPCで音楽をかけながら、キーボードで入力をする。このときのノイズがどのくらいひどいかやったことがある人は知っているでしょう。人が聞こえるBGMはしっかりマイクにも乗りますし、打鍵音は爆音となってマイクに拾われます。打鍵音問題は非常に大きな問題です。しかしNVIDIA RTX Voiceを通すと、音楽も打鍵音もほぼ完璧に聞こえなくなります。マイクの前で拍手をしてもほぼ無音です。
もう完璧の一言に尽きるこのNVIDIA RTX Voiceですが、残念ながら全てのPCで使えるわけでは有りません。これはNVIDIAのGPUがなければ使えない機能です。このノイズ除去のAI部分の処理をGPUを使って処理をしているからです。
セットアップの注意
NVIDIA RTX Voiceを使用するには、NVIDIAの GeForce RTXかQuadro RTXシリーズを搭載したビデオカードが必要とあります。しかしサポート外になると思いますが、実はGeForceの1000番台でも動作することは確認できています。
セットアップは、インストールとマイクの指定だけです。
- アプリをダウンロードしてインストール
- 起動したら、入力用のマイクを設定してノイズキャンセリング機能にチェックを入れる
Outputデバイスの指定もありますが、ここを指定しなくても、NVIDIA RTX Voiceという仮想マイクが追加されていて、ここから出力されるので特に指定は不要です。
ただし、Outputの設定は「Zoom」や「Microsoft Teams」のときには重要になるかもしれません。というのは相手からの音声に含まれるノイズについても、Output側でフィルターを掛けて消すことができるからです。
オンラインミーティングでの打鍵音や生活音は、音を発している本人は気が付きません。そしてそういったノイズを消すことは難しい事は理解してます。なので結局、誰も指摘しないことがほとんどなのです。こんなときもOutput側の処理により相手からのノイズも消すことができるのです。
実際にテストしてみました。
テスト環境ではBGMを流して、またマイクの近くでキーボードの打鍵音を発生させます。
NVIDIA RTX Voiceを使うと日本語の歌詞がついたBGMもほぼ消えています。打鍵音は若干残りますが、ノートPCの主に直接振動から発生する打鍵音はほぼ聞こえなくなります。
トラブル対応
さて、セットアップも簡単にできるNVIDIA RTX Voiceですが、いくつか問題も出ています。ここでは2つのケースに対して対応方法を紹介します。
ケース1:インストールできない
まず、RTXシリーズのGPUがない場合、エラーが出てインストールができません。その場合はインストーラーを修正することで対応できます。
まずはエラーが起きた画面を閉じます。そして、エクスプローラーでCドライブ直下の “Temp”フォルダーを開きます。まずはこのフォルダーを修正できるように権限を設定します。
- “NVRTXVoice”フォルダーがあるのを確認します
- フォルダーを右クリックしてプロパティを開きます。
- [セキュリティ]タブを選びます。
- [編集]ボタンを押します
- 新しいダイアログが表示されます
- “Everyone”がないときは、追加ボタンを押して“Everyone”を作ります
- “Everyone”を選択して、[フルコントロール]にチェックを入れます
- [OK]を押して全てのダイアログを閉じます
これで、中身を編集できるようになったので、今度はインストーラーの設定ファイルを修正します。この設定ファイルは、“NVRTXVoice”フォルダー内の“NvAFX”フォルダーにある、ファイル“RTXVoice.nvi”です。
- “NVRTXVoice”フォルダーを開きます
- さらに“NvAFX”フォルダーを開きます。
- 「メモ帳」を起動します
- “NvAFX”フォルダーにある、ファイル“RTXVoice.nvi”をメモ帳にドロップします
- 中身を見て、この中の“<constraints>”~“<⁄constraints>”の3行を削除します。
削除したら、[Ctrl]+[S]キーを押すか、ファイルメニューから[上書き保存]を選んで保存します。ただし、そのまま保存ができないことがあるかもしれません。その場合は
- いったん別の場所に保存して
- 拡張子に“txt”がついていたら削除して
- 元のフォルダーに上書きコピー
しましょう。
あとはフォルダを1つ戻ったところにある“Setup.exe”を実行すればインストールができるはずです。
ケース2:実行できない
色々なケースがあるので、この方法が聞くとは限りませんが、私がハマったケースが有ったのでご紹介します。
というのは、初めはちゃんと使えていたのですが、ある時からエラーメッセージが出てNvidia RTX Voiceが起動できなくなってしまいました。そのときにこういう“Initialization failed”(初期化失敗)のエラーメッセージが出て終了してしまいました。
同様のケースは海外でも起きていることがあるようで、フォーラム等でも一部話題に上がっていましたが、再インストールしたら直ったとか、再起動したら直った、以外で自分の環境が改善される方法は有りませんでした。
で、結論として私が解決することができたのでそのやり方をご紹介します。と言っても1箇所のレジストリを修正するだけです。尚レジストリをいじるので、以下の文章を読んで理解できる人だけやることをおすすめします。
「レジストリ エディター」を開いて、以下のキーを開きます。
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{887a5279-60ed-4488-a254-b6c1c36386ff}
5月12日追記
もし上記キーがなかったら、“¥Render”まで開いて[F3]か[Ctrl]+[F]キーを押して“NVidia RTX Voice”を検索してください。“Properties”欄で引っかかると思います。その一段上が該当するキーになります。
このキーは、RTX Voiceの仮想スピーカーで、ノイズキャンセリングをされた音声はこの仮想スピーカーを通じて流れます。この中に、このデバイスのStatusがありますが、本来は正常状態として“0x00000001”が設定されているはずですが、何故か“0x10000004”という値になっていました。これを“1”に修正します。
これでNvidia RTX Voice Speakerが直って起動できるようになりました。
5月12日追記
ケース3:実レジストリが見当たらない場合
ケース2と同じ原因ですが、基本的にNVidia RTX Voice Speakerが有効になっていない場合、コントロールパネルで有効にできそうです。
- 設定を開く([Windows]+[I]キー)
- [システム]画面を開く
- 左のメニューから[サウンド]を開く
- 右の[関連設定]から[サウンドコントロールパネル]を開く
- [サウンド]ダイアログで[再生]タブを選ぶ(多分選ばれている)
- デバイス一覧を右クリックして[無効なデバイスの表示]をチェックする
- NVidia RTX Voiceを起動する
- 一覧に“NVidia RTX Voice”の項目が現れるので右クリックして[有効化]を選ぶ
このプロセスで、起動するはずです。