YouTubeの音声仕様の背景について考える

前回の記事では、PC版YouTubeにおける音声形式についてご紹介しました。今回は、その仕様がどのような背景から採用されたのかを想像してみたいと思います。YouTube側からの解説はなく、ユーザーにも内部の詳細が見えにくいため、あくまで推測の域を出ない話にはなります。

全体を通して見ると、YouTubeは良い音質を保ちつつ、音声が再生されるまでの遅延を減らし、システムへの負荷を抑え、互換性を維持しているようです。

コーデックについて

YouTubeで主に用いられているのは、Opusコーデックです。Opusとはデータを節約する技術のことで、インターネット上でリアルタイムに音声をやり取りするために開発されたものです。遅延が少なく、圧縮されても品質を保つことができ、さらに無料で利用できる点などが、オンラインサービスで広く採用されている理由です。

データを小さくして通信量を抑えつつ、低遅延で高音質のサービスを提供できることは、YouTubeの基盤となります。Opusは遅延と音質に関してAACより優れているので、その利用は開発者にもユーザーにもメリットがあります。また、ライセンスに関する制約がないため、収益化の面でも利点があります。動画共有サービスであるYouTubeにとって、Opusは最適な選択といえるでしょう。

しかし、前回の調査によると、YouTubeはAACコーデックを併用していることが分かりました。生放送などのリアルタイムコンテンツで見られましたが、OpusではなくAACを選択している理由は何でしょうか。

これもおそらく、遅延を減らし、音質を維持するためです。ライブ配信では長らくAACが使われYouTubeの公式ヘルプでもAAC(またはMP3)が推奨されています。Facebook, Twitchといった他の配信プラットフォームでもAACが求められていますし、配信者からYouTubeへAAC形式の音声が送られてくるのは確実です。ここで、YouTubeがそのままの状態で視聴者のデバイスへ受け渡せばどうでしょうか。変換処理も不要ですから、遅延は減り、音質も変わらないはず。よって、リアルタイムコンテンツにはAAC形式が使われていると考えられます。

ちなみに、YouTubeはリアルタイムでない動画にもAAC形式を用意しています。これは、どんなデバイスを使っているユーザーにもコンテンツを提供するためと考えられます。古いデバイスや一部ブラウザの中にはOpusに対応していないものがありますが、AACは広くサポートされているため、再生できるのです。対応していなくてもOpusデータをアプリ上で変換するという対策はできそうに思いますが、処理に時間がかかり、変換ツールの準備も必要です。世界中に音声を行き届かせるためには、AACは不可欠なのでしょう。

また、Apple社の影響も大きいと思います。Appleは長年、iPodなどの音楽プレイヤーでAACを採用してきました。OpusはiOS11からサポートされているはずですが、iPhone上のYouTubeは依然としてAAC形式のデータを提供しています。私のiPhone12のアプリ版YouTubeで調べても、生放送だけでなく通常の動画までAAC形式で再生されることを確認しました。Appleユーザーを考慮すれば、AACは残すべき存在かもしれません。

サンプリングレートについて

YouTubeにおける動画と生放送では、サンプリングレートが異なります。具体的には、動画のサンプリングレートは48,000Hz、生放送やその他のリアルタイムコンテンツでは44,100Hzと設定されています。この違いはどこから来るのでしょうか。

これは、使用されるコーデックと配信側の設定によるものと考えられます。動画の音声データはOpus形式であり、Opusの内部処理は48,000Hzで行われます。再生時にサンプリングレートを変更する必要もないので、48,000Hzでそのまま出力するのが自然です。一方、ライブ配信における音声はAAC形式で届きます。技術的にはAACでも48,000Hzを使用することが可能ですが、配信者向けのガイドラインでは44,100Hz(ステレオ音声)での送信が推奨されています。YouTubeがそのままの状態で音声を届けるとなれば、配信時だけでなく視聴時にも44,100Hzのサンプリングレートが使用されることになります。

では、なぜYouTubeはライブ配信で44,100Hzを推奨しているのでしょうか。一つの理由として考えられるのは、デバイスの負荷を軽減するためです。44,100Hzでは1秒間に44,100のデータサンプルがあり、48,000Hzの場合は48,000のデータが存在します。この差により、録音や再生をするときに約9%のデータ処理量を減らすことができます。また、44,100Hzまでしか対応していないデバイスが市場に存在するため、仮に48,000Hzを採用すると、配信が困難になるクリエイターが出てきてしまいます。こうした互換性の観点からも、44,100Hzが適切な選択だと考えられます。

ビット深度について

YouTubeでは、動画の音声は32ビット浮動小数点数形式、リアルタイムコンテンツの音声は16ビット整数形式で再生されています。これは音のデータの精密さを示しており、ビット数が多ければ多いほど、より細かいデータを正確に保存することができます。また、浮動小数点数形式は、整数形式に比べてより大きな範囲の数値を扱うことができるため、音の情報をより詳細に維持することができます。ビット深度はOpusやAACで送られてきた音声データを再生するときに、YouTube側が指定する設定となっています。

リアルタイムコンテンツでビット深度が16ビット整数に設定されている主な理由は、デバイスへの負荷を軽減するためだと考えられます。YouTubeから配信される圧縮された音声データは、ユーザーのデバイスで元の状態に戻される必要があります。32ビット浮動小数点数形式は、音質を保持する能力は高いですが、16ビット整数形式と比較してサイズが大きく、処理も複雑になります。具体的には、整数であれば掛け算や割り算が容易に行えますが、浮動小数点数の場合は各数値について仮数部と指数部(大きな数を表す方法)を管理するステップが必要になります。このためより多くの計算処理を必要とします。

現代のCPUは高速であり、多くの最適化が施されているため、この違いが大きな問題を引き起こすことは少ないかもしれません。しかし、リアルタイム性が求められるライブ配信のようなコンテンツでは、よりシンプルで処理負荷の低い16ビット整数形式が無難と考えられます。これにより、視聴時のラグや処理落ちのリスクを減らすことができ、ユーザー体験が向上するでしょう。なお、音質に関して言えば、32ビット浮動小数点数形式のほうが16ビット整数形式よりも細かなデータが出力されるので音は正確ですが、聞き取れる違いになるかは微妙なところです。

まとめと次回予告

YouTubeは高音質の提供に力を入れつつも、処理速度やシステム負荷を考慮した設計を採用しているようですね。使用されるコーデックにはOpusとAACがあり、これらは音質の良さと汎用性を兼ね備えています。また、サンプリングレートやビット深度についても、効率的な処理とライブ配信の慣例を満たす方向で調整されていることが感じられます。

今回はかなり専門的な内容に触れてしまいましたが、技術的な背景を理解すると、YouTubeがいかにユーザー体験を重視しているかが見えてきます。さすがGoogleさんですね!私たち視聴者にとっては、コンテンツを存分に楽しむことが大切かもしれませんね。次回はスマートフォン版のYouTubeの音声仕様について調べた結果をご紹介します。ここまでお読みいただきまして、ありがとうございました。