NHKの「らじる★らじる・聴き逃し番組」をiPhponeのイヤフォンで試聴すると特にクラシック楽曲のストリングスに若干の違和感を覚えます。(一方話し声などはクリアーでノイズもなく全く違和感はありません)
「らじる★らじるプレーヤ」でクラシック番組を再生した時のスペクトルを見ると低ビットレート配信でも17khzまで再現されているにも関わらず、違和感を覚えるのは何故ででしようか?
漠然とストリーミング配信故の48kbpsという低ビットレート・コーディック(HE-AAC)に因るものでは無いか?と思われたので、基準音源を用意して、配信フォーマットと同じ 48kbps HE-AAC の条件下でエンコードした場合と通常のAAC-LC 256kbps と対比して、音質評価実験してみることにしました。
「らじる★らじる・聴き逃し番組」配信・音声コーディックを調べる
「らじる★らじる・聴き逃し番組」のストリーミング音質を評価するために、どのような形式の音声コーディックで配信されているか?調べました。
「らじる★らじる・聴き逃し番組」のM3U8ファイルのURLが特定できれば、macOSのターミナルを起動してFFmpegのコマンドライン(黄色文字)に「M3U8ファイルのURL」を記述して実行すれば音声コーディックの情報を調べることができます。
terminal ffmpeg -http_seekable 0 -i “「らじる★らじる・聴き逃し番組」M3U8ファイルURL” (注記:「-http_seekable 0 」オプションを付記しないとエラーになる)
ポイント
以上のFFmpegコマンドラインを実行した結果、下の情報が得られました。
Stream #0:0: Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 48 kb/s
この情報から「らじる★らじる・聴き逃し番組」は、サンプルレート48khz、ビットレート48kbpsのHE-AACでエンコードされて配信されていると考えられます。
ただし、HE-AACは、以下のメモで示す様に v1 と v2 のバージョンがあります。 ビットレートが48kbpsであるところから、多分HE-AAC V1であると思われますが、念の為、両方のバージョンで評価することにしました。
メモ HE-AACについて
Wikipediaによる説明(以下要約)
HE-AAC のWikipediaでは、「 Spectral Band Replication(SBR)技術をAACに組み込むことにより、再生帯域を拡大して主に低ビットレート(128kbps以下[1])での周波数特性(圧縮効率)を大幅に向上させている。」 またSBRのWikipediaによると、「ほとんどの情報が含まれる低い周波数の情報を従来の方式で符号化し、高い周波数の情報は大まかなスペクトル情報のみを符号化して、復号時に低い周波数の情報から予測復元する。」と説明されています。
つまり、HE-AACを自分なりに解釈しますと、高域を維持しつつ、低ビットレートを実現させるために、SBRによって高域補完させる技術と解釈しました。 懸念されるのは、SBRによって大なり小なり高域補完部分に誤差が含まれることが想定されます。 これが、「らじる★らじるプレーヤ」で再生した時のスペクトルを見ると17khzまで再現されているものの、聴感上に何故か(特にクラシックのストリングスに)違和感を覚えることに通じるのかも知れません。
FFmpegサイトによる説明(以下要約)
HE-AACは、High-Efficiency AAC の略で高効率AACの意味で、バージョン1とバージョン2に分けられ、下に示す低ビットレートに最適化されたプロファイルとのこと。 一方、通常のAACは、AAC-LC(Low Complexity)と表現されます。
- HE-AAC v1 :64kbps未満のビットレート(ステレオオーディオの場合)から約48kb/秒まで
- HE-AAC v2:32kbps(再び、ステレオの場合)のビットレートに適している
- AAC-LC:80kbps以上(apple Developerサイトによる)
1 2 |
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a |
1 2 |
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a |
スペクトルの絶対誤差で評価する。 ピュアー音源(Pink-noise)によるHE-AAC音質評価
「らじる★らじる・聴き逃し番組」配信・音声コーディック情報が判ったので、ピュアー音源(Pink-noise)を同じコーディックでHE-AAC変換を行い音質評価すれば、「らじる★らじる・聴き逃し番組」のストリーミング音質を推定評価できるのではないかと考えました。 以下に、その手順と評価結果を示します。
評価用AACファイルの準備
基準音源としてWaveGeneで生成した-20db Pink-noise(24bit 48khzwav 5秒間)ファイルから、配信・音声コーディックと同じサンプルレートとビットレート(48khz、48kbps)のHE-AAC v1 及び v2 で変換したAACファイルと、併せて比較するために通常のAAC(48khz、256kbpsのAAC-LC)に変換したAACファイルを準備しました。
Pink-noise音源のAAC変換を行う FFmpegコマンドラインは以下の通り
1 2 |
ffmpeg -i "pink-noise.wav" -c:a libfdk_aac -profile:a aac_he -b:a 48k "HE-AAC_v1_output.m4a" |
1 2 |
ffmpeg -i "pink-noise.wav" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 48k "HE-AAC_v2_output.m4a" |
1 2 |
ffmpeg -i "pink-noise.wav" -acodec libfdk_aac -vn -ar 48000 -ab 256k -cutoff 20000 "AAC-LC_output.m4a" |
Pink-noiseと変換されたAACスペクトル
- 基準音源のPink-noiseはGrayラインで24khzまで延びています。
- HE-AAC v1 はBrownラインで17khzでCut-Offされています。
- HE-AAC v2 はBlueラインで何故か最も上限周波数が高く21khz付近でCut-Offされています。
- AAC-LC(256kbs)はGreenで、20khzでCut-Offされています。
AACファイル評価方法
Pink-noise基準音源を含めて変換されたファイルをAudacityに取り込み、夫々の周波数解析(スペクトル)を行い基準音源の周波数成分に対するレベル(db)の差分(=絶対誤差)で音質評価します。
Audacityは、スペクトルの周波数成分をテキストファイルに書出すことが出来ますので、Numbersやエクセルで差分計算、グラフ化やエクセルの分析ツールによる統計データを使って評価しました。
真値から測定値までの誤差を絶対誤差と言います。 数式では 絶対誤差=測定値ー真値 で表します。 ここでは、真値が基準となるPink-noise音源の周波数成分に対するレベル値(db)で、測定値がAAC変換された周波数成分に対するレベル値(db)になります。
基準音源(Pink)に対する絶対誤差
SBR領域の絶対誤差のバラツキ解析
ポイント
9khz〜10khzに於けるSBR領域の誤差バラツキのマトメ
- HE-AAC v1 及び v2 共に、略正規分布している。 絶対誤差のバラツキは、若干 v2 が多く、3σで-6dbの誤差がある。
- 両者とも誤差バラツキ程度(≒5db)から、音楽の種類によっては、聴感上聞き取れるレベルではないか?と思われる。
9khz〜10khzに於けるAAC-LCの誤差バラツキ
ヒストグラムと基本統計量を比較すると、HE-AACと比べ1桁以上圧倒的にバラツキが少なく±0.2db以下に収まっており、多分聴感では基準音源との差は区別できないレベルであると思われる。
リアル音源によるHE-AAC音質評価
Pink-noiseでの音質評価から、HE-AACでエンコードするとPink-noiseの結果と同じ様に約8khz以上からSBRの影響が出て基準音源との誤差が出ることが予想されます。 実際のリアル音源でHE-AACのSBRの影響ははどうなるか?聴感上含めて比較テストしてみます。 夫々のAAC変換は、Pink-noiseで行ったFFmpegコマンドラインと同じオプションでエンコードしています。
評価するリアル音源、1959年録音のカラヤンとベルリン・フィルが演奏した「ドヴォルザークのスラヴ舞曲第1番ハ長調 Op.46-1」CD音源(=リッピングしたFlac 16bit 44.1khzファイル)を基準音源として、HE-AACとAAC-LC(256kbps)でエンコードしたファイルで音質比較します。
リアル・基準音源
CDからFlac(16bit 44.1khz)にリッピングした音源です。
基準音源と変換されたAACスペクトル
基準音源に対する絶対誤差
評価ポイント
- HE-AACのSBR領域の評価
絶対誤差にバラツキが生じて約±10db程の劣化が見られた。 - iPhone SE2 純正イヤフォンで試聴比較
iPhone SE2 純正イヤフォンでサウンド評価したところ、HE-AACに高域(8khz以上)に絶対誤差上の劣化がある筈にも関わらず特段の違和感は感じられなかった。
我が家のB級オーディオで試聴比較
ffmpeg -i "AACファイル名.m4a" -vn -ar 44100 -sample_fmt s16 "変換FLACファイル名.flac"
(2022/10/24追記)
試聴結果
Sony HAP-Z1ES HDDオーディオプレーヤに夫々のFlacファイルを転送して、「我が家のB級オーディオ」で比較試聴してみました。
CDからリッピングしたオリジナルFlacと比較して、特徴的な音質差は奥行き感と解像度感でした。 最も奥行き感が乏しく聴こえたのはHE-AAC v2 でした。 また、シンバルの質感も劣化して聴こえました。
HAP-Z1ES
詳しくは、ここをクリック
総合して、音質順位は以下になりました。
HE-AAC 音質評価のマトメ
『NHKの「らじる★らじる・聴き逃し番組」を試聴すると特にクラシック楽曲のストリングスに若干の違和感を覚える。』と言うことから、低ビットレートで配信しているHE-AACに原因があるのでは無いかと思い、今回の評価実験を行ったものでした。
確かに、スペクトルデータによる基準音源との絶対誤差を見ると、HE-AACのSBR領域に劣化が認められることが判りました。 また、リアル音源を我が家のB級オーディオで試聴してみると基準音源と比較してHE-AACは、奥行き感と解像度感に差異を感じる結果でしたが、iPhone SE2 純正イヤフォンで試聴比較では、特段の違和感は感じられませんでした。(但し、駄耳に因るものかもしれません)
このことから、HE-AAC(48kbps)のストリーミング配信を聴く場合、専らスマホのイヤフォンを使用するので、殆ど差異が認められなかったHE-AACの優秀性を示す結果になりました。
しかし、この結果は、NHKの「らじる★らじる・聴き逃し番組」はHE-AAC(48kbps)のストリーミング配信であれば、iPhoneのイヤフォンで聴いた時、音質に違和感を感じない筈でありながら、実際は違和感を感じるのは何故か? 残念ながら、今回の実験では特定に至りませんでした。 若しかすると、NHKの音源ソースそのものに起因しているのかも知れません。
以上、「らじる★らじる・聴き逃し番組」のストリーミング音質・評価実験の顛末でした。