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ạngdata: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ố
0xhay 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.
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.