Base64 を MP3 にデコードする方法
- Base64 または data URI に Base64 を貼り付けます。素の Base64 でも
data:audio/mpeg;base64,…形式の URI 全体でもよく、改行があっても構いません。 - ファイル情報の下にあるプレーヤーで再生を押します。ブラウザがファイルの先頭を読み込むとすぐに 再生時間 が表示されます。
- 注意書きの欄を確認します。音声が MP3 でなければ、その正体が表示されます。
- ファイルをダウンロード を押して .mp3 を保存するか、
<audio>要素用に data URI としてコピー を押します。
すべてブラウザ内で行われます。ページには Cloudflare のページビュー計測以外のネットワークリクエストが許されていないので、録音データは手元のマシンから出ません。
MP3 の判別方法
MP3 ファイルには決まった 1 つのシグネチャがありません。ID3v2 タグで始まるか、最初の音声フレームのヘッダーで直接始まるかのどちらかです。
| Base64 の先頭 | 先頭のバイト | 意味 |
|---|---|---|
SUQz | ID3 | 音声の前の ID3v2 タグ:曲名、アーティスト、多くの場合カバーアート |
//s または //o | FF FB、FF FA | MPEG-1 Layer III のフレーム。32~48 kHz の一般的な MP3 |
//M または //I | FF F3、FF F2 | MPEG-2 Layer III。低いサンプリングレート(16~24 kHz)で、音声によく使われます |
/+M | FF E3 | MPEG-2.5 Layer III、8~12 kHz |
//E または //k | FF F1、FF F9 | MP3 ではありません:ADTS ストリームの AAC です |
音声合成の出力やボイスレコーディングには ID3 タグがないことが多く、いきなり //M や //s で始まります。ID3 タグのカバーアートがファイルの大半を占めることもあります。エンコード前にそれを取り除く方法は MP3 を Base64 に変換 で説明しています。
MP3 ではなかった場合
MP3 と書かれたデータが実は別の形式で、拡張子を信じるプレーヤーが再生を拒否することがあります。ツールは実際の形式を報告し、正しく保存するためのボタンを表示します。
| 注意書き | 正体 |
|---|---|
| 「これは MP3 ではなく M4A のようです。」 | MP4 コンテナに入った AAC 音声。スマートフォンや多くのアプリで録音したもの |
| 「これは MP3 ではなく WAV のようです。」 | たいていは無圧縮の音声。CD 品質なら 128 kbit/s の MP3 の約 11 倍のサイズ |
| 「これは MP3 ではなく OGG のようです。」または「…Opus のようです。」 | Ogg Vorbis か Opus。Web やチャットアプリでよく使われます |
| 「これは MP3 ではなく WebM のようです。」 | ブラウザでの録音。たいていは WebM に入った Opus |
| 「これは MP3 ではなく AAC のようです。」 | 生の AAC ストリーム(.aac) |
.m4a としてダウンロード(または提示された拡張子のボタン)を押すと、内容に合った拡張子で保存できます。本物の MP3 に変換するには、ffmpeg のようなエンコーダーが必要です:ffmpeg -i input.m4a -b:a 128k output.mp3。
再生時間とビットレート
再生時間は、フレームヘッダーを読むブラウザのメディアエンジンから得ています。固定ビットレートのファイルなら正確です。可変ビットレートの MP3 は通常、フレーム数を記録した Xing ヘッダーか VBRI ヘッダーを持っています。そのヘッダーがない場合、ブラウザは最初のフレームから長さを推定するので、再生が最後に達するまで、数値が大きくずれることがあります。
デコード後のサイズを長さと照らし合わせて確かめることもできます。128 kbit/s なら、1 分の音声は 960,000 バイト、Base64 で約 128 万文字です。任意のサイズについての Base64 の計算は サイズ計算ツール で行えます。
コマンドラインで MP3 をデコードして再生時間を読む
base64 -d voice.b64 > voice.mp3
ffprobe -v error -show_entries format=duration,bit_rate -of default=nw=1 voice.mp3
128 kbit/s で 3 秒のテストトーンなら、ffprobe は duration=3.030204 と bit_rate=129216 を表示します。余分な 30 ms と少し高いビットレートは、エンコーダーのパディングと ID3 タグによるものです。シェルでのデコードについては Bash での Base64 で、ほかの音声形式については Base64 を音声に変換 で詳しく解説しています。
よくある質問
Base64 を MP3 ファイルに変換するには?
上に Base64 を貼り付け、再生できることを確認して ファイルをダウンロード を押してください。data URI や開いたテキストファイルから名前が得られない限り、ファイルは decoded.mp3 として保存されます。
このページのサンプルが無音なのはなぜですか?
無音を収めた 1 秒間の本物の MPEG 音声フレームで、プレーヤーと形式判別の動作を見せるためのものだからです。実際の音を聴くには、自分の Base64 を貼り付けてください。
`audio/mp3` は有効な MIME タイプですか?
MP3 の登録済みの MIME タイプは audio/mpeg です。ブラウザは data:audio/mp3;base64,… も受け付けますし、このツールも警告なしでデコードしますが、ダウンロードと data URI としてコピー では audio/mpeg を使います。
曲名やアーティスト名は表示されますか?
いいえ、ID3 タグは表示しません。ただし、ダウンロードしたファイルには残っているので、音楽プレーヤーでは曲名、アーティスト、カバーアートがいつもどおり表示されます。