O módulo wave lê e grava arquivos WAV com áudio PCM não comprimido. Ele expõe canais, largura da amostra, taxa e frames brutos, sendo adequado para inspeção e transformações simples.

Inspecione os parâmetros de um WAV

import wave

with wave.open("entrada.wav", "rb") as audio:
    channels = audio.getnchannels()
    sample_width = audio.getsampwidth()
    frame_rate = audio.getframerate()
    frame_count = audio.getnframes()
    frames = audio.readframes(frame_count)

print(channels, sample_width, frame_rate, len(frames))

Diferencie frames e amostras

readframes(n) devolve bytes de até n frames. Um frame contém uma amostra por canal, e cada amostra ocupa a largura informada. Para interpretar números, considere ordem de bytes, sinal e interleaving dos canais.

Grave um cabeçalho coerente

Antes de writeframes(), defina canais, sample width e frame rate compatíveis com os bytes. Context managers finalizam o cabeçalho ao fechar. Valide tamanho e parâmetros de arquivos não confiáveis antes de alocar memória.

Continue estudando

Leia também interpretação de dados binários com struct. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha modos de leitura, escrita e suporte a cabeçalhos WAV.