全4814文字
PR

無音は通信せず、ビットレートはZoomより低いが音質はむしろ優れる

 次にClubhouseの通信パケットの送り方を見ていこう。面白いのは無音なら何も送らない点だ。静粛な状態では一切パケットが流れない。逆にルームに1人だけで誰もいない状態でも、何かしゃべるとサーバーにパケットが送られる。これはオーディエンス側も同じでスピーカーが何人居ても全員が無音なら何も送られてこない。

Clubhouseの通信の監視結果の一部
Clubhouseの通信の監視結果の一部
状況を変えて通信先のIPアドレスとポート番号が変化するか、パケット送出数、内部などを観察した(出所:著者)
[画像のクリックで拡大表示]

 会話が続いている状態でClubhouseの1人分の音声パケットの流量はおおむね毎秒50個である。これは音声CODECのOpusでフレームサイズ20msに設定した時のパケット流量と一致する。Clubhouseの音声ストリームのデータ流量(ビットレート)は1スピーカーで約50kbps(音声部分は30kbps)。パケットサイズの設定もビットレートも観測した限りでは固定で変化しない。

 Opusの20ms設定は音声チャットアプリなどで標準的に使われる設定だ。実はZoomも同じ20ms設定を使う。つまりここでもClubhouseは奇をてらった実装ではなく、一般的な設定を使っており、Zoomや他のアプリと違いがない。

 フレームサイズ20msが音声チャットでデファクトなのは、ほとんど端末で使えて遅延が小さいからだ。Opus自体は5msまで設定可能だが、20msより小さい設定では、よく使われる音声処理ライブラリが対応せずデータを取得できないことがある。こうなるとドライバー類を自分で手当する必要があるため実装が大幅に面倒になるのだ。フレームサイズを長くすると圧縮率を高めやすく、処理が軽くなる(端末に負荷を掛けない)利点はあるが、遅延はその分大きくなってしまう。会話で使う場合はリアルタイム性が損なわれる。

* 遅延を気にしない音楽アプリなどでは圧縮率を高められるので320msなどが使われることがある。

 ClubhouseとZoomの違いはビットレートだ。Zoomの音声は1スピーカーあたり100k~150kbpsで、回線品質によってビットレートを変えている。Clubhouseではこうした動きは観測できなかった。またZoomは、誰もしゃべっていない状態でもアプリはずっと何らかのパケットを送り続けている。これは推測だがZoomのこの機能は会話のタイミングを外から検知されないためのセキュリティー対策の一種かもしれない。

 これは体感と矛盾する。常識的にはビットレートの高いZoomのほうが音質はよいはずなのだが、筆者も実験に協力してくれた友人たちもClubhouseのほうが音質がよいと感じたからだ。同じスマホを使ってZoomと音質を比較してみても、明らかにClubhouseの会話の音質が優れている。この矛盾がなぜ生じるかは分からない。

次回に続く