はじめに
コロナの影響で、主催する勉強会やミートアップなどをオンラインで開催する機会が増えてきました。
これまではZoomを使ってYouTube Liveに配信していたのですがこれだと画質が低いこともあって最近OBSを使った配信に切り替えています。
1人での配信だとシンプルなので特に困ったこともなかったのですが、最近とあるオンライン開催のコミュニティイベントの配信を見ながら副音声を載せて配信するってことを(ちゃんと許可を取って)やろうとしたら、わからないことばかりでいろいろ困ったのでその最終形を紹介します。
ググるとMacでOBSでってなるとSound FlowerとLadioCastを使って〜みたいな記事が多いですが、自分の環境ではどれもうまく行かなかったです。
ちなみに、あとからゲーム実況配信と変わらないってことに気づきました。
やりたいこと
こういう感じで、音の出る画面(今回は動画をブラウザで視聴)を見つつ、それに自分の音声を載せて配信するってものです。
前提
前提として以下の環境です
- Macbook Pro (2019 Mid, Mojave)
- OBS
- マイク、スピーカーともにヘッドセット(Jabra Evolve75もしくはAirPods Pro)
- マイクはKrispでノイズリダクション
ポイントはKrispでノイズリダクションしたマイク入力を使いたいってことですね
Krisp
Krispってのは機械学習の力でスピーカーとマイクのノイズキャンセリングをしてくれるアプリケーションです。
超強力です。JabraのEvolve75で試した場合、後ろで音楽をそれなりの音量で流していても消してくれます。打鍵音も同様です。このリモートミーティング時代で僕にとって手放せないソフトウェアです。ちなみに無料でも一部使えます。
なので、今回もこのKrispを通した音声を配信に載せたかったのです。
CPUを食うって話もありますが、僕の環境(i9 9コア、32GBメモリ)では気にならないレベルです。なので常にオンにしてます。Zoomでもなんでもこれ経由です。
必要なもの
Macではデスクトップ音声(つまりMac上で再生した何らかの音声)をそのままOBSで取り込むことはできないです。なのでブラウザなどで動画を再生してそれをウィンドウキャプチャなどで取り込んでも映像だけで音声は聞こえない状況になります。
そこで、Blackholeという仮想オーディオデバイスを使います。
Web上の解説などではSoundflowerというものを使うものが多いですが、今回はその後継とも言えるBlackholeというものを使っています。Soundflowerはオリジナル版の開発は既に停止されており、最近のOSへの対応などは有志によるfolkとなっているためです。加えて僕の環境ではインストールが失敗してうまくいきませんでした。
あと、あわせてLadioCastというものをインストールするように案内している記事も多いですが今回は使いません。
ここからはBlackholeがインストールされた前提です。ちゃんとインストールされているとAudio MIDI Setupを開くとこんな感じになっていると思います。
なお、お金があるならLoopbackという有料ソフトを使うのが一番簡単です。これからやることをごちゃごちゃやらずともあっさりできます。Soundfrowerのオリジナルの開発元はこのLoopbackの会社に買収されたそうです。
OBSの音声設定
マイク1をKrispに設定してます。マイクの音はヘッドセットのマイクから直接ではなくKrispのノイズリダクション後の音を使いたいからこうしています。そしてKrispの入力デバイスとしてヘッドセットのマイクが指定されています。
いろんな記事がいろんなこと書いてますが、僕の場合はこれでいきます。なお、デスクトップ音声1、2はともに何も選べません。無効以外選択できない。
加えて、モニタリングデバイスとして自分がそのとき使っているスピーカーを設定します。今回はJabraのヘッドセットを直接指定しています。これは文字通りモニタリング用です。これがないと流れてる音声を聞きながら喋るってのができないです。後でまた触れます。
OBSのシーン設定
この例で追加しているソースは以下4つです。
- 映像入力キャプチャ(Webカメラからの入力、画像上α6400となってるのがこれ)
- 音声入力キャプチャ(再生中の画面の音声)
- テキスト(文字をかぶせる場合)
- ウィンドウキャプチャ(特定のウィンドウの映像取り込み。今回はブラウザでYouTube動画を再生し最大化)
ポイントは音声入力キャプチャ。キャプチャするデバイスとしてBlackholeを設定します。
音声ミキサーの部分のマイクは上で設定したKrispのマイク、音声入力キャプチャは今設定した音声入力キャプチャ(Blackhole)です。
配信
ここまで設定した状態でMacの出力デバイスをBlackholeに変更します。入力デバイスはヘッドセットのマイクを使うので今回はJabra Link 370を指定しています。
で、これだけだと画面で再生している音をモニタできません。なぜならばMacの出力デバイスとしてはBlackholeが設定されているからです。音声出力先がBlackholeになっているのですべての音がそこに出力されるんです。なのでヘッドセットで聞きながら〜ってのができません。というわけでヘッドセットにも音を出します。
先ほど、OBSの設定でモニタデバイスとしてJabra Link 370を設定しました。なのでOBSのモニタ出力はここに入ってきます。ただし、通常では音声入力のモニタ出力は設定されていません。というわけでそれを設定します。
今回は自分の喋っている声はモニタする必要ない、つまりマイク入力はモニタ不要ということで音声入力キャプチャのモニタ設定だけ変更します。
これはモニタ出力と配信側への出力と両方をできるようにしています。こうすることで音声入力キャプチャで入ってきたヘッドセットなどで聞きながら喋ったりできるようになりました。
あとは普通にOBSからYouTube Liveへ配信するなり、録画するなりしちゃってください。
なお、この設定はOBSを落としたら音が聞こえなくなります。なのでその場合はMacの出力デバイスを任意のデバイスに戻してあげましょう。
まとめ
というわけで僕の環境における設定でした。実際にこれでYouTube Liveで配信もやった実績あるので少なくとも僕の環境では問題ないです。
今回、Krispを通したマイク入力にこだわったことで難しいこともあったのですが、OBS自体にもノイズリダクションとかがフィルタとして存在してます。なのでそれを使う場合はもう少しシンプルかもしれません。どのくらい有効なのかはわからないですが。
あと、冒頭でも書いたようにこれって実はゲーム実況配信と変わらないことに後から気づきました。
そしてTwitch Studioを使ってTwitchで配信するならここまでやってきた苦労を何もせずとも同じことが簡単にできます。ソフトインストールして基本セットアップしただけでミックスされた画面と音声が用意されてボタン一発でTwitchへのストリーミングが開始できるのすごい。録画もできるのでTwitchでもいいのであれば圧倒的にTwitch Studio使ったほうが楽だと思います。