如何把音频转换为 Base64
- 把音频文件拖到框中,或用文件选择器选择一个或多个文件。MP3、WAV、OGG、M4A、AAC 和 FLAC 都可以。
- 在预览中播放,确认是你要的那段音频。
- 输出为 默认是 Data URI。用于 API 时选择 纯 Base64,需要名称、类型、大小和数据一起输出时选择 JSON。
- 点击 复制输出。较长的录音请使用 另存为 .txt。
从 Base64 识别音频格式
| 格式 | MIME 类型 | Base64 开头 |
|---|---|---|
| 带 ID3 标签的 MP3 | audio/mpeg | SUQz |
| 不带标签的 MP3 | audio/mpeg | // 加一个字母,例如 //uQ |
| WAV | audio/wav | UklGR,第 12–16 个字符为 XQVZF |
| Ogg(Vorbis、Opus) | audio/ogg | T2dnUw |
| FLAC | audio/flac | ZkxhQw |
| M4A(AAC) | audio/mp4 | AAAA + 一个字符 + GZ0eXBNNEEg |
| WebM 音频 | audio/webm | GkXfo |
data URI 使用浏览器为该文件报告的 MIME 类型。如果浏览器没有报告,工具会根据扩展名选择一个。MP3 和 M4A 中的 AAC 在所有当前浏览器中都能播放;Ogg、FLAC 和 WebM 的支持情况也不错,但没那么普遍,所以请测试你的用户实际使用的格式。
Base64 音频适合用在哪里
- 点击声、通知提示音和游戏短音效可以内联在单个 HTML 文件中,这样页面或游戏不需要服务器,一个文件就能运行。
- 语音转文字、翻译和音频分析服务通常接受 JSON 字段中的 Base64 录音,同时附上编码格式和采样率。
- 把一小段样本存为 Base64 常量,就能测试音频处理流程,而不必在仓库里放二进制文件。
网站上的音乐、播客或任何超过几秒的内容,请直接链接文件。浏览器会流式播放链接的文件,并按范围分段获取,而 data URI 必须完整载入内存后才能开始播放。
编码后的音频有多大
Base64 是文件大小的 4/3,所以长度随码率而定:
| 音频 | 10 秒 | Base64 |
|---|---|---|
| MP3,128 kbps | 160,000 字节 | 213,336 个字符 |
| WAV,16 kHz 单声道 16 位(语音) | 320,044 字节 | 426,728 个字符 |
| WAV,44.1 kHz 立体声 16 位(CD) | 1,764,044 字节 | 2,352,060 个字符 |
一分钟 CD 音质的 WAV 编码后超过 1400 万个 Base64 字符。各格式的具体细节见 MP3 转 Base64 和 WAV 转 Base64,Base64 转音频则可以播放或保存你收到的 Base64 字符串。
在 JavaScript 中播放 Base64 音频
const beep = new Audio("data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2...");
button.addEventListener("click", () => beep.play());
浏览器会拦截没有用户操作就开始播放的音频,所以请在点击或按键的处理函数中调用 play()。解码以及其他写法见 JavaScript 中的 Base64。
常见问题
如何在 HTML 中播放 Base64 音频?
把 data URI 放进 <audio> 元素的 src 中:<audio controls src="data:audio/mpeg;base64,SUQz..."></audio>。在 JavaScript 中,new Audio(dataUri).play() 的效果相同,只要它在用户交互之后执行即可。
哪种音频格式的 Base64 最短?
压缩格式。按每秒声音计算,MP3、AAC(M4A)和 Opus 比 WAV 或 FLAC 小很多倍,而 Base64 对每种格式都同样增加三分之一。对于语音,低码率的单声道文件最短。
可以一次转换多个音频文件吗?
可以。把它们一起拖进来,用 显示 在列表中选择其中一个,或者用 全部复制为 JSON 得到一个包含每个文件名称、类型、大小和 Base64 的数组。这很适合小游戏中的音效表。