オーディオ入力非対応のクラウドVMに音声を転送する方法

普通にリモートデスクトップで接続できるような環境であれば、特に何も心配することなくクラウド上のマシンに音声を転送できます。リモートデスクトップで接続できないクラウドVMサービス([Parsec](http://parsecgaming.com)など)では、音声を転送する手段がありません。しかし、このような場合でも、Discordなどのボイスチャットツールを経由すれば、音声を転送できます。

![overview.png](https://qiita-image-store.s3.amazonaws.com/0/10290/9d240c4e-5afc-d1de-a029-c68b8c5849da.png)

参考
https://support.parsecgaming.com/hc/en-us/articles/360000961232-Passing-Your-Microphone-To-Your-Cloud-Computer

## 現状の確認

クラウドVMの[サウンド]設定で、現時点の入力デバイスと出力デバイスの状態を確認します。デフォルトに何が選択されているか、覚えておいてください。

![before-in.png](https://qiita-image-store.s3.amazonaws.com/0/10290/ea113b20-17ea-7688-c18b-744428c94d4a.png)

![before-out.png](https://qiita-image-store.s3.amazonaws.com/0/10290/d570826c-783c-1269-c55f-613ab8d9c3b2.png)

## VBCableのセットアップ

[VBCable](https://www.vb-audio.com/Cable/)をダウンロードして、インストールします。ダウンロードしたZIPを解凍し、`VBCABLE_Setup_x64.exe`などを管理者権限で実行するだけです。以下のようなダイアログが出てきたら、OSを再起動します。(Parsecの場合は、切断して、`STOP`して、`START`します)

![vbcable.png](https://qiita-image-store.s3.amazonaws.com/0/10290/9c93eef4-0bbc-d693-e984-2e14ffa3aec0.png)

再起動したら、入力と出力で`CABLE Input`と`CABLE Output`がデフォルトデバイスに設定されているはずですので、作業前の状態に戻します。

![after-in.png](https://qiita-image-store.s3.amazonaws.com/0/10290/30310f19-4535-fd36-4339-770ba04134d6.png)

![after-out.png](https://qiita-image-store.s3.amazonaws.com/0/10290/42b4b7e7-13d9-5802-fa56-a4da110d3558.png)

`CABLE Output`の`Listen to this device`に、チェックが入っていないことを確認します。

![check.png](https://qiita-image-store.s3.amazonaws.com/0/10290/8a643782-15d2-b682-842c-7c2aa313088a.png)


## Discordのセットアップ

### アカウントの設定

[Discord](https://discordapp.com)の音声転送用アカウントを作成します。Discord自体を使ったことのない方は、アカウントを2個作成します。

DiscordをクラウドVMにインストールします。Discordを使ったことのない方は、接続元のPCにもインストールします。

両方のDiscordを起動し、接続元PCは本垢で、クラウドVMは音声転送用アカウントでログインします。

> 逆にすると、VMが落ちた時に本垢が落ちてしまうと色々やりづらいかもしれないことと、ゲーム用VMにあまり色々させたくないことから、このように書いていますが、Discordでボイスチャットをやる方は、逆にした方が使いやすいかもしれません。

作成したアカウントと本垢をフレンドにします。Discordを使ったことのない方は、作成した2つのアカウント同士をフレンドにします。

### 音声設定

ユーザー設定の[音声・ビデオ]を変更します。

接続元PCの設定は、このようにします。

![sound-src.png](https://qiita-image-store.s3.amazonaws.com/0/10290/06e5117e-5bdf-63fe-7331-bc20a4105446.png)

クラウドVMの設定は、このようにします。

![sound-dst.png](https://qiita-image-store.s3.amazonaws.com/0/10290/09a6e74a-0231-f209-df16-875e841b71f2.png)

> 入力音量を0にするので、入力のほうは`Default`のままでも良いです。

フレンドリストで、音声転送用アカウントとの通話を開始します。

![call.png](https://qiita-image-store.s3.amazonaws.com/0/10290/f1d1419e-09e3-9c8e-fdf7-a3510d16428b.png)

> 出力デバイスを`Default`のままにすると、接続元PCから転送された自分の声を聞くことができます。内蔵スピーカーの場合は、音を拾ってハウリングしてしまうため、ヘッドセットの使用をお勧めします。

## 音声を利用するアプリの設定

アプリの入力ソースに、`CABLE Output(VB-Audio Virtual Cable)`を選択します。

### VRChatの場合

[VRChat](https://www.vrchat.net)で、`ESC`キー - `System`を選択します。右下の`Microphone`メニューで、矢印をクリックして、`CABLE Output(VB-Audio Virtual Cable)`を選択します。

![system.png](https://qiita-image-store.s3.amazonaws.com/0/10290/d291b78c-0071-3d21-d483-9aa1b47d90ce.png)

![mic.png](https://qiita-image-store.s3.amazonaws.com/0/10290/0ef5ab06-f01d-340d-e41e-18d899cec6bc.png)

VRChatでは、自分の音声がどのようになっているか知る方法がありませんので、インワールドの誰かに確認してもらう必要があります。

### SecondLifeの場合

[Second Life](https://secondlife.com)系の仮想空間では、ビューアで`Ctrl+P`を押して設定画面を開き、`Sound & Media`(`サウンドとメディア`)タブを選択します。`Input/Output devices`(`入力・出力機器`)をクリックすると、入出力デバイスを選択できるようになります。

![sl-property.png](https://qiita-image-store.s3.amazonaws.com/0/10290/ab5c9f68-8892-a707-374a-0911b50cc441.png)

`Input`(`入力`)のデバイスに、`CABLE Output(VB-Audio Virtual Cable)`を選択します。

![sl-input.png](https://qiita-image-store.s3.amazonaws.com/0/10290/7eadd28c-fede-cbc3-bd8e-d2346d267f1d.png)

この設定項目が表示されている間は、転送された音声が再生されますので、自分で確認できます。