概要

Discord の音声入力がライン出力をするマイクアンプやオーディオインターフェースの “相性” のせいで実用に堪えないときは,図1 にあるようなボルテージフォロアをマイクアンプの出力とコンピュータのライン入力の間に追加すると,解決するかもしれない.

背景

コンピュータに通話のための音声を入力するために,ダイナミックマイクを使用している.ダイナミックマイクの出力はそれ単体だと著しく小さいので,マイクアンプを用いてラインレベルに増幅した出力をコンピュータのライン入力に接続している.

これまでマイクアンプは自作のものを使用していたが,ノイズが音声に乗ったり,ゲインが突然変化したり (はんだ不良で負帰還の抵抗の接触が悪い?) することがあったので,今回ヤフオクで既製品 TOA MIXER AMPLIFIER MX-113 を購入しそれに置き換えることにした.

既製品のマイクアンプを使用すると,故障等はなかったようで,Windows コントロールパネルの「サウンド」から「このデバイスを聴く」を用いて自分の声が実用的なレベルで返ってくるのを確認した.また,zoomとSkypeの音声テストでも動作を確認した.

Discord のマイクテストから返ってくる自分の音声が著しく小さい

しかし,Discord のマイクテストを行うと,入力した音声が返ってこない問題を確認する.マイクアンプのゲインを最大にすると,話し始めに「プツッ」という音がし,その中になんとなく自分の声が入っているような気もするが,気のせいかもしれないと思うくらい音量が小さい.前述のことから,コンピュータに音声は入っていると思われるので,原因は Discord にあると考えた.入力デバイスや出力デバイスを確認し,それらの音量設定も調節するも問題は発生する.Discord には入力音声を調整するための「ノイズ除去」「ノイズ低減」「エコー除去」などのフィルタを適用できるが,これらを無効にしても同様の問題が起こる.

1, 2 によれば,discord のマイクテストには不具合あり,実際の通話時には正常であることがあるらしいので,適当なサーバのボイスチャンネルに入室し,発声してみた.当時確認できる第三者がいなかったので,自分が発話していることを示すアイコンの周りの緑の発光のみが判断材料ではあるが,それによれば音声は送信されていないようだった.

この段階で,もとのマイクアンプに戻すと問題は発生しない.

Discord に問い合わせた

上記の結果から,問題は Discord にあると思われた.3 や,67 に従って,「オーディオのサブシステム」の設定,β版バージョンの試用などを試したが,解決しなかったため,Discord のカスタマーサポートに問い合わせた.結果,Discord はすべてのオーディオアンプの出力はサポートしていないという返答が返ってきた.実際,他の人にも同じような返答が返ってきているようだ (45).

Discord による音声フィルタが,何を設定しても切れないという仮説

たしかに,5 で使われようとしている FOCUSRITE Scarlett 2i2 というオーディオインターフェースは USB 経由でコンピュータに接続できるようで,そんな状況ならそういうこともあるだろう (問題が起こりうるのはOSの仕事な気はするが).しかし,私が使っているマイクアンプはライン出力で,コンピュータのライン入力端子にそのまま入力している.ライン入力には音声信号を示す電圧波形がそのまま入力するはずで,これに一体何をすればこのような問題が発生するのだろうか.あるいは,この入力をそのまま送信すればいいはずである.

従って,何らかの理由で,Discord の音声フィルタが誤動作していると考えた.例えば,このマイクアンプを使用すると重畳されてしまう特別な特徴が,アプリに全信号をフィルタさせてしまうのではないだろうか.そしてそのフィルタは,Discord の設定「ノイズ除去」などを無効にしても切れないのではないだろうか.

波形を歪ませてみる

Discord の音声フィルタが作用するような特徴を排除し,かつ音質に影響が限りなくないよう出力を歪ませてみることにした.ただし,それがどんな特徴かはわからないため,とりあえず簡単に済ますためボルテージフォロアを噛ませてみることにした.ボルテージフォロアは理論上,入出力に差ができないが,オペアンプの周波数特性や寄生容量などによって何かしら変わることを予想しての措置である.

1 と図2 は,それぞれ設計したボルテージフォロアと実装した回路である.入力は 9V DC ジャックで,スイッチングACアダプタから入力し,それより GND 用の中間電位を生成し,そしてその電位を基準に信号を入出力する.信号はボルテージフォロアを通って出力される.回路の要素はすべてボルテージフォロアだ.

micamp buffer schematic 1. 設計したボルテージフォロアの回路図
micamp buffer schematic 2. 制作したボルテージフォロアの外形

これをマイクアンプとコンピュータのライン入力に挟んだ.オシロスコープでそのバッファの入出力を比較すると,目視の限りでは違いは無いようであった.この結果,問題は発生しなくなった.アプリの「ノイズ除去」を有効にしても問題はなかった.もちろん,Discord 以外のアプリケーションでも正常に入力音声を使用できた.

考察

さて,この問題の原因は一体何だったのだろうか.

バグ説

まず考えられるのは,Discord アプリが音声フィルタをスイッチできないというバグと,Discord の音声フィルタがある特殊な特徴を持つ波形に対して出力を著しく絞ってしまうというバグが同時に存在することだろう.しかし,前者はともかく,後者はどのような機能を持たせようとすればそのようなバグが発生するのか疑問が残る.例えば,FIRフィルタのようなプリミティブな機能を実装しようとしても,このような問題を起こすバグが紛れ込む理由は無い.End to end なニューラルネットワークによるフィルタを採用しているとすれば,レアな過学習が発生しているかもしれない.

Discord アプリが音声フィルタをスイッチできないというバグの可能性を考えてみよう.これはかなり基本的なバグで,発見されたらすぐに修正されそうなものである.実際,12 の報告はマイクテストにおいてフィルタが切れていないことが原因であると考えられる.しかしこれらが発生したであろう時期からすでに数ヶ月ほど経っているが,未だに修正されていない.もしかすると,フィルタを切れない理由があるのかもしれない.たとえば,discord は opus というオーディオコーデックを採用しているようだ.これの主目的は信号の圧縮による帯域幅の節約やレイテンシの改善だろうが,その副作用 (たとえば, MP3 では聴覚閾値を超えない信号をフィルタするように,非可逆圧縮によるオーディオ圧縮はもとの音声信号を保持しない) かあるいはバグで今回のような問題が起こるのかもしれない.あるいは,Discord がリアルタイム言論統制をしたくて何かしらのフィルタを常時有効にしているのかも.

ライン入力が実は結構特殊説

特定のマザーボードチップセット X570 と相性が悪いという報告があるようだ (1).私もこのマザーボードを使用している.チップセットによる規格がどこまでをカバーしているのかわからないが,私のマザーボードはフォーンプラグ入力の役割 (入出力や,ラインレベル,マイクレベルなど) を変更できるようだ.コンデンサマイクのためのプラグインパワーの切り替えなどをやる必要があるが,これの複雑さのため,ドライバがサポートできず,アプリはライン入力を読みたいだけでもADCの出力を読み取るだけでは済まなくなっているのかもしれない.これによって,“対応” できなくなっているのかもしれない.あるいは,従って入力インピーダンスがアプリに依存したりするのだろうか (そんなことある?).

References

  1. 1. あすきん: (追記結局なし)Discordのマイクテストで声が途切れロボットのように歪んで聞こえても実際のボイスチャンネルには正常に伝わっている, https://abs.hantasy.com/2021/06/discord.html, 2021-06-17
  2. 2. discordのマイクテストで「あー」などの長い声を出すと、途切れてしまいます… - Yahoo!知恵袋 1.ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14247924589
  3. 3. Discordの音声とビデオのトラブルシューティング – Discord https://support.discord.com/hc/ja/articles/360045138471
  4. 4. 【Discord】Discordとオーディオインターフェースは相性が悪い?→問い合わせてみた結果 - ymLogs https://ymlogs.hateblo.jp/entry/DiscordAIF
  5. 5. Discordにオーディオインターフェースを対応させたい – Discord https://support.discord.com/hc/en-us/community/posts/4404501306135-Discord%E3%81%AB%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%82%92%E5%AF%BE%E5%BF%9C%E3%81%95%E3%81%9B%E3%81%9F%E3%81%84
  6. 6.【MacOS】discordとオーディオインターフェースの相性が悪いので色々調整しました。 | KANOE STUDIO https://kanoe.studio/archives/529
  7. 7.Focusrite Scarlett 2i2 (Gen3) で Discordの音声がおかしい時にすること|みのむし|note https://note.com/minomushi_san/n/n8db019c3a09d