Base64 sang Audio

Dán bất cứ thứ gì API trả về — base64 thô, data URI, bản dump hex, hoặc toàn bộ phản hồi JSON — để nhận một file bạn có thể phát và tải về.

File không bao giờ rời khỏi thiết bị của bạn
0

Công cụ này làm gì

Các speech API, dịch vụ TTS, và không ít công cụ nội bộ trả về âm thanh dưới dạng văn bản — thường là base64 nằm trong một phản hồi JSON — thay vì một file tải về sẵn. Công cụ này nhận đoạn văn bản đó, nhận diện nó thuộc dạng nào, giải mã ngay trên máy, rồi trả lại thứ bạn thực sự dùng được: một file âm thanh bình thường. Dán văn bản vào (hoặc bấm Dùng thử một mẫu để xem thử với một đoạn mẫu trước), nếu nó được nhận ra là âm thanh, bạn sẽ có trình phát, định dạng đã phát hiện, thời lượng, tần số lấy mẫu và số kênh, cùng các nút để tải về.

Không có gì ở đây bị tải lên. Việc phân tích và giải mã đều chạy ngay trong tab trình duyệt của bạn.

Những gì bạn có thể dán vào

Ô dán nhận năm dạng và tự nhận diện bạn đưa vào dạng nào — bạn không cần khai báo trước:

  • Base64 thuần — chỉ là đoạn văn bản đã mã hóa.
  • Một data: URI — dạng data:audio/mpeg;base64,... và tương tự.
  • Một bản dump hex — chuỗi các cặp chữ số hex, có hoặc không có tiền tố 0x hay dấu phân cách.
  • Một mảng byte thô — mảng JSON gồm các số, kiểu [80, 75, 3, 4, ...].
  • Cả một phản hồi JSON, với bất kỳ dạng nào ở trên nằm bên trong, ở bất kỳ tên field nào:
{ "audioContent": "SUQzBAAAAAAAI1RTU0UAAAAP…" }

Trường hợp cuối là phổ biến nhất trong thực tế — sao chép nguyên cả phần thân phản hồi từ một API tổng hợp giọng nói và dán thẳng vào, không cần tự tách field trước.

Còn có một phương án dự phòng cho trường hợp dán vào lộn xộn hơn: nếu không có dạng nào ở trên khớp rõ ràng, công cụ quét toàn bộ văn bản để tìm đoạn liên tục dài ít nhất 64 ký tự trông giống base64 rồi thử giải mã đoạn đó. Đây chính là thứ bắt được payload bị dán kèm một dòng log, kết quả của lệnh curl, hay một đoạn HTML xung quanh.

Cách công cụ tìm payload bên trong JSON

Khi văn bản dán vào phân tích được thành JSON, công cụ duyệt qua mọi giá trị chuỗi và mảng trong đó, dù nằm sâu đến đâu, và chấm điểm từng ứng viên. Một tên field gợi ý liên quan âm thanh — audioContent, speechAudio, voiceData, bất kỳ tên nào chứa "audio", "speech", "voice", "content", "data", "b64" hay "base64" — được ưu tiên ngay cả khi giá trị ngắn. Một field không có tên gợi ý vẫn được kiểm tra, nhưng chỉ khi chuỗi đủ dài để là một payload thật chứ không phải trùng hợp. Nếu có nhiều ứng viên cùng khả thi, mỗi ứng viên được thử giải mã, và công cụ giữ lại ứng viên nào thực sự cho ra một định dạng âm thanh nhận diện được.

Mẹo: Nếu phản hồi API của bạn bọc âm thanh sâu hơn một hai lớp so với bạn đoán — chẳng hạn nằm trong đường dẫn result.audio.content — bạn không cần tự đào nó ra. Cứ dán cả phản hồi vào.

Khi văn bản dán vào không phải âm thanh

Không phải mọi thứ giải mã được thành byte đều là âm thanh. Nếu văn bản dán vào hóa ra là PNG, JPEG, ZIP, hoặc thậm chí một file video (WebM hay MP4) sau khi giải mã, công cụ sẽ nói rõ đó là gì thay vì hiển thị một trình phát lỗi — và với file video, nó dẫn bạn sang công cụ chuyển video sang MP3, vì đó là việc khác. Nếu không có gì trong văn bản giải mã ra được một định dạng nhận diện được, bạn sẽ thấy thông báo đơn giản "không tìm thấy dữ liệu âm thanh" chứ không phải một lỗi im lặng.

Tải gốc hay chuyển đổi

Tải tệp gốc bóc lớp vỏ mà âm thanh đang được bọc trong đó — base64, hex, data URI, JSON — rồi ghi lại đúng byte bên trong, không giải mã âm thanh, không mã hóa lại. Nếu API trả về một luồng MP3 được bọc trong base64, nút này cho bạn đúng luồng MP3 đó dưới dạng file: tức thì, không mất chất lượng, và vẫn hoạt động kể cả khi trình duyệt này không giải mã được codec đó.

Chuyển đổi và tải về đi xa hơn một bước: nó giải mã âm thanh đúng nghĩa rồi mã hóa lại sang MP3, WAV hoặc OGG theo chất lượng bạn chọn — hữu ích khi bạn cần đúng một định dạng cụ thể thay vì bất cứ thứ gì API ban đầu tạo ra.

Payload dài hoặc nặng

Văn bản dán vào giới hạn ở 32 triệu ký tự, tương đương khoảng 24 MB payload — vượt mức đó, ô dán sẽ đề nghị bạn lưu ra file rồi dùng trang chuyển đổi âm thanh thông thường. Trên khoảng 2 triệu ký tự, việc gõ trong ô có thể cảm giác hơi chậm dù việc phân tích vẫn chạy tốt — đó chỉ là do textarea phải xử lý nhiều văn bản, không phải dấu hiệu có gì sai. Sau khi giải mã xong, các cảnh báo âm thanh thông thường cũng áp dụng — âm thanh dài (quá khoảng 30 phút) hoặc nặng (quá khoảng 500 MB) sẽ hiện cảnh báo chứ không chặn bạn làm tiếp.

Không có gì rời khỏi trình duyệt của bạn

Việc phân tích văn bản, giải mã âm thanh, và mọi bước mã hóa lại bạn yêu cầu đều diễn ra tại chỗ, dùng chính bộ máy Web Audio của trình duyệt và một bộ mã hóa WebAssembly chỉ tải khi dùng lần đầu. Không có máy chủ nào trong toàn bộ quá trình này — đó chính là điểm mấu chốt, vì thứ bạn dán vào đây thường là thứ bạn không muốn đưa cho ai khác, như một API key nằm gần đó trong cùng phản hồi, hay giọng nói thật của một người nào đó.

Nếu bạn có sẵn một file âm thanh bình thường thay vì một payload base64, công cụ chuyển đổi âm thanh làm đúng bước giải mã và chuyển đổi đó mà không cần ô dán.

Câu hỏi thường gặp

Công cụ này có miễn phí không?
Hoàn toàn miễn phí. Không cần đăng ký, không watermark, không giới hạn do máy chủ áp đặt. Mọi thứ chạy ngay trong trình duyệt nên không có chi phí nào.
Đoạn văn bản tôi dán vào có bị gửi đi đâu không?
Không. Việc phân tích và giải mã đều diễn ra ngay trên trình duyệt của bạn — không có gì được tải lên. Điều này đặc biệt quan trọng ở đây vì loại dữ liệu này thường là kết quả trả về từ một speech API hoặc một bản ghi âm riêng tư. Nhiều người vẫn quen dán nó vào một chatbot để hỏi bên trong có gì, việc đó lại gửi bản ghi âm giọng nói đó cho một dịch vụ AI của bên thứ ba. Công cụ này không bao giờ làm vậy.
Tôi có thể dán vào những gì?
Base64 thuần, một data: URI, một bản dump hex, hoặc cả một phản hồi JSON có payload âm thanh nằm bên trong — dưới dạng chuỗi base64 hoặc mảng byte thô. Công cụ tự nhận diện bạn đã dán loại nào, bạn không cần chọn định dạng trước.
Công cụ tìm âm thanh trong JSON bằng cách nào?
Nó duyệt qua mọi giá trị chuỗi và mảng trong JSON, ưu tiên những field có tên gợi ý liên quan âm thanh — audioContent, speechAudio, voiceData và tương tự — nhưng không chỉ giới hạn ở đó; một field không có tên gợi ý vẫn được kiểm tra, miễn chuỗi đủ dài để không phải trùng hợp ngẫu nhiên.
Nếu văn bản dán vào không phải âm thanh thì sao?
Bạn sẽ thấy thông báo rõ ràng thay vì một trình phát trống trơn. Nếu byte giải mã ra hóa lại là một định dạng quen thuộc khác — PNG, JPEG, ZIP, thậm chí video — công cụ sẽ nói rõ đó là gì; nếu không, nó báo không tìm thấy dữ liệu âm thanh.
Vì sao nút 'Tải tệp gốc' lại trả về gần như đúng những byte tôi đã dán vào?
'Tải tệp gốc' bóc lớp vỏ base64/hex/data URI và ghi lại đúng những byte bên trong, không giải mã âm thanh, không mã hóa lại — nên nếu payload là một luồng MP3 được bọc trong base64, bạn sẽ nhận đúng luồng MP3 đó dưới dạng file, tức thì và không mất chất lượng. 'Chuyển đổi và tải về' mới là nút thực sự giải mã âm thanh rồi mã hóa lại sang MP3, WAV hoặc OGG.
Dán vào có giới hạn dung lượng không?
Văn bản dán vào giới hạn ở 32 triệu ký tự — tương đương khoảng 24 MB payload — vượt quá mức đó, công cụ sẽ đề nghị bạn lưu ra file rồi dùng trang chuyển đổi âm thanh thông thường thay thế. Trên khoảng 2 triệu ký tự, việc gõ trong ô có thể hơi chậm, nhưng việc phân tích vẫn hoạt động bình thường.
Tôi có thể nạp payload từ file thay vì dán tay không?
Được. 'Tải từ tệp .txt' nhận file .txt, .json, .b64 hoặc file văn bản khác, đưa nội dung vào ô dán, rồi phân tích y hệt như khi bạn dán tay.