オンライン勉強会を効果音で盛り上げよう！

# オンライン勉強会を効果音で盛り上げよう！

## 概要

この記事はNTTテクノクロス Advent Calendar 2022の17日目です。

こんにちは、NTTテクノクロスの広瀬です。2日目に続いて登場です。  
業務ではメディア処理アルゴリズムの研究開発からフロントエンドAPI開発など幅広くやっていますが、データ分析の講師や**様々な勉強会の運営**なんかもやっています。

さて、先日社内様々なコミュニティ協賛による合同LT大会が開催されたのですが、そちらで盛り上げ役を拝命し、運営を担当してきました。  
そこでは、盛り上げの工夫として**打ち合わせ感を減らしてお祭り感**を出すために

- 持ち時間終了の鐘を鳴らす
- 拍手を鳴らして、登壇者への感謝を伝える
- クロージングでBGMを流して、ラジオのエンディングトーク感を演出

のようなことを取り組んでみたところ、なかなか好評でした。  
一方で、Microsoft Teams[^1] (以下Teams)上で実現する際には手順が複雑になったので、本記事で自らへの労いと備忘録を兼ねて記録しておきます。  
※デバイスの設定周りは他の音声会議システムでも同様だと思います。

## 完成形

通常PCの内部の音の出力先は、イヤホン、ディスプレイ付属のスピーカー、外付けのスピーカー等になっていると思います。  
目指すゴールでは、PCのサウンドボードから出力されてスピーカーに届くまでの音声を捕まえて、再度PCに入力する事でTeams等のアプリケーションで取り込めるように設定していきます。

|(現在)PC音はスピーカーマイクは会議と、入出力が分離している|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/59a26711-5622-69e1-a50a-6efad0311d40.png" width=50%>|
|**(完成形)PCの音とマイクの音を混ぜ合わせて、会議で出力させる**|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/f2f64408-dcf6-fe7c-39f7-a8ff39359c5a.png)|


### ノイズキャンセリング対策

いくつか実験していたのですが、Teamsではサーバサイドで**人間の声の周波数領域(100～1000Hz程度)以外はカット**されてしまうようです。  
普段の打ち合わせではありがたい機能なのですが、**効果音を鳴らすには不要**な機能なので、この処理を回避する設定もしていきます。

|帯域確保の為に人の声以外の領域が落とされている|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/3d7c5b43-1561-984b-1968-ce28ddc462df.png" width=75%>|

## 手順
### 1. ソフトのインストール

まずは、必要なソフトウェアのインストールからです。
出力音声の入れ直しと、PC音声・マイク入力のミキシングを以下のソフトを使用して行っていきます。

- OBS Studio[^2]
- VB-CABLE Virtual Audio Device[^3]

OBS Studioはクロスプラットフォーム対応の非常に有名なライブ配信OSSです。  
各種動画配信サイト等のライブ配信で使われているのでご存じの方も多いと思います。ラフなミーティングの際にはカメラ映像の下にテロップを入れて、今の気分などを書きこんだりすると意外と盛り上がりますのでおすすめです。

VB-CABLE Virtual Audio Deviceはルーティングのための仮想オーディオデバイスです。  
機能としては、inに入った音声をoutに出力するだけのソフトウェアとなっていて、**PCのLine outとinを繋ぐケーブルを仮想化**する事で、音声出力を分配する為に使用します。  

|仮想デバイスでこちらのルートを確保|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/f3c2ceb5-207e-8c84-918f-d9f487a6333f.png" width=75%>|


それぞれインストーラが用意されているので、特にインストールで困ることはないでしょう。

:::note info
VB-CABLE Virtual Audio Deviceのインストール時は、管理者権限で実行すること！
:::

### 2. 仮想オーディオデバイスの設定

続いてWindows本体の設定を行って行きます。  
PC内部音声を仮想デバイスのinputに取り込み、別のソフトで使えるように仮想デバイスのoutputへ入れていきます。  
要は↓の様に設定するだけです。

|Windowsのサウンド設定|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/0a160e0a-22a1-e1b1-aa66-fe61b9c0479b.png" width=75%>|

#### (Option)システムからの通知音をオフにする

やっておくと便利なのがシステムからの通知音オフです。  
勉強会などの最中に**通知音が入り込まないように**、システム音量を0に設定していきます。  


1. 右下スピーカーアイコンを右クリック
2. 音響ミキサーを開く
3. アプリケーション > システム音のスライダーを0にする

|音量ミキサー設定でシステム音をゼロにする|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/b4da788b-7920-ee96-3893-fff16ef292b8.png" width=50%>|

**勉強会終了後に元に戻すことを忘れずに！**

### 3. ライブ配信ソフトでのオーディオミキシング設定

ここまででもTeamsにPC音を入れ込むことは出来るのですが、PC音(SEやBGM)に加えマイクの音が同時に入ってしまいます。  
それぞれの元からオンオフを切り替えればよいのですが面倒かつ事故の可能性も高まるので、**一箇所で調整できる**ようにミキサーを用意していきます。  

|複数系統の音を混ぜて、複数系統に流す|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/415b8c84-7278-2b63-c1db-aa79341bcd34.png" width=50%>|

#### モニタリングデバイスの設定

OBS Studioではオーディオのミキシングと出力先スプリッタの機能が用意されているので、これを活用していきます。  
まずはモニタ先を設定します。

1. ファイル > 設定 > 音声をクリック
2. モニタリングデバイスを設定
3. CABLE Input(VB-Audio Virtual Cable)を設定

|CABLE Input(仮想デバイス)へ音を流す設定|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/12d80e5d-3436-f585-3de6-f1c8df03ff9f.png" width=75%>|

#### デバイスの出力先の設定

次にTeamsにも流す音と、手元だけで聞く音の分離を設定します。  
マイクをモニターのみに設定しても良いですが、**聞こえているかの確認など調整する際に少し困るので、音量フェーダを下げる様にしておく**ことをおすすめします。

1. 音声ミキサー左下の歯車をクリック
2. 音声モニタリングを設定
   1. モニターと出力: Teamsと手元に流れる
   2. モニターのみ(出力はミュート): Teamsに流れない

|どの入力を仮想デバイスに流すかの設定|
|:--:|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/a791012c-1620-7ed9-6358-0d077b6f6d97.png)|

### 4. 会議ソフトへのデバイス・ノイズ除去設定
最後にTeamsへ音声を流す設定をしていきます。

#### デバイス設定
Teamsで使用する音声デバイスの設定をしていきます。  
変更ポイントは4点です。

1. スピーカーをCABLE Inputに設定
1. マイクをCABLE Outputに設定
1. マイクの感度を自動的に調整するをオフ
1. 高品質のミュージックモードをオン

1,2はPC音声をTeamsに流すためのデバイス設定、3,4はノイズ除去機能の制御の為の設定です。
##### 2023/02/15 追記
会議に音が入らない場合は、Windowsのサウンド設定を「出力:Cable Input / 入力:ヘッドセット」、Teamsの設定を「スピーカー:ヘッドセット/マイク：Cable Output」に切り替えてみてください。

|Teamsのデバイス設定|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/320a4dcb-8ebd-a1eb-0e58-1d88c635afb3.png" width=50%>|

#### ノイズ除去機能をオフ

いくつか設定を試したところ、Teamsでは手元端末でのノイズ除去とサーバサイドの除去があるようでした。  
**高品質のミュージックモードをオン**に設定することで、通信量を増やす代わりに、**サーバサイドでの周波数帯域フィルタ機能の利用を回避**出来ます。

Teamsの設定で高品質のミュージックモードを有効にすると、**会議画面でミュージック欄が現れる**ので、**クリックして有効化**します。

|高品質のミュージックモードを有効にする|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/fb3c8c10-624a-3701-0be5-b56846754e7c.png" width=75%>|

##### 2023/02/15 追記
Teamsのアップデートでミュージックボタンが「その他」の中に入ってしまったようです。
見当たらない場合は、その他から設定を高音質ミュージックモードを有効にするボタンを探してみてください。「有効にしました」のポップアップが出ればOKです。

#### (Option)Teamsの通知音をオフ

システム音声をオフにしたのですが、保険の為にTeamsの設定からも**通知をオフ**にしておくと安全です。  

|Teamsの通知音をオフにしておくと更に安心|
|:--:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350454/011d8e15-ffd2-d39d-4ff3-eb9ef3668833.png" width=75%>|

## まとめ
大きく4つのステップで設定を行いました。
オーディオのルーティングに慣れていないと難しく感じるかも知れませんが、**操作としては数クリック**で完了します。

1. ソフトのインストール
2. 仮想オーディオデバイスの設定
3. ライブ配信ソフトでのオーディオミキシング設定
4. 会議ソフトへのデバイス・ノイズ除去設定


オンラインでの勉強会が盛り上がらないと悩んでいる勉強会運営の皆様、効果音やBGMでわいわい感を演出してみるのはいかがでしょうか。
もちろん、**参加者のリアクションやチャット投稿も盛り上げの大切なピース**なので、次回参加する勉強会では、どしどしリアクションをしてあげてください！

明日は@kanaza-sがPostgreSQLに関する記事を書いてくれるようです。
NTTテクノクロスアドベントカレンダー引き続きお楽しみください！

## おまけ

持ち時間終了音を鳴らす為に300秒のsleep関数叩いていたら、プロセスのkillでちょっとトラブったので1秒を300回カウントする様な実装としました。  
そもそも違う回避策が良いのでは？というのは横において、本番直前にほんのちょっとした工夫で回避した実装を、ここに貼り付けて供養したいと思います。

```python
import time
from pathlib import Path
from tqdm import tqdm
from playsound import playsound
from typing import Final

lt_time : Final[int] = 300

for t in tqdm(range(lt_time)):
    time.sleep(1)
playsound(str(Path("./dora.mp3")))
```

[^1]: 各社の社名および製品名は、各社の商標または登録商標です.
[^2]: [OBS Project. "OBS Studio". OBS Project. 2022. https://obsproject.com/ja, (参照 2022/12/15)](https://obsproject.com/ja)
[^3]: [V.Burel. "Virtual Audio Cable". VB-AUDIO Software. 2022. https://vb-audio.com/Cable/, (参照 2022/12/15)](https://vb-audio.com/Cable/)