おはようございます!!
先日、これらの記事を書かせていただきました。
Google Home互換機のJBL LINK 500を買って使ってみた話ですね。
それはもう、時間のある限りサルのように音楽を聞いています。
ありがたく使わせていただいております。(いらすとや様に感謝!)
ちなみに、LINK500の中身はGoogle Homeアシスタントなので、音楽はGoogle Play MusicやSpotifyを聞いてます。
でも、時々は作業の手を休めて、ノートパソコンやiPadのYoutubeの動画を見ながら聞いてみたくなります。(※ Bluetooth接続です)
・・・・で、ある日、気づいてしまいました!!動画と音がずれている事に!!
某A○BのMVだと歌と口があってないのはよくあること(こらこら)なのですが、このMVのギター演奏を見ているとあまりにも不自然に感じました。
そういえば、Bluetoothでは遅延があると聞いた事がありましたので、ちょっと真面目に調べてみることにしました。
目次
Bluetoothの遅延とは??
Bluetoothは低消費電力で電子機器を無線で接続する規格で、パソコンやスマホなどの家電製品ではワイヤレススピーカーやイヤホン、マウスなどで使われています。
無線といえばWifiなのですが、高速な分消費電力が大きいので、さほど速度を必要としない機器はBluetoothが使われるわけですね。
・・・で、遅延(遅れ)の話です。
音をデジタルで伝送する際にはコーデックという形式でデータが圧縮されます。
よくパソコンで使うような「xxx.ZIP」や、写真などの「xxx.JPG」も同じようなものですね。
圧縮したからには解凍(展開)する必要がでてきます。(※ 冷凍食品の解凍と同じです)
その作業をするのに時間がかかり、機器の性能や使っているコーデックの種類で、遅延時間が異なるようです。
今回のケースの場合、Youtubeの映像はリアルタイムに再生されています。
それに比べると、音声だけがBluetoothでスマートスピーカーに転送されているので、その分遅延が発生したというわけですね。
もちろん、音楽を聞くだけなら全く問題ありません。
動画と音を別々の装置で再生することで問題が発生するわけですね。
どの程度の遅延が発生しているのか?
どうやれば測定できるのか?考えてみました。
ストップウォッチで時間を表示しながら10秒経ったら音が鳴る動画を作ってみるとか、いろいろ考えたのですが、調べてみると既に作っている方がいらっしゃったので紹介させていただきます。
(目に注意) 画面と音声 遅延 テスト動画 Bluetoothオーディオ検証用
一定時間毎に画面のフラッシュと同時に「ピッ!」と音が鳴る動画です。
ズレて見える場合は遅延が発生していることになります。
60fps ヘッドフォンの音ズレチェッカー
白いバーが左右に移動する際に、中央で「ピッ!」と音がします。
これがズレて聞こえる場合は遅延が発生していることになります。
(※ タイトルの「60fpsヘッドフォン」は気にされなくて結構です)
音ズレ確認用動画(30fps、-2000msec~+2000msec)
ー2,000ms(-2秒)から数字がカウントアップし、0になったら「ピッ!」と鳴り、+2,000ms(+2秒)まで進みます。
音が鳴った瞬間が、ずばり遅延時間ですね・・・と言っても、100ms(0.1秒)の桁を見るのが限度だと思います。
ちなみに、この動画をiPadのYoutubeアプリで見た場合は+100~+200ms(0.1~0.2秒)の遅れに見えましたが、他の動画を見ていても遅延は全く感じませんでした。
その後、iPadからJBL LINK500にBluetooth接続して確認したところ、+600~+800ms(0.6~0.8秒)の遅れとなりました。
他の動画でもあきらかに遅れて聞こえます。
これだけ大きいと気になりますね。
音ズレの対策方法は??
いろいろ調べていると、いろいろな話がありました。
- コーデックの種類や機器の種類によって遅延時間が違う
- 某S社のヘッドホンでは旧製品より新製品の方が遅延が大きかった
- 動画再生アプリ(YoutubeやNetflix)を一時停止して再開すると自動的に補正された
前者2つは、まるで製品によって当たりはずれがあるようです。
買ってみないとわからないという嫌な世界ですね。
最後の1つは、私の環境では効果がありませんでした。
そもそも、Bluetoothで接続された機器の音だけが遅れているのに、どうやってアプリは遅延量を検出して動画再生を遅らせる(音声に合わせる)のでしょうか?
ちなみに、多くの情報はBluetoothのイヤホンばかりで、スマートスピーカーで調べてみると使えないという結論ばかりでした。
それではあまりにも悔しいので、Google Homeアプリを探し回ったところそれらしいものが見つかりました。
以下、Google Homeアプリは新しいバージョン2.6.108で説明させていただきます。
※ JBL LINK500とGoogle Homeを分けて書かせていただきます。
あえて分けたのには理由があるということですね。
JBL LINK500
Google Home互換機とはいえ、ファームが違いますので注意が必要ですね。
では、Google Homeアプリから見ていきます。
ここから、書斎(JBL LINK 500)の方ですね。
右上の歯車からデバイス設定にはいります。
音声の設定のところまで来ましたが、それらしき項目はありません。
これであきらめるかと思ったのですが、念のためにGoogle Homeの方を確認してみました。
Google Home
こちらも念の為にファームを確認しておきます。
では、Google Homeアプリから見ていきます。
ここから、リビング(Google Home)の方ですね。
右上の歯車からデバイス設定にはいります。
音声の設定のところまでくると、JBL LINK 500と全く違いました!!
グループ遅延の修正!これですね!!
※ Google Homeではよくあることですが、開くとタイトルが変わりした。
これで修正できそうです!!
ちなみにスライダーは・・・
200msまで補正できるようです・・・あれ?200ms??
ちょっと気になったのですが、先程の動画で試してみました。
確かに補正できます。ただし、プラス(遅れる側)にしか補正できません。
そもそも動画に対してBluetooth音声は遅れる問題なので、これでは意味がありません。
項目名にあった「グループ遅延の修正」の意味から想像するに、複数のGoogle Homeが同時にステレオ再生される環境で、片方に遅延が生じた場合に双方を一致させる為に使う機能だと思われます。
残念ながら、完全にハズしてしまいました。
まとめ
記事にしておきながらなんですが、残念ながら完敗です。
今のところ、打つべき手がありません。
・・・ただ、幸いなことにGoogle HomeはChrome Castが使えるので、これで遅延無しに音だけ伝送できるかも・・・あれ?あれ?うまくいきません。
パソコンは対応してないので、iPhone,iPadからやろうとしたらうまく繋がってくれません。もしかしたら動画を再生できるデバイスにしかCastできない仕組みなのかも?
Google Homerさんの情報ではAndroidならできるとか・・・
Google Chromeはあまり知識が無いので宿題ということで・・・
以上です。
Chrome castではなくAir Playという手もあるのですが、今度はGoogle Homeが受け付けてくれず、相手がAppleのHomePodになってしまいます。(本末転倒)
これでは意味がありませんね。
とりあえず、もう少し弄ってみます。
あと、便乗で記事内にゴソゴソ書いてしまいますが、Google Homeと互換機の違いも気になりますね。Amazon Echoに比べると比較的安心できると思っていたのですが驚きました。
(おわり)