Teams のライブイベントで PC 音も一緒に出力する方法

(2020/04/28 追記)
Teams のライブイベントでも「システムオーディオを含める」設定が実装されたようです！
本手順書は Voicemeeter Banana の概要をご理解いただく資料として、あるいは自分の声とシステムオーディオのバランスを調整したい場合にお読みください。


#はじめに
本記事では、Teams のライブイベントで自分の音声と PC 音を一緒に出力する方法の一つとして、Voicemeeter Banana という Donation ware（無料で使えるけど寄付が可能なソフト）を利用した方法を紹介します。
が、この Voicemeeter Banana を利用する上で理解が必要なポイントがいくつかありましたので、その考え方も一緒に紹介することにしました。

結果、ちょっと長めの記事になってしまいましたが、この考え方が理解できれば他の方法でも応用が効くと思いますので、ご興味のある方は是非ご一読いただけますと幸いです。


#背景
Teams でオンライン勉強会を開催するには、以下の2つの方法があるかと思います。

1. 会議
2. ライブイベント

機能差は色々ありますが、その中のひとつに
「システムオーディオを含める（PCの音を相手に届けられる設定）」
があります。

先日初めてオンライン勉強会での発表の機会をいただいた際に、上記2つの方法を事前に動作検証をした時のことです。
[勉強会の詳細はこちら（終了済み）：Azure オンライン勉強会 JAZUG TOHOKU](https://jazug.connpass.com/event/168732/)

私が勉強会で発表する際は、音声付きの動画を再生する確率が非常に高いので、動画の音が相手に届くかどうかの検証を行いました。
会議の場合は、画面共有後に画面上部にあるこのマーク（下図）をクリックすることで、自分の音声とPCの音を一緒に届けることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/49656508-5049-44a2-0abc-18b54ec09d30.png)

が、ライブイベントには、残念ながらこの機能はありません。
そのため、開催直前までは会議で行う予定だったのですが、参加申込者が最大会議参加人数の250名を超えたため、急遽ライブイベントの開催を検討することになりました。

さーて、どうしたものか。


#やりたいこと
PC には、音声の入力元と出力先を設定する、サウンドの設定というものがあります。
特に設定を変えていなければ、こんな感じに設定されていると思います。
この場合、マイクの音声は PC 内に取り込まれ、また PC で再生された音はスピーカーに出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/bd1ce83d-7a7a-1ef2-a671-5c146921ab59.png)

また、Teams には Teams 用のオーディオ設定があります。
Teams でいう音声は、「通話している相手の音声」がスピーカーに出力され、またマイクから入力された音声が「通話している相手に届ける音声」となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/8fcdd71b-103d-5bfe-09ac-cbbf9477dd0f.png)

特に設定を変えていなければ、Teams もこんな感じに設定されていると思います。
以下の図の通り、自分のスピーカーからは通話相手からの音声と自分の PC 音がミックスされて聞こえますが、通話相手へは自分のマイクの音声しか出力されません。
Teams の会議機能には「システムオーディオを含める」があるため通話相手に自分の PC 音も出力できますが、ライブイベントにはこの機能がないため、さてどうしよう、となるわけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/f66e57a6-8d7d-e7f6-b740-31595213c71b.png)

つまり、やりたいことはこういうことです↓
Teams のマイク設定で2つ以上のデバイスを選択できればいいのに、と思いますよね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/45a09382-c84c-7cd9-fafa-c6672992b9b5.png)



#利用するもの
そこで今回は、ソフトウェア上で様々な入力音声をミキシングして多方面に出力できるソフト Voicemeeter Banana を使用してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/1232b96c-6847-0df4-5317-af3e39761e46.png)

本ソフトは、@hrfmjp さんにご紹介いただきました。ありがとうございました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/9ed7ed5b-b6ad-27fe-4cb6-7f6170356a9b.png)

本ソフトは、Donation ware といって、無料で使えますが寄付が可能なソフトウェアです。 
（私も気持ち程度ですが寄付してみました）

#Voicemeeter Banana ができること（イメージ）
本ソフトは、5つの音声入力と5つの音声出力を持っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/84a8de4e-014d-c176-4839-4aee315ca525.png)

このソフトがあれば、様々な音声入力を自由にミックスして、様々な音声出力に出力することができます。
（以下のイメージ図で何となく伝わりますでしょうか…）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/9e6a9b25-932d-1cd4-3937-33a1654fc3e4.png)

今回の Teams のケースで何が嬉しいかというと、通話相手に届けたい音声を自分でミックスして1つの出力口から出力することができるため、先ほど抱えていた課題を解決できる、ということになります。

本ソフトは PC 内で動きますので、以下のようなイメージとなります。
本ソフトは5つの入出力のうち、各々3つはマイクやスピーカーなどの物理的な入出力を、残り各々2つはサウンド設定や Teams などの PC 内の入出力を行うことができるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/0398592e-f6f3-4e80-4b84-b07d89d09201.png)

早速、入出力をつないでみましょう。
先ほどの通り、マイクやスピーカーを物理入力/出力とつなぎ、サウンドや Teams を仮想入力/出力とつなぎます。
（今回の課題と関係のない結線は省略しています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/dc1eab1b-c8c4-ace1-c495-6c09e488047c.png)

続いて、音をミックスさせます。
今回実現したいのは、以下の2つ

>・ Teams のマイクに、自分のマイク音 ＋ PC 音を出力したい
>・ スピーカーに、通話相手からの音声 ＋ PC 音を出力したい

ですので、言い換えると

>・ 仮想出力①に、物理入力①と仮想入力②を出力
>・ 物理出力①に、仮想入力①と仮想入力②を出力

を行います。
先ほどのイメージ図で表すと、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/9fe1a5b6-8252-78df-0cfb-e69d6af7a2d9.png)

これを、実際に Voicemeeter Banana で設定していきます。


#設定方法
###インストール
[公式ページ](https://www.vb-audio.com/Voicemeeter/banana.htm) からインストールします。zip と exe がありますが、どちらでもよいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/3ae0ba67-329e-8f37-0919-1ae8f8e4b20d.png)

インストールが終わったら、Voicemeeter Banana を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/446fdeb1-96c3-1e37-3714-072cfe659885.png)

5つの入出力は、実際には以下のような名前になっています。
[入力]
　物理入力：HARDWARE INPUT 1～3
　仮想入力：Voicemeeter VAIO, Voicemeeter AUX
[出力]
　物理出力：A1～A3
　仮想出力：B1(Voicemeeter Output), B2(Voicemeeter Aux Output)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/b1989f03-82d9-42b4-e93f-ff6395d94e47.png)




###デバイス設定

実際に設定を行うのは、下図の★の部分となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/6e785113-149b-2edd-9b59-ac9ee24646e6.png)

まずはサウンドから。以下のように設定します。
Teams 通話において"サウンド"の入力デバイス設定は不要ですが、出力に合わせて Voicemeeter Aux を選択しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/6142ce43-4459-d9a9-3867-467ff59ea924.png)

続いて Teams のデバイスを以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/ecf9c034-1929-9d2e-1baf-55e8f4268110.png)

最後に、Voicemeeter Banana を以下のように設定します。
まずは物理入力①から。
HARDWARE INPUT 1 のあたりをクリックすると、PC が認識している物理入力デバイスの一覧が表示されますので、ヘッドセットマイクなどご自身が利用されているマイクを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/23cb3c47-b157-fff8-3b44-710a69f92aa1.png)

続いて、物理出力①を。
物理画面右上にある A1 をクリックすると、PC が認識している物理出力デバイスの一覧がっ表示されますので、ヘッドホンなどご自身が利用されているスピーカーやヘッドホンを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/80a11e87-edee-b1bf-f30b-7ce774a2f7c3.png)

これで、デバイスの設定は完了です。
最後に、音のミックス設定を行います。


###出力設定
これまでの図を整理すると、施したい設定は下図の4か所の黒丸の部分になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/8f038adb-2aed-ad03-0e63-e6dfc4ac7aec.png)

はい、できました。超簡単。
以下のピンク枠をそれぞれクリックして有効にするだけで、出力することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/e62d5b02-0d12-1da0-909b-863595764d2f.png)

なお、各入力音声の入力音量調整は以下の緑枠で、各々の入力音をミックスした後の全体出力レベルの調整は以下のピンク枠のつまみで調整することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405544/81d80ce0-1add-1bed-6b84-686ea66beaee.png)


<br>
あとは、"Voicemeeter Banana を起動した状態で" Teams でライブイベントを行えば、配信先の相手に自分の音声と PC 音の両方を届けることができます。
なお、会議でも同様のことができますが、逆に会議の設定にある「システムオーディオを含める」設定は行えなくなりますので、ご注意ください。


#注意点
本ソフト利用時は、PC 負荷に注意する必要があります。

本ソフトはソフトウェア上で音声処理を行います。ソフトを常駐（起動した状態）にさせ、常に音声出力処理を行わせる必要があり、他のソフトと同様に CPU を消費します。
Teams 会議やライブイベントなどのライブ配信は配信そのものに PC 負荷がかかりますので、本ソフトを利用する場合は PC 負荷によって配信遅延が発生しないかを事前に検証する必要があります。
（本手順通りに設定したことで配信事故が発生しても、当方は責任を負えませんので何卒ご了承ください m(_ _)m ）

ちなみに、私の PC (第5世代 Surface Pro: KJR-00014) では、先日のライブイベントは特に気になる配信遅延や途切れなどはなかったようですが、今後も利用時は事前検証が必要かなと思っています。
<br><br>
他の方法をご存知の方や、あるいはハードウェア上で音声処理を行うためのおススメの機材などありましたら、是非教えていただきたいです！


#参考
- [「Voicemeeter Banana」の基本的な考え方](http://labo.pls-ys.com/stemiki/base_setting.html)
- [マトリックススイッチャ（Wikipedia）](https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%88%E3%83%AA%E3%83%83%E3%82%AF%E3%82%B9%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%83%A3)