Chuyển đổi Base64 sang âm thanh

Dán âm thanh Base64 từ phản hồi chuyển văn bản thành giọng nói, data URI hoặc dữ liệu JSON. Công cụ xác định định dạng, phát âm thanh ngay trong trình duyệt và lưu thành tệp âm thanh.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Dán âm thanh Base64, hoặc data URI như data:audio/mpeg;base64,..., vào ô đầu vào.
  2. Kiểm tra định dạng phát hiện được và nhấn phát trong trình phát âm thanh.
  3. Tải tệp xuống. Tệp có phần mở rộng khớp với định dạng phát hiện được, chẳng hạn .mp3 hoặc .wav.

Giải mã đầu ra chuyển văn bản thành giọng nói

Các dịch vụ chuyển văn bản thành giọng nói trả lời bằng JSON không thể đặt âm thanh nhị phân vào phản hồi, nên chúng mã hóa âm thanh. Ví dụ, Google Cloud Text-to-Speech trả về giọng nói dưới dạng chuỗi Base64 trong trường có tên audioContent, theo định dạng bạn yêu cầu, chẳng hạn MP3 hoặc OGG Opus. Các API giọng nói và chatbot khác dùng những trường như audio, data hoặc audio_base64.

Dán giá trị vào đây để nghe kết quả khi so sánh giọng đọc, tốc độ đọc hoặc prompt. Chỉ sao chép chuỗi nằm giữa hai dấu ngoặc kép; phân tích JSON trước sẽ giúp tránh dính kèm dấu ngoặc kép hoặc ký tự thoát như \/.

Các định dạng âm thanh được nhận dạng

Định dạng được nhận dạng từ các byte đầu tiên của dữ liệu đã giải mã, nên kiểu MIME bị thiếu hay sai cũng không ảnh hưởng:

Định dạngChữ kýBase64 bắt đầu bằng
MP3Thẻ ID3 hoặc header khung MPEGSUQz hoặc thường là //
WAVRIFF ... WAVEUklGR
OGG (Vorbis, Opus)OggST2dnUw
FLACfLaCZkxhQ
M4A (AAC)Hộp ftyp với brand M4Akhông cố định (bắt đầu bằng trường kích thước)

PCM thô: khi âm thanh không phát được

Một số API giọng nói, nhất là loại thời gian thực và phát trực tuyến, gửi các mẫu PCM thô, thường là 16 bit mono ở 16 hoặc 24 kHz, không có header tệp. Các luồng thoại qua điện thoại cũng tương tự, mang âm thanh μ-law 8 kHz không có header. Khi thiếu header, không có gì trong các byte cho biết chúng là gì: định dạng không thể nhận dạng, trình duyệt không thể phát dữ liệu, và công cụ này không thể đoán tần số lấy mẫu hay số kênh. Bạn vẫn có thể tải các byte đã giải mã xuống, nhưng để nghe được, bạn cần thêm header WAV với các tham số lấy từ tài liệu API:

# FFmpeg: 16 bit little-endian, 24 kHz, mono
ffmpeg -f s16le -ar 24000 -ac 1 -i speech.pcm speech.wav

# Python
import base64, wave
with wave.open('speech.wav', 'wb') as w:
    w.setnchannels(1)
    w.setsampwidth(2)        # mẫu 16 bit
    w.setframerate(24000)
    w.writeframes(base64.b64decode(pcm_base64))

Nếu kết quả nghe quá nhanh, quá chậm hoặc chỉ toàn tiếng rè, nghĩa là tần số lấy mẫu, kích thước mẫu hoặc thứ tự byte không khớp với dữ liệu. Khi đã phát được, công cụ Âm thanh sang Base64 có thể mã hóa lại tệp WAV nếu bạn cần nó ở dạng chuỗi.

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

Vì sao công cụ không phát được âm thanh của tôi?

Hoặc dữ liệu là PCM thô không có header (xem phần trên), hoặc trình duyệt của bạn không hỗ trợ codec đó. Trong trường hợp thứ hai, tệp tải xuống vẫn đúng và mở được trong trình phát đa phương tiện như VLC.

API của tôi gửi âm thanh thành nhiều đoạn Base64. Làm sao để ghép chúng lại?

Hãy giải mã từng đoạn thành byte rồi nối chúng lại theo đúng thứ tự. Ghép các chuỗi Base64 trước chỉ đúng khi mọi đoạn, trừ đoạn cuối, đều mã hóa một số byte là bội số của 3, điều mà bạn thường không thể trông cậy vào. Công cụ này giải mã từng chuỗi một, nên hãy ghép các đoạn được truyền về bằng mã của riêng bạn.

Âm thanh đã giải mã có giống hệt bản gốc không?

Có. Base64 không làm mất dữ liệu, nên tệp chứa đúng các byte đã được mã hóa, với cùng chất lượng và bitrate. Công cụ không mã hóa lại hay chuyển đổi âm thanh.

Tôi có thể dán data URI không?
Có. Hãy dán toàn bộ chuỗi data:audio/...;base64,, hoặc Base64 thuần không có tiền tố. Dù theo cách nào, định dạng cũng được nhận dạng từ các byte đã giải mã.
Âm thanh của tôi có bị gửi đến máy chủ không?

Không. Việc giải mã, nhận dạng định dạng và phát âm thanh đều diễn ra trong trình duyệt của bạn.