Cách sử dụng
- Thả tệp âm thanh vào vùng tải lên hoặc nhấp để chọn tệp: MP3, WAV, OGG, M4A, FLAC hoặc định dạng khác.
- Phát thử trong trình phát xem trước để chắc chắn đó là đúng âm thanh bạn cần.
- Chọn data URI cho thẻ audio trong HTML, hoặc Base64 thuần cho yêu cầu API.
- Sao chép kết quả hoặc tải xuống dưới dạng tệp .txt.
Phát âm thanh Base64 trên trang web
Data URI có kiểu MIME âm thanh dùng được ở bất kỳ đâu trình duyệt cần URL của một tệp âm thanh:
<audio controls src="data:audio/mpeg;base64,..."></audio>
// JavaScript: phát một âm thanh ngắn khi nhấp vào nút
const click = new Audio('data:audio/wav;base64,...');
button.addEventListener('click', () => click.play());
Trình duyệt thường chặn phát âm thanh trước khi người dùng tương tác với trang, nên hãy gọi play() từ trình xử lý sự kiện nhấp chuột hoặc phím thay vì gọi ngay khi trang vừa tải.
Những trường hợp nên dùng âm thanh Base64
- Âm thanh giao diện ngắn. Tiếng nhấp, chuông thông báo và tiếng bíp báo lỗi chỉ vài kilobyte có thể nằm ngay trong gói JavaScript, nhờ vậy chúng phát tức thì mà không cần thêm yêu cầu nào.
- Ứng dụng ngoại tuyến và ứng dụng một tệp. Trò chơi, kiosk, gói e-learning và báo cáo HTML phải hoạt động từ một tệp duy nhất mà không cần máy chủ có thể nhúng sẵn âm thanh bên trong.
- API chuyển giọng nói thành văn bản. Nhiều dịch vụ nhận dạng giọng nói trên đám mây nhận một bản ghi ngắn dưới dạng trường Base64, thường có tên
contenthoặcaudio, trong yêu cầu JSON. Các dịch vụ này thường yêu cầu một định dạng, tần số lấy mẫu và số kênh cụ thể. Công cụ này mã hóa tệp đúng như hiện trạng, không chuyển đổi hay lấy mẫu lại. - Dữ liệu kiểm thử. Mã kiểm thử cho phần xử lý âm thanh có thể lưu một mẫu rất nhỏ dưới dạng hằng chuỗi.
Khi nào không nên dùng Base64 cho âm thanh
Base64 làm dung lượng tăng thêm khoảng một phần ba, và trình duyệt phải nhận toàn bộ chuỗi trước khi có thể bắt đầu phát. Không có phát trực tuyến (streaming), không có bộ nhớ đệm riêng và không có yêu cầu range để tua. Một tệp MP3 dài 5 phút ở 128 kbps nặng khoảng 4,8 MB, sẽ thành khoảng 6,4 MB văn bản bên trong HTML hoặc JavaScript, và phải tải lại mỗi khi tệp đó thay đổi. Với nhạc, podcast và các bản ghi dài khác, hãy dùng tệp âm thanh thông thường. Theo kinh nghiệm, chỉ nên nhúng những âm thanh dài vài giây.
Định dạng âm thanh và kiểu MIME
| Định dạng | Tiền tố data URI | Ghi chú |
|---|---|---|
| MP3 | data:audio/mpeg;base64, | Nhỏ gọn, phát được trên mọi trình duyệt |
| WAV | data:audio/wav;base64, | Không nén, dung lượng lớn; phù hợp với âm thanh rất ngắn |
| OGG (Vorbis, Opus) | data:audio/ogg;base64, | Nhỏ gọn; các phiên bản Safari cũ không phát được |
| M4A (AAC) | data:audio/mp4;base64, | Nhỏ gọn, được hỗ trợ rộng rãi |
| FLAC | data:audio/flac;base64, | Không mất dữ liệu, lớn hơn nhiều so với MP3 hoặc AAC |
Tùy theo hệ điều hành, một tệp có thể được báo với kiểu biến thể như audio/x-wav hoặc audio/x-m4a. Trình duyệt nhìn chung vẫn phát được các kiểu này, và bạn có thể sửa tiền tố nếu một nền tảng cần kiểu cụ thể.
Câu hỏi thường gặp
Kiểu MIME của MP3 trong data URI là gì?
audio/mpeg, nên data URI bắt đầu bằng data:audio/mpeg;base64,. Trên thực tế bạn cũng sẽ gặp audio/mp3; một số trình duyệt chấp nhận kiểu này, nhưng audio/mpeg là lựa chọn an toàn.Vì sao bản xem trước không phát được tệp của tôi?
Trình phát dựa vào các codec có sẵn trong trình duyệt của bạn. Nếu trình duyệt không hỗ trợ một định dạng, chẳng hạn OGG trên các phiên bản Safari cũ, bản xem trước sẽ không phát ra tiếng, nhưng đầu ra Base64 vẫn là bản sao chính xác của tệp.
Một đoạn âm thanh Base64 có thể dài bao nhiêu?
Công cụ mã hóa được tệp tối đa 100 MB, nhưng như vậy là quá lớn để nhúng. Để nhúng trực tiếp, hãy giữ đoạn âm thanh trong vài giây và vài chục kilobyte. Với API giọng nói, hãy kiểm tra giới hạn cho âm thanh gửi kèm trực tiếp trong yêu cầu, thường thấp hơn nhiều so với âm thanh tải lên kho lưu trữ.
Tôi có thể chuyển MP3 sang WAV ở đây không?
Không. Công cụ mã hóa tệp đúng như hiện trạng, không thay đổi định dạng, bitrate hay tần số lấy mẫu. Hãy chuyển đổi âm thanh trước bằng trình chỉnh sửa âm thanh hoặc công cụ dòng lệnh như FFmpeg, rồi mã hóa kết quả.
Âm thanh của tôi có bị tải lên không?
Không. Việc mã hóa và phát diễn ra trong trình duyệt của bạn, và tệp vẫn nằm trên thiết bị của bạn.