AAC を WAV に変換 — 16 ビット PCM で

AAC を WAV にすると、自分自身について何も語らない生の ADTS ストリームが、先頭 44 バイトにサンプルレート、チャンネル数、正確な長さを記した文書に変わります。音質は良くなりません。AAC はすでに情報を捨てていて、WAV はその残りを 5 倍から 10 倍のサイズで保存するだけです。しかし復号器を持たず、待ってもくれないツールに読ませられるようになります。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 非可逆 サイズと引き換えに細部が失われます。WAVはAACのすべてを保持できません。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。
  • 知っておきたいこと ファイルはずっと大きくなりますが、音は良くなりません。元の圧縮が取り除いたものは失われています。可逆形式にできるのは、残っているものを保つことだけです。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

WAV のヘッダーこそが目的です

RIFF WAVE 仕様は 1991 年からあり、その美点は単調さです。最初のチャンクにフォーマットタグ、チャンネル数、サンプルレート、バイトレート、ブロック境界、ビット深度が書かれ、次のチャンクに続く音声データのバイト数が書かれます。1 サンプルも読まないうちに読み手に必要な情報がすべて揃い、復号器は不要です。データチャンクはそのままサンプルだからです。

Python 標準ライブラリが AAC 用モジュールではなく wave モジュールを持つ理由、libsndfile が科学系オーディオ処理の半分でデフォルトの依存先になっている理由、64 キロバイトの RAM しかない組み込み機器がカードから WAV を再生できる理由は、みなここにあります。このページの変換は、実は音質の話ではありません。ストリームを、自分の形を自ら申告するファイルに変える話です。

生の ADTS ストリームが教えてくれないこと

ISO/IEC 13818-7 で標準化された AAC は符号化方式であり、裸の .aac ファイルは通常 ADTS——7 バイトのヘッダーを持つフレームが連続しているだけの形——です。受信機が放送の途中から参加してどこからでも復号を始められるよう設計されたもので、ファイル全体のヘッダーが意図的にありません。

ディスク上ではこれが 3 つの問題になります。長さが分からないのでソフトはファイルサイズと最初のフレームのビットレートから推定し、ビットレートが可変なら外れます。索引がないのでシークはフレーム境界を探す作業になります。ファイル全体としてのチャンネル構成の宣言もなく、フレームごとにしかありません。WAV はこの 3 つすべてを固定の欄で置き換えます。

この種の収録がどこから来るか

IP カメラやドライブレコーダーは、書き換えなしにどこでも切れる ADTS を書きます。DVR や放送用の記録装置も同様です。HLS 配信は音声を .aac の断片として届けるので、配信を録画すると断片の山が残ります。IVR やテレフォニー基盤もこの形式を出しますし、いくつかの Android 録音ライブラリやコマンドラインの初期設定も同じです。

共通するのは、機械が別の機械のためにファイルを作ったという点で、最終的な読み手が人ではなくスクリプトであることが多いのはそのためです。音自体も音楽ファイルとは違い、モノラルが普通で、音声認識システム向けの 8,000 Hz や 16,000 Hz、放送向けの 32,000 Hz も普通です。どれもそのまま変換され、そのまま保存されます。

符号付き 16 ビット PCM が既定である理由

出力はソースのサンプルレートとチャンネル数を保った符号付き 16 ビットリトルエンディアン PCM です。16 ビットは CD の深度で、あらゆる既定値の前提です。`wave.open` は設定なしにこれを返し、`scipy.io.wavfile.read` は `int16` の配列を返し、ハードウェアの DAC はこれを中心に作られています。

それより深い深度を選ぶ意味はここではありません。AAC は内部で浮動小数点のサンプルに復号されますが、情報量は符号化器が残したもので決まっており、24 ビットや 32 ビットで書けばファイルは半分から倍に膨らむだけで、本物の信号は 1 ビットも増えません。後段の処理が浮動小数点を求めるなら、読み込み時に変換すればディスク上のコストはゼロです。

容量と、RIFF が持つ 4 GB の壁

16 ビットステレオ 44,100 Hz で 1 分あたり 10.1 MB です。モノラルなら半分、サンプルレートが下がればそれに比例して減ります。16,000 Hz モノラルの音声収録なら 1 時間で約 115 MB、同じ 1 時間を CD 品質ステレオで録れば約 600 MB です。品質設定はありません。WAV は圧縮しないからです。

パイプラインを組む前に知っておくべき上限があります。RIFF のチャンクサイズは 32 ビットなので、WAV は 4 GB——CD 品質ステレオでおよそ 6 時間半、16 kHz モノラルならおよそ 37 時間——で頭打ちになります。長時間連続の収録はこれを超えることがあり、バッチの最後で壁に気づくより、先に分割してから変換するほうがよい対処です。

メタデータはほぼ失われますが、ここでは問題になりません

ADTS ファイルの先頭に ID3v2 ブロックが付いていた場合——一部の録音機は付けます——タイトル、アーティスト、アルバム、トラック番号、ジャンル、日付、コメントは WAV の RIFF INFO チャンクへ移せます。カバーアート、アルバムアーティスト、ディスク番号、説明文、歌詞に対応する欄はなく、脱落します。INFO の値は ISO 8859-1 に限られるので、ラテン文字圏外の文字は化けるのではなく単に落ちます。

この読者にとってはたいてい無関係で、時にはそれが望みでもあります。解析に回すデータには説明的なメタデータがない方が扱いやすいことがあります。出所が重要な場合は、半分のツールが無視するチャンクに頼らず、パイプラインで使っているマニフェストの側に記録してください。

途切れた収録と、実は ADTS ではないファイル

ストリーム録音機はフレームの途中で止められることがあり、その場合ファイルはパケットの途中で終わります。変換は破損箇所まで読んで止まるので、たいていはソースより一瞬短い、使える WAV ができます。ファイルを拒否するより良い結果で、長さがわずかに短いのはバグではないと知っておく価値があります。

別の失敗は、そもそも ADTS ではないファイルです。実は MP4 の断片だったり、手で拡張子を変えられた M4A だったりする .aac は、フレームストリームとして解析できず、変換は推測せず「読み込めなかった」と報告します。その場合は M4A として試してください。MP4 の分離器が開いてくれて、本当は何のファイルだったのかが分かります。

符号化器もサーバーも依存物も要りません

この変換は追加のダウンロードを行いません。AAC の復号器はすでに端末が持っているものを使い、WAV を書くのはヘッダーを組み立ててサンプルをコピーするだけなので、音声の変換先の中で唯一符号化器を必要とせず、いちばん速く終わります。

アップロードもありません。カメラや通話の収録には他人の声が入っており、保管場所に制約があることも多い音声です。ファイルをタブの中に留める変換は、他人の基盤に複製を作りません。開発者ツールのネットワークタブが、ページ上の約束ではなく実際の検証になります。

AAC を WAV に変換する手順

  1. お手元の AAC ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に WAV を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった WAV ファイル をダウンロードします。

AAC と WAV——何が変わるか

AACとWAVの比較
AACWAV
正式名称Advanced Audio CodingWaveform Audio
拡張子.aac.wav, .wave
メディアタイプaudio/aacaudio/wav
圧縮方式非可逆 — サイズを画質で買う無圧縮
最初の公開19971991
発行元MPEGMicrosoft
仕様ISO/IEC 13818-7RIFF WAVE
ライセンスオープン標準公開仕様、標準化はされていない
現在の位置づけ現行現行
ビット深度32
音声チャンネル最大 48最大 65,535
ブラウザで開けるかすべてのブラウザすべてのブラウザ
代わりに検討される形式MP3, OPUSFLAC, AIFF

変換先の形式が追加で扱えるもの

WAV は作業のための形式で、AAC は完成したものを渡すための形式です。戻ってくるのはページの絵ではなく、編集できる文字です。たいていはそれがこの変換の理由であり、同時にこの変換の限界でもあります。

結果を開く

WAV は単一の形式ではなく、容れ物です。実際に再生されるのは中に入っているコーデックで、たいていはPCMです。同じ拡張子の 2 つのファイルが同じ機械で違う振る舞いをするのは、そのためです。

開くプログラムが重なりません。AAC はVLC、FFmpeg、iTunesで、WAV はAudacity、Adobe Audition、Reaperで開きます。結果を渡す相手には後者のどれかが要ります。

ファイルサイズと品質

結果は元より大きくなり、そして良くはなりません。AAC はすでに細部を捨てており、WAV は残っているものをそれ以上捨てずに保持します。これは今後の劣化を止めますが、すでに起きた劣化を戻しはしません。

どちらの形式が何のためのものか

2 つは狙っている用途が違います。AAC は完成したファイルの受け渡し、ストリーミング、スマートフォン、WAV は編集と長期保存です。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。

AAC は MPEG の形式です(1997 年に登場)。 ISO/IEC 13818-7 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

WAV は Microsoft の形式で、1991 年から使われています。規定は RIFF WAVE です。Audacity、Adobe Audition、Reaperがこの形式を読めます。

AAC から WAV:よくある質問

AAC ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

AAC から WAV への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

AAC を WAV に変換すると品質は落ちますか。

WAV は圧縮するので、データはいくらか失われます。初期設定では気づかない程度ですが、確実にしたい場合は品質を上げてください。 ファイルはずっと大きくなりますが、音は良くなりません。元の圧縮が取り除いたものは失われています。可逆形式にできるのは、残っているものを保つことだけです。

WAV に変換すると品質は良くなりますか。

結果は元より大きくなり、そして良くはなりません。AAC はすでに細部を捨てており、WAV は残っているものをそれ以上捨てずに保持します。これは今後の劣化を止めますが、すでに起きた劣化を戻しはしません。

WAV ファイル の中に入っているコーデックは何ですか。

WAV は単一の形式ではなく、容れ物です。実際に再生されるのは中に入っているコーデックで、たいていはPCMです。同じ拡張子の 2 つのファイルが同じ機械で違う振る舞いをするのは、そのためです。

WAV ファイル はそのあと編集できますか。

WAV は作業のための形式で、AAC は完成したものを渡すための形式です。戻ってくるのはページの絵ではなく、編集できる文字です。たいていはそれがこの変換の理由であり、同時にこの変換の限界でもあります。

これらのフォーマットについて