Trilha 16 · Imagens, áudio e vídeo

Amostragem e PCM

Como converter uma onda analógica contínua em números discretos — o Teorema de Nyquist, aliasing e por que o CD usa 44.100 amostras por segundo.

① Intuição

Tirar fotos de uma onda

Imagine tirar fotos de um pêndulo oscilando. Se você tira fotos rápido o suficiente, consegue reconstruir o movimento completo. Mas se tira fotos muito devagar, o pêndulo pode estar em posições completamente diferentes a cada foto — e a reconstrução fica errada.

Isso é exatamente o que acontece com áudio digital. O microfone mede a pressão do ar a cada amostra. O Teorema de Nyquist-Shannon diz: para reconstruir perfeitamente uma onda de frequência f, você precisa de pelo menos 2f amostras/segundo. Abaixo disso ocorre aliasing — a onda reconstruída tem uma frequência errada.

Por que 44.100 Hz? O ouvido humano ouve até ~20.000 Hz. Pelo teorema de Nyquist, precisamos de pelo menos 40.000 Hz de taxa de amostragem. O CD usa 44.100 Hz — um pouco acima do mínimo — deixando margem para o filtro anti-aliasing não precisar ser perfeito na borda de corte. A história: o padrão veio da compatibilidade com fitas de vídeo (NTSC/PAL) usadas em gravação profissional nos anos 70.
② Visualização interativa

Veja o aliasing acontecer

Diminua a taxa de amostragem abaixo de 10 Hz (2× a frequência da onda de 5 Hz). Observe como a linha reconstruída diverge da onda original.

Taxa de amostragem20 Hz ✓ OK
2 HzNyquist mínimo: 10 Hz50 Hz
ONDA 5 Hz — 21 AMOSTRAS — NYQUIST: 10 Hz
Onda contínua
Amostras
Sinal reconstruído
TEOREMA DE NYQUIST
Taxa mínima: 10 Hz
Taxa atual: 20 Hz
Frequência Nyquist: 10 Hz
PADRÕES DE ÁUDIO REAL
CD: 44.100 Hz → máx 22.05 kHz
DVD: 48.000 Hz → máx 24 kHz
Hi-Res: 192.000 Hz
③ Explicação técnica

Nyquist e o formato WAV

// Teorema de Nyquist-Shannon
// taxa_amostragem >= 2 * frequencia_maxima

// Padrões de áudio digital:
const CD     = "44.100 Hz";  // → máx 22.050 Hz (acima do audível)
const DVD    = "48.000 Hz";  // → máx 24.000 Hz
const HiRes  = "192.000 Hz"; // → máx 96.000 Hz (supersônico)
const PHONE  = "8.000 Hz";   // → máx 4.000 Hz (inteligibilidade da fala)

// Aliasing: quando amostramos abaixo do mínimo
// Uma onda de 5kHz amostrada a 7kHz parece uma onda de 2kHz
// frequencia_alias = |freq - round(freq/sample_rate) * sample_rate|

// Anti-aliasing filter: passa-baixa antes de amostrar
// Corta tudo acima de sample_rate/2 ANTES da amostragem
// para garantir que não haverá aliasing

Estrutura de um arquivo WAV

// Representação de um arquivo WAV (PCM 16-bit, 44100 Hz, estéreo)

// Header RIFF (44 bytes)
// Offset  Size  Valor
//   0      4    "RIFF"
//   4      4    tamanho total - 8 (little-endian)
//   8      4    "WAVE"
//  12      4    "fmt "
//  16      4    16 (tamanho do chunk fmt)
//  20      2    1 (PCM = sem compressão)
//  22      2    2 (canais: stereo)
//  24      4    44100 (taxa de amostragem)
//  28      4    176400 (bytes/segundo = 44100 * 2ch * 2bytes)
//  32      2    4 (block align = 2ch * 2bytes)
//  34      2    16 (bits por amostra)
//  36      4    "data"
//  40      4    tamanho dos dados de áudio
//  44      N    AMOSTRAS (L16, R16, L16, R16, ...)

// Tamanho de 1 minuto de CD: 44100 * 60 * 2ch * 2bytes = 10.584.000 bytes ≈ 10 MB
Profundidade de bits vs. taxa de amostragem: são dois parâmetros independentes. A taxa de amostragem determina quais frequências você pode representar (Nyquist). A profundidade de bits (16-bit, 24-bit) determina a resolução de amplitude — o menor nível de volume que pode ser representado. CD usa 16-bit = 65.536 níveis = 96 dB de faixa dinâmica. Gravação profissional usa 24-bit = 144 dB — mais que o ouvido humano consegue distinguir.
④ Projeto para programar

Analise áudio real

Mini projeto: use o Web Audio API com AnalyserNode e getFloatTimeDomainData() para capturar amostras do microfone em tempo real. Renderize as amostras como forma de onda em um Canvas atualizado a 60fps.

Projeto principal: implemente detecção de frequência fundamental: capture amostras de áudio, calcule a autocorrelação e encontre o primeiro pico — isso dá a frequência fundamental. Exiba o tom detectado em tempo real (como um tuner de instrumento).

Desafio extra: escreva um gerador de arquivo WAV em JavaScript puro: gere uma senoide de 1 segundo a 440 Hz, empacote no header PCM WAV correto usando ArrayBuffer e DataView, e crie um link de download com URL.createObjectURL(new Blob(...)).

⑤ Exercícios rápidos

Teste sua intuição

Por que o padrão de CD usa uma taxa de amostragem de 44.100 Hz?
O que é aliasing no contexto de áudio digital?
Qual a diferença entre taxa de amostragem e profundidade de bits no áudio digital?
⑥ Aplicações no mundo real

Onde você encontra isso

📞

Telefonia e voz

Chamadas telefônicas tradicionais usam 8.000 Hz (voz humana inteligível até ~4 kHz). VoIP moderno (Zoom, WhatsApp) usa 16.000 Hz (wideband) ou até 48.000 Hz (fullband) para qualidade de voz mais natural. Codecs opus comprimem de 48kHz PCM para 6-510 kbps adaptativo.

🎬

Produção de vídeo e cinema

Cinema usa 48.000 Hz como padrão (DCP — Digital Cinema Package). Gravações de campo usam 24-bit/96kHz para ter headroom na edição. O master final é dithered para 24-bit/48kHz antes da distribuição. Dithering adiciona ruído controlado para ocultar artefatos de quantização.

🏥

Ultrassom médico

Ultrassom usa ondas sonoras de 2–15 MHz (muito acima do audível). Para amostrar fielmente, os equipamentos usam ADCs a 100–200 MHz de taxa de amostragem. O aliasing que seria inofensivo em áudio pode criar imagens fantasma perigosas em diagnóstico médico.

← Anterior: Ondas sonoras Próxima: Síntese de Fourier →