Como tocar áudio em Base64
- Cole o Base64 ou um URI
data:audio/…;base64,em Base64 ou data URI. Strings longas podem ser carregadas com Abrir arquivo .txt. Um pequeno exemplo em WAV com duas notas é carregado quando a página abre. - O player aparece abaixo das informações do arquivo. A Duração mostra o tempo assim que o navegador lê o cabeçalho, por exemplo
0:03.0. - Nome do arquivo, Extensão e Tipo MIME são preenchidos a partir do formato detectado. Mude se precisar.
- Clique em Baixar arquivo para salvar o áudio, ou em Copiar como data URI para obter uma string para um
<audio src>.
O som é decodificado e tocado dentro do seu navegador. A Content Security Policy da página bloqueia todas as requisições de rede, exceto as do contador de visitas da Cloudflare, então uma gravação não tem como ser enviada a lugar nenhum daqui.
Quais formatos tocam no navegador
O player é o próprio elemento <audio> do seu navegador, então a reprodução depende dos decodificadores embutidos nele. As versões atuais lidam com a maioria dos formatos:
| Formato | O Base64 começa com | Chrome, Edge, Firefox | Safari |
|---|---|---|---|
| MP3 | SUQz (com tag ID3), //s, //M | Sim | Sim |
| WAV com amostras PCM | UklGR | Sim | Sim |
| AAC em M4A | AAAAHGZ0eXBNNEEg e parecidos | Sim | Sim |
| FLAC | ZkxhQw | Sim | Sim |
| Ogg Vorbis | T2dnUw | Sim | A partir do Safari 18.4 |
| Opus em Ogg ou WebM | T2dnUw, GkXfo | Sim | Em parte, conforme a versão e o contêiner |
| AMR (gravações de celulares antigos) | IyFBTVIK | Não | Não |
| WAV com ADPCM ou GSM | UklGR | Em geral, não | Em geral, não |
O WAV é um contêiner com um campo de codec, então dois arquivos .wav podem se comportar de forma diferente. O Chrome, por exemplo, também toca WAVs de telefonia µ-law e A-law, mas não ADPCM. Quando o navegador não consegue decodificar um arquivo, a Duração mostra n/d e um aviso aparece acima do player: “Seu navegador não consegue reproduzir este arquivo AMR. Baixe e abra em um player de mídia.” O VLC e o ffmpeg lidam com todos os formatos acima.
Áudio dentro de um contêiner de vídeo
O áudio nem sempre chega num formato de áudio. Gravações do navegador feitas com MediaRecorder no Chrome são, por padrão, WebM com Opus dentro, e alguns serviços envolvem AAC em um arquivo MP4 sem a marca M4A. A ferramenta então informa “Isto parece ser WebM, não áudio.” ou “Isto parece ser MP4, não áudio.”, com um botão de download para essa extensão, e o player continua funcionando: a linha de dimensões diz só áudio. Salvar como .webm ou .mp4 está correto; a maioria dos players de áudio também abre esses arquivos.
Se a ferramenta detectar só Binary, mas você souber o codec, digite o tipo MIME dele em Tipo MIME, por exemplo audio/ogg. A prévia é refeita com um player de áudio para esse tipo, um jeito rápido de testar um palpite.
Áudio bruto sem cabeçalho
Algumas APIs de fala e voz devolvem amostras brutas, muitas vezes PCM de 16 bits a 16 ou 24 kHz, sem nenhum cabeçalho WAV em volta. Esses bytes não têm assinatura, então a ferramenta informa “Isto não parece ser áudio (detectado: Binary)” e nada consegue tocá-los. A solução é acrescentar um cabeçalho com a taxa de amostragem correta, que a documentação da API informa; Base64 para WAV mostra como fazer isso em poucas linhas de Python.
De onde vem o áudio em Base64
APIs de síntese de voz devolvem a fala gerada como campo Base64 em JSON. Exportações de chat e de apps de mensagens guardam mensagens de voz do mesmo jeito. Apps web mantêm sons curtos como URIs data:audio/… no código ou no CSS, e o áudio de uma gravação no navegador muitas vezes viaja até o servidor como Base64 em uma requisição JSON. Para o caminho inverso, de um arquivo de som para uma string, use Áudio para Base64.
Conferir o codec na linha de comando
Quando um arquivo se recusa a tocar, o ffprobe diz qual codec está dentro:
base64 -d clip.b64 > clip.bin
ffprobe -v error -show_entries stream=codec_name,sample_rate,channels -of csv=p=0 clip.bin
Para uma gravação de telefonia, ele imprime algo como adpcm_ima_wav,8000,1, o que explica por que o navegador desistiu. Converter para PCM simples faz o arquivo tocar em qualquer lugar: ffmpeg -i clip.bin -c:a pcm_s16le clip.wav. Há mais receitas de shell em Base64 em Bash, e detalhes de formato em Base64 para MP3.
Perguntas frequentes
Como tocar uma string de áudio em Base64?
Cole a string na caixa acima e dê play no player que aparece. Base64 puro e URIs data:audio/…;base64, funcionam; a ferramenta descobre o formato pelos bytes.
Por que meu áudio em Base64 não toca?
Ou o navegador não tem decodificador para o codec que está dentro (arquivos WAV AMR, ADPCM ou GSM, por exemplo), ou os dados são amostras brutas sem cabeçalho de arquivo. O aviso abaixo do player diz qual é o seu caso; veja a tabela e a seção sobre áudio bruto mais abaixo.
Qual é o tipo MIME certo para áudio em Base64?
Depende do formato: audio/mpeg para MP3, audio/wav para WAV, audio/ogg para Ogg Vorbis e Opus, audio/mp4 para M4A, audio/flac para FLAC. Depois da decodificação, o campo Tipo MIME mostra o que corresponde ao formato detectado.
Como descobrir a duração de um áudio em Base64?
Decodifique aqui: a linha Duração mostra minutos e segundos assim que o navegador lê os metadados do arquivo. No código, decodifique para um arquivo e rode ffprobe -show_entries format=duration nele.