Conversor de Base64 para áudio

Cole áudio em Base64 vindo de uma resposta de conversão de texto em fala, de um data URI ou de um payload JSON. A ferramenta identifica o formato, toca o áudio no navegador e o salva como arquivo de áudio.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Cole o áudio em Base64, ou um data URI como data:audio/mpeg;base64,..., na caixa de entrada.
  2. Confira o formato detectado e aperte o play no player de áudio.
  3. Baixe o arquivo. Ele recebe uma extensão compatível com o formato detectado, como .mp3 ou .wav.

Como decodificar a saída de texto para fala

Serviços de conversão de texto em fala que respondem em JSON não podem colocar áudio binário na resposta, então o codificam. O Google Cloud Text-to-Speech, por exemplo, devolve a fala como uma string Base64 em um campo chamado audioContent, na codificação que você solicitou, como MP3 ou OGG Opus. Outras APIs de voz e de chatbot usam campos como audio, data ou audio_base64.

Cole o valor aqui para ouvir o resultado enquanto compara vozes, velocidades de fala ou prompts. Copie apenas a string entre as aspas; interpretar o JSON primeiro evita levar junto aspas ou caracteres escapados como \/.

Formatos de áudio detectados

O formato é reconhecido pelos primeiros bytes dos dados decodificados, então um tipo MIME ausente ou errado não faz diferença:

FormatoAssinaturaO Base64 começa com
MP3Tag ID3 ou cabeçalho de quadro MPEGSUQz ou, geralmente, //
WAVRIFF ... WAVEUklGR
OGG (Vorbis, Opus)OggST2dnUw
FLACfLaCZkxhQ
M4A (AAC)Box ftyp com a marca M4Avaria (começa com um campo de tamanho)

PCM bruto: quando o áudio não toca

Algumas APIs de voz, principalmente as de tempo real e de streaming, enviam amostras PCM brutas, muitas vezes de 16 bits, mono, a 16 ou 24 kHz, sem cabeçalho de arquivo. Fluxos de telefonia também transportam áudio μ-law de 8 kHz sem cabeçalho. Sem um cabeçalho, nada nos bytes indica o que eles são: o formato não pode ser detectado, os navegadores não conseguem reproduzir os dados e esta ferramenta não tem como adivinhar a taxa de amostragem nem o número de canais. Você ainda pode baixar os bytes decodificados, mas, para ouvi-los, precisa adicionar um cabeçalho WAV com os parâmetros da documentação da API:

# FFmpeg: 16 bits 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)        # amostras de 16 bits
    w.setframerate(24000)
    w.writeframes(base64.b64decode(pcm_base64))

Se o resultado soar rápido demais, lento demais ou como chiado, a taxa de amostragem, o tamanho da amostra ou a ordem dos bytes não correspondem aos dados. Quando ele tocar, Áudio para Base64 pode codificar o WAV de novo se você precisar dele como string.

Perguntas frequentes

Por que a ferramenta não toca meu áudio?

Ou os dados são PCM bruto sem cabeçalho (veja acima), ou o seu navegador não é compatível com o codec. No segundo caso, o arquivo baixado continua correto e abre em um player de mídia como o VLC.

Minha API envia o áudio em vários pedaços Base64. Como faço para juntá-los?

Decodifique cada pedaço em bytes e junte-os na ordem. Concatenar as strings Base64 primeiro só funciona se cada pedaço, exceto o último, codificar um múltiplo de 3 bytes, algo com que normalmente não dá para contar. Esta ferramenta decodifica uma string por vez, então combine os pedaços recebidos por streaming no seu próprio código.

O áudio decodificado é idêntico ao original?

Sim. O Base64 não tem perdas, então o arquivo contém exatamente os bytes que foram codificados, com a mesma qualidade e a mesma taxa de bits. A ferramenta não recodifica nem converte o áudio.

Posso colar um data URI?
Sim. Cole a string data:audio/...;base64, inteira ou o Base64 puro, sem prefixo. Em ambos os casos, o formato é detectado pelos bytes decodificados.
Meu áudio é enviado para um servidor?

Não. A decodificação, a detecção de formato e a reprodução acontecem no seu navegador.