Base64 音声を再生する方法
- Base64 または data URI に Base64 か
data:audio/…;base64,形式の URI を貼り付けます。長い文字列は .txt ファイルを開く で読み込めます。ページを開いた時点で、2 音だけの短い WAV サンプルが読み込まれています。 - ファイル情報の下にプレーヤーが表示されます。ブラウザがヘッダーを読み込むと、再生時間 に
0:03.0のような長さが表示されます。 - ファイル名、拡張子、MIME タイプ は判別した形式から入力されます。必要に応じて変更してください。
- 音声を保存するには ファイルをダウンロード を、
<audio src>用の文字列が欲しい場合は data URI としてコピー を押します。
音声のデコードと再生はブラウザ内で行われます。ページの Content Security Policy が Cloudflare のページビュー計測を除くすべてのネットワークリクエストをブロックするので、ここから録音データがどこかへ送られることはありません。
ブラウザで再生できる形式
プレーヤーはブラウザ自身の <audio> 要素なので、再生できるかどうかはブラウザ内蔵のデコーダー次第です。現行のバージョンはほとんどの形式に対応しています。
| 形式 | Base64 の先頭 | Chrome、Edge、Firefox | Safari |
|---|---|---|---|
| MP3 | SUQz(ID3 タグ付き)、//s、//M | 対応 | 対応 |
| PCM サンプルの WAV | UklGR | 対応 | 対応 |
| M4A に入った AAC | AAAAHGZ0eXBNNEEg など | 対応 | 対応 |
| FLAC | ZkxhQw | 対応 | 対応 |
| Ogg Vorbis | T2dnUw | 対応 | Safari 18.4 以降 |
| Ogg または WebM に入った Opus | T2dnUw、GkXfo | 対応 | バージョンとコンテナによって一部対応 |
| AMR(古い携帯電話の録音) | IyFBTVIK | 非対応 | 非対応 |
| ADPCM や GSM の WAV | UklGR | ほぼ非対応 | ほぼ非対応 |
WAV はコーデックのフィールドを持つコンテナなので、同じ .wav でもファイルによって挙動が違うことがあります。たとえば Chrome は電話用の µ-law や A-law の WAV も再生しますが、ADPCM は再生しません。ブラウザがデコードできないファイルでは、再生時間 が「該当なし」になり、プレーヤーの上に「お使いのブラウザはこの AMR ファイルを再生できません。ダウンロードしてメディアプレーヤーで開いてください。」という注意書きが表示されます。上の表の形式はすべて VLC や ffmpeg で扱えます。
動画コンテナに入った音声
音声がいつも音声の形式で届くとは限りません。Chrome の MediaRecorder で作ったブラウザ録音は、デフォルトでは中身が Opus の WebM です。また、AAC を M4A のブランドなしで MP4 ファイルに包むサービスもあります。その場合ツールは「これは音声ではなく WebM のようです。」や「これは音声ではなく MP4 のようです。」と表示し、その拡張子でのダウンロードボタンを出しますが、プレーヤーはそのまま使えます。寸法の行には 音声のみ と表示されます。.webm や .mp4 として保存するのが正解で、ほとんどの音楽プレーヤーはこれらのファイルも開けます。
ツールが単なる Binary と判別しても、コーデックが分かっているなら、MIME タイプ にその MIME タイプ(例:audio/ogg)を入力してください。その形式用の音声プレーヤーでプレビューが作り直されるので、推測が正しいかをすぐ試せます。
ヘッダーのない生の音声
音声認識や音声合成の API の中には、WAV ヘッダーを付けずに生のサンプル(多くは 16 または 24 kHz の 16 ビット PCM)を返すものがあります。こうしたバイト列にはシグネチャがないため、ツールは「音声ではないようです(検出:Binary)」と表示し、何を使っても再生できません。解決策は、API のドキュメントに記載されている正しいサンプリングレートでヘッダーを付けることです。Base64 を WAV に変換 で、数行の Python で行う方法を紹介しています。
Base64 音声はどこから来るのか
音声合成(TTS)API は、合成した音声を JSON の Base64 フィールドで返します。チャットやメッセージアプリのエクスポートも、ボイスメッセージを同じ形で保存しています。Web アプリは短い効果音を data:audio/… 形式の URI としてコードや CSS に埋め込みますし、ブラウザで録音した音声は JSON リクエストの Base64 としてサーバーに送られることがよくあります。逆に音声ファイルから文字列を作るには、音声を Base64 に変換 を使ってください。
コマンドラインでコーデックを確認する
ファイルが再生できないときは、ffprobe で中のコーデックが分かります。
base64 -d clip.b64 > clip.bin
ffprobe -v error -show_entries stream=codec_name,sample_rate,channels -of csv=p=0 clip.bin
電話の録音なら adpcm_ima_wav,8000,1 のように表示され、ブラウザが再生をあきらめた理由が分かります。通常の PCM に変換すれば、どこでも再生できるようになります:ffmpeg -i clip.bin -c:a pcm_s16le clip.wav。その他のシェルでの手順は Bash での Base64 に、形式の詳細は Base64 を MP3 に変換 にあります。
よくある質問
Base64 の音声文字列を再生するには?
上の入力欄に貼り付けて、表示されたプレーヤーで再生を押してください。プレーンな Base64 でも data:audio/…;base64, 形式の URI でも構いません。形式はバイト列から判別します。
Base64 の音声が再生できないのはなぜですか?
原因は 2 つのどちらかです。中のコーデック(AMR、ADPCM や GSM の WAV など)に対応するデコーダーがブラウザにないか、データがファイルヘッダーのない生のサンプルです。どちらなのかはプレーヤーの下の注意書きで分かります。下の表と、ヘッダーのない音声についての節を参照してください。
Base64 音声の正しい MIME タイプは?
形式によります。MP3 は audio/mpeg、WAV は audio/wav、Ogg Vorbis と Opus は audio/ogg、M4A は audio/mp4、FLAC は audio/flac です。デコード後は、判別した形式に合うものが MIME タイプ 欄に表示されます。
Base64 音声の再生時間を調べるには?
ここでデコードしてください。ブラウザがファイルのメタデータを読み込むとすぐに、再生時間 の行に分と秒が表示されます。コードでは、ファイルにデコードしてから ffprobe -show_entries format=duration を実行します。