はじめに
最近は某なしがしの影響で配信需要が高まってます。記事執筆時の2020年5月現在、配信用の機材類は全くもって品薄で手にはいらない状況ですね。
今回は配信需要の高まっていることもあり、配信に関する記事です。
とはいえ、基本的な配信設定などは検索で調べると色々出てくるので今回はニッチなところに焦点をあてて。
ついでにmacで使用できる便利なソフトウェアも紹介できればいいかなと。
配信時における音声と映像のズレ
概要
まず前提条件として、僕の配信環境はmacをつかってOBSから配信しています。多くの配信者がOBSを使っていると思うので、OBSに関する設定項目等は色々調べたらすぐに出てきます。ついでながら僕はDJ配信が主な配信になるので、トークなどに関しては当てはまらない可能性があります。
DJ配信をする場合、例えばDJ機材の手元を映しながらDJ MIXを乗せて配信したり、VJが周りにいるならVJの映像を上に乗せて配信したりすると思います。
その時、ウェブカメラの処理遅延やNDIなどの送信遅延などによって、OBSに入力される映像と音声のタイミングがずれることがあります。多くの場合は映像処理の方が重たいので、音声入力の方が早く行われてしまい映像が後からついてきてしまいます。
例えばウェブカメラで音楽に合わせてハンドクラップをしたりすると音声との遅延のせいで綺麗にタイミングを合わせることができなかったり、DJ機材のつまみをいじっても音声と同期してみえなかったり。
基本的に一般的な機材を使っている場合、音声の遅延は数msから十数msに収まるのに対して、ウェブカメラ等の映像入力は数十msから数百msまで時間がかかります。人間の知覚として約20ms以上のズレから認識できるそうですが、上に照らすと明らかなズレを感じることとなります。
そういう場合、音声の入力を意図的に遅らせて、映像と音声を同じタイミングでストリーミングサーバーに送る必要があります。(更に言えば音声をモニターしている場合ストリーミングに送る音声とモニターする音声を分ける必要があります。)
映像のズレを確認する
まず根本的な問題として、映像がどれほどズレているのかを確認します。
一番簡単な方法としてはOBSを起動しているパソコン上にタイマー表示できるアプリを起動させてそれをウェブカメラで撮る方法です。時間表示できるものならなんでもよく、PC画面上に時計表示させたり、何かのソフトのタイムラインを表示させて、その状態でスクリーンショットをとれば良いです。
例えば上写真の場合、mac上で走らせているタイムラインは00:09.33 (00:09:330 – 00:09:339)に対してウェブカメラを経由してOBS上に表示されているタイムラインは00:09:22 (00:09:220 – 00:09:229)になっています。
ここからウェブカメラの取り込みには約100msから200msの遅延があることがわかります(ついでにフレーム表示させることができる場合、はフレーム換算してもよく、今回は574に対して563なので11フレーム (60fpsで183ms) の遅延があることがわかります。)
配信時における音声と映像の同期
OBS純正の設定を使用する
OBSで入力させる音声のうち遅延させたい入力に対して、メータター横の歯車マークから「オーディオの詳細プロパティ」を押して詳細設定画面を開きます。画面内にある「同期オフセット(ミリ秒)」のところに遅延分の値を入力することで音声が遅延して送られるようになります。
基本的にはこの方法を使えば音声と映像が同期されます。されるはずなのですが、残念ながら僕の環境では全くオフセットが機能せず使い物になりませんでした。原因わかる人は教えてください…
オーディオルーティングソフトを使用して遅延させる
オーディオインターフェースに内蔵されているようなミキサーなどの一部のオーディオルーティングソフトにはルーティングの過程で遅延を同期させるためのディレイコマンドがあります。
AudioHijackというオーディオルーティングソフトには内部処理にSyncというパッチがあり、これを使用することで音声入力を遅らせることができます。
AudioHijackは59USDの有料ソフトですが、この他にもいろいろと多機能なので、気になった方はデモ版を試してみると良いかと思います。
AudioHijackはルーティングソフトなので、後述する仮想オーディオデバイスと併用することで使い勝手が良くなります。
AudioHijack : 公式サイト
VSTプラグインを使用して音声を遅延させる
さて、別の解決方法ですが、VSTプラグインを使う方法があります。VSTプラグインとは楽曲制作などで使われる音声データを加工するエフェクトプラグインのことです。
OBSにはVSTプラグインが純正で読み込めるようになったので(mac最新版で確認 Winは別途VSTを使用できるようにするプラグインを導入する必要がある?)、音声を送らせるエフェクトで遅延させるという方法をとります。
OBSで遅延させたい音声入力に対して歯車マークから「フィルタ」を選び設定項目を表示させます。フィルタを新しく追加させるために左下の「+」から「VST 2.x プラグイン」を選びVSTプラグインを呼び出します。VST2.xプラグインのリストからディレイ系のプラグインを呼び出して、ディレイを設定すれば完了です。
今回使用しているプラグインは「Soundtoys – Echoboy」というプラグインです。
意図的に遅延させるプラグインとしては「ディレイ」と呼ばれるプラグインが必要ですが、このSoundtoys – Echoboyはディレイタイムをms単位で設定できるだけでなく、ディレイ回数をカウントで設定することができます。
通常ディレイプラグインはやまびこのように「ヤッホー…ヤッホー…ヤッホー…」と複数回遅れて聞こえてきますが、単純に遅延させたい場合、この繰り返しは1回だけで終わらせる必要があります。
繰り返し回数をカウントで設定できるのはこのSoundtoys – Echoboyしか知らないのでこれを買う必要がありますね。
Soundtoys – Echoboyは通常価格は199USD、セール時で49USDです。趣味程度で使用する場合はちょっと財布に優しくないですが、解決したい場合はセール時に購入してもいいかもしれませんね。
ついでながらVSTプラグインを使用する場合、OBSに直接読み込ませずに後述のAudioHijackを併用する方が安定している気がします。
TouchDesignerを使用する
TouchDesignerには映像処理だけでなく音声も同様に処理することができます。
我らが大正義TouchDesigner。
TouchDesignerに関しては、無料版では使える機能に制限がかかりますが、基本的なものは無料版でも使用することができます。無料版はユーザー登録をすると1ユーザーごとに1年間使えるライセンスが10個取得できるので、10年使えます。実質無料。
TouchDesignerのノードのルーティングは上の通り。
「AudioDeviceIn CHOP」- 「Delay CHOP」 – 「AudioDeviceOut CHOP」です。AudioDeviceInに入力音声を、Delay CHOPに遅延させたい時間を、AudioDevieOutに出力先を設定します。
ルーティングによってはハウリングを起こすルーティングになる可能性があるので十分注意してノードパッチングしてください。オーディオルーティングに関しては後述のLoopbackやAudioHijackを併用すると便利かも。
OBSの設定は「音声入力デバイス」ではなく「音声出力デバイス」を使用します。AudioDeviceOut CHOPから出力される音声をOBSに送るため、出力デバイスを使用する必要があります。
余談
以下は配信に使用する際のおすすめソフト。基本macの話です。
ここのソフトに関しては便利なので個別に記事にしたいところ。
Loopback (仮想オーディオデバイス / 99USD)
仮想オーディオデバイスを簡単に大量に量産できるソフト。
上の写真のように、デバイスを追加すればするほどmacにオーディオデバイスがどんどん追加されていきます。追加削除もワンクリックでできるので管理が楽。
99USD + Taxと値段はちょっと高め。
Loopback : 公式サイト
BlackHole (仮想オーディオデバイス / 無料)
16In16Outの仮想オーディオデバイス。
正直なところ、16In16Outより2In2Outが複数あるほうが便利なのでちょっと使いにくい。けど、無料で仮想オーディオデバイスが使えるという点ではとても良い。
インストールはHomebrew経由で行えます。
Soundflower (仮想オーディオデバイス / 無料)
言わずと知れた仮装オーディオデバイスのSoundflower。
これを使用するとOS内に仮装の入出力デバイスが表示されるようになり、複雑なルーティングが可能になります。
ループバックやミキサーのついていないオーディオインターフェースを使用している場合はこのSoundflowerを利用すると便利。
特にSoundflower(kawauso)版は、本家Soundflowerを拡張したもので、これを使用するとステレオ4入力4出力のオーディオデバイスが追加されるようになります。
後述のAudioHijackと併用すると複雑なオーディオルーティングが可能になります。
ついでに、SoundflowerはCatalinaには対応してません。
GitHub : https://github.com/kawauso/Soundflower-2×4
AudioHijack (ルーティングデバイス / 59USD)
高機能なオーディオルーティングソフト。便利。
音声の入出力をノードパッチングで管理できるだけでなく、AUプラグイン(mac版のVSTプラグインみたいなもの)を差し込んだりすることができます。
先述のSoundflowerやと併用することでOBSに送る音声とモニターする音声を分離させたりすることができます。
さらにはZoomやSkypeなどの入出力やデスクトップ音声をルーティングすることでチャットツールにデスクトップ音声とマイク音声を同時に送ったり、逆にチャットツールの音をOBSに乗せたりすることができるようになります。
59USD + Taxと有料ですが多機能なので持ってて損はないかと。
AudioHijack : 公式サイト
LadioCast (ルーティングデバイス / 無料)
4入力4出力の仮装ミキサー。便利だけどAudioHijackの方が使い回しがいいのでそっちを使うべきかも。
AudioHijack高いから買えねぇ、みたいな場合はとりあえずこれを使ってみるといいかも。
LadioCast : Mac app store
まとめ
なんか色々方法ありそうなので、もうちょっと詰めてみるといいかもしれないです。また気が向いたら記事更新します。