PC① から PC② へ音声をタレ流し(要は音声ストリーミング)をしたくて実験用に導入しました。
イメージはトランシーバーの送信機(PC①)と受信機(PC②)です。
ここでいうところのPCとは Raspberry Pi Zero のことで、Linux で稼働するものを想定しています。
音声配信+受信用のソフトウェア
仮想オーディオミキサーである Voicemeeter の機能縮小版でしょうか。
音声配信が VBAN Talkie、音声受信がVBAN Receptor です。
対応OSは下記のとおり。
・Windows (XP to WIN10 32/64 bits)
・Mac(macOS 10.11 or later)
・iOS(iPhone, iPad or iPod-Touch (iOS 7.0 or later))
・Android(Android 4.2 or later)
・Linux(不明、Raspberry Piが動作するOSカーネル付近)
Windowsでの最小PCスペックは Celeron / Duo Core 1.8 GHz、メモリ 512 MB、ディスク100MB以上
VBANプロトコルというUDP送信を使用した独自なもの。
UDPパケットのMax 1500 Byte のうち、1464 Byte を VBAN パケットとしてヘッダー部に28 Byte 、データ部に1 ~ 1436 Byte という構成で成り立っている。
詳細は公式サイトを参照のこと。
データ送信のたび毎回ヘッダー部が入っているので、音声遅延は非常に少ない。
しかし送信データが多ければ多いほどパケット送信回数も増えるため、それによるネットワーク遅延で音声遅延が発生したり、音声同期のために途中の音声を切って最新の音声を再生することで、音声がブツ切り状態になったりする。
なので、使用するネットワークの混雑状況によって音声データの品質を落としたりする必要が出てくる。
音声をリアルタイムに配信するのが主目的のソフトウェアであるため、現段階では音声コーデックによる音声圧縮には対応していない模様。
なお、Linux版は音声配信はvban_emitter、音声受信はvban_receptorという名称な模様。
オーディオ再生録音とネットワーク環境を整えます
★機器構成
最終的な構成
・ステレオマイク
・USBサウンドカード
・USB 100Mbps LAN付き USBハブ(WIFI通信では都合が悪いため)
★オーディオ設定
pulseaudioを使用します。
マイク音声はデフォルトで40%でしたが100%などで調整します。
最終的には300%がちょうど良かったです。
試行錯誤中
★ソフトウェアの導入
「Linux:送信 Windows:受信」
公式サイトよりGithubのプログラムを取得して、ビルドおよびインストールします。
標準だと alsa、pulseaudio、jack が使用出来ます。
私の環境では pulseaudio のみ使用するため、alsaとjackは下記のように無効化しました。
# ./configure --disable-alsa --enable-pulseaudio --disable-jack
下記のようにコマンドを実行することでマイク音声を送信が可能になります。
送信先のIPアドレスを指定します。6980ポートはデフォルトのものです。Stream name は「STREAMTEST」としています。
テスト送信の音質は 16bit 11kHz 2チャンネル です。
あまり音質を上げるとネットワークに負荷をかけることになります。
送信テストの受信用に公式サイトより VBAN Receptor & Talkie を取得します。
こちらはドネーションウェアとなっており、使用してみてよかったら寄付金という形で支払いが出来るようです。
その割には広告が少々強すぎると感じますが・・・。
★Receptor
画面上部右側にある Overload と Underrun は赤く点滅することがあります。
恐らく Overloadは送信データが多すぎて処理出来ない。Underrunは送信データが遅延により届いていない。そんな意味合いだと思う。詳しくはわからない。
真ん中のIPアドレス部分をクリックすると、送信元から届いているIPアドレス一覧が表示されます。通信プロトコルはヘッダ部とデータ部があり、ヘッダ部が正しく受信出来ていればIPアドレスの右隣に緑色ランプが点灯する。
一番下にある HARDWARE OUT というのが受信した音声を出力する機器の設定。
クリックすると上記のように再生可能な音声デバイス一覧が表示される。
WDMとMMEとあるが、WDMにすると音声出力デバイスを独り占めするようなので音声を聞くことが出来ない。
MMEを選択すると音声を聞くことが出来る。
音声配信まわりの知識が乏しいのでWDMを選択する際のメリットというか使いみちが思いつかない。
オプション設定。
Network Quality にて通信タイミング?の設定が可能になっている。
Optimal だと0.2~0.4秒くらいで遅延が極端に少なく、Vely slow だと0.6~0.8秒程度の遅延が発生する。(個人的な感覚なので人によって違う可能性があります)
デフォルトは Fast に設定されている。タイミングにより音声データが届いていない通信状況の場合にOptimal 設定されていたりすると都度音声が途切って最新の音声データを再生する動きになります。
色々と Receptor をイジっていましたが、結局 送信元がWIFI環境だと音声ブツ切れ状態でした。
Raspberry Pi Zero 側に100MbpsのUSB LANを使用したところ、音声は問題なく届きました。
16bit 48K の音質でも問題なくマイク音声を聞くことが出来ました。
送信元のマイク音量設定が100%だと全然音声が聞こえなかったため、300%設定したら聞こえるようになりました。ノイズ音量も上がります。(笑)
「Windows:送信 Linux:受信」
★Talkie
GUIでの音声配信側です。
IPアドレスに送信先IPアドレスを入れます。
送信先で問題なく受信出来ていればIPアドレスの右に緑色ランプが点灯します。
なお、オプション設定で「Physcal Output Device」でマイクのデバイスを選択しておく必要があります。
Linuxの受信側です。
IPアドレスは送信元IPアドレスを指定します。
ひとまず Windows と Linux の双方を確認してみました。
音声配信側と受信側がありますが、配信側は WiFi 接続だと音声が途切れがちになるようでした。
有線LANだと問題なく音声の配信を行うことが出来ました。
受信側は有線LAN・WiFi 関係なく問題なく音声を聞くことが出来ました。
あとは配信側と受信側の双方が Raspberry Pi Zero での構築テストのみとなります。
同等のUSBサウンドを手配中のため、届き次第レビュー追加します。
★2021-08-17 追記
USBサウンド届いた。
配信側は有線LAN、受信側は無線LANで Raspberry Pi Zero で試してみた。
配信側(192.168.100.233)コマンド
$ pacmd set-source-volume 1 65537
$ vban_emitter -i 192.168.100.236 -p 6980 -s STREAMTEST -d 1 -r 44100 -n 2 -f 16I
受信側(192.168.100.236)コマンド
$ pacmd set-sink-volume 0 52429
$ vban_receptor -i 192.168.100.233 -p 6980 -s STREAMTEST -d 0 -q 1
結局、配信側の音量は100%、受信側の音量は80%くらいで落ち着いた。
スピーカーではなくイヤホンでの音量となる。
初回テスト時、マイク音量が300%のままでイヤホンつけていたので爆音が発生した。
思わず目が飛び出そうで吹いてしまったのは内緒です。
イヤホン時の爆音、みなさま気をつけましょう。
次回は本番、スピーカーでの運用をしてみる。
-
購入金額
0円
-
購入日
2021年08月11日
-
購入場所
VB-Audio Software
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。