Amabie Labo

OBS で音ズレする際のトラブルシューティング

2022.05.14

こんびえ〜🧜‍♂️天日江護です🐳
今回は以前以下のような記事を上げたのですが、音ズレが発生するようになったのでその解決方法の共有記事です!

VTube Studio と Discord を使って共演 VTuber をぬるぬる動かす

背景

まずはどれくらい音ズレしているのかみてみてください。

かなりひどいですよね...
原因がわからなかったのが困りました😭

  • 配信中 Discord からは遅延なく聞こえている
  • 配信中ゲーム音は一致している
  • Discord のお相手の声だけ音ズレしている
もし同様の事象で困っている方にはこの記事は解決策の一つとなるかもしれません。
なお、この検証は OBS バージョン 27.2.4 (64-bit, windows) での検証結果です。

原因特定

結論から言うとデスクトップ音声が遅延していました🐢
上記を見る限り Discord 側の問題のような気もしますが

  • Switch の音声は映像キャプチャで別音源として出力していた
  • Discord の音声はデスクトップ音声として出力していた
  • 声はマイク音声として出力していた
  • 試しに同じ状況を再現して YouTube を流してみたら YouTube 音声も遅延していた
このことからデスクトップ音声が遅延していたことが判明しました。

そもそもデスクトップ音声なんて遅延しようがなさそうな気もしました。
むしろデスクトップ音声が遅延するほど CPU 負荷が高いなら他の音声も遅延したり配信自体ができなくなりそうだなと。
でも、実際には CPU 負荷は高めでしたが、配信が止まるほどではなかったので、設定を見直しました。
そして色々いじっているうちに解決できたという具合です🐳

解決方法

早速今回の事例についてみていきましょう🧜‍♂️

まずはグローバル設定を見返します。

設定

この中の[音声]の項目をみたところ、グローバル音量は規定になっていました。
ここは個人的にはこのままでよいと思っています。なぜなら、後述するローカル音声に上書きされると思っているからです。

音声グローバル設定

次に、ローカル音量設定をみていきます。
音量ミキサーの[歯車マーク]から[プロパティ]をクリックします。

ローカル設定

設定は以下のように[規定]となっており、これが原因と考え、ヘッドホンやスピーカーを直接指定して決定すると解消されました。

音量ローカル設定

実際のデスクトップ音声を出力しているデバイスはみてる方の環境とも違うので以下のように YouTube を垂れ流しにしたまま設定を色々変えてみて、音量ゲージが反応したものに設定しましょう!

音量比較

原因の分析

OBS のソースコードはブラックボックスなので、ここからはあくまで仮説です。
原因は[規定]を指定した際の処理によるものではないかと思います。
OBS は突然音声デバイスを外してもクラッシュしないように他の音声デバイスを探してそちらを出力する or 音声を出力しないような挙動を取ります。
このことから、規定にしていると逐次さまざまな音声デバイスにアクセスして入力状態を管理していると思われます。
そこで、今回のように PC の CPU 負荷が高い状態かつ複数音声を出力するデバイスがある状態で[規定]にしていると、OBS がデバイス探索をする時間だけ遅延してしまい、音ズレが発生するのではないかと考えています。
僕の場合はこれを実際にデスクトップ音声を出力しているデバイスに変更することで、デバイスを探索する CPU 負荷が減るためか遅延なく配信できることを確認しました。
前述の通りあくまで仮説であり、同じ症状でもサンプリングレートを変更したり Discord の出力先をバーチャル音声出力デバイスに設定して、それを OBS で出力することで解決できるような方もいるかもしれません。
もしこの記事で問題が解消される方がいれば幸いです🐳

では、よき配信ライフを〜🧜‍♂️