>> Tecnologia Eletrônica >  >> Áudio Pessoal >> Gravadores de Voz Digitais

Criando Imagens de Ondas Sonoras: Formas de Onda, Espectrogramas & Código (Python, MATLAB, DAWs)

Uma "imagem de onda sonora" é visualização de amplitude de áudio no tempo (forma de onda) ou frequência no tempo (espectrograma). Aqui está como gerar visualizações publicáveis, customizáveis usando código, DAWs e ferramentas online.

1. Python: Padrão Ouro (Programático, Batch, Gratuito)

Bibliotecas: librosa (análise), matplotlib (plot), scipy.io.wavfile (I/O).

Forma de Onda Básica

import librosa import librosa.display import matplotlib.pyplot as plt import numpy as np # Load y, sr = librosa.load("audio.wav", sr=None, mono=True) # sr=None mantém rate nativo # Plot plt.figure(figsize=(14, 4)) librosa.display.waveshow(y, sr=sr, alpha=0.7, color='#1f77b4') plt.title("Waveform: Amplitude vs Time") plt.xlabel("Time (s)") plt.ylabel("Amplitude") plt.tight_layout() plt.savefig("waveform.png", dpi=300, bbox_inches='tight') plt.close() 

Espectrograma (Frequência vs Tempo - Cor = Magnitude)

 # STFT -> Magnitude -> dB D = librosa.amplitude_to_db(np.abs(librosa.stft(y, n_fft=2048, hop_length=512)), ref=np.max) plt.figure(figsize=(14, 5)) librosa.display.specshow(D, sr=sr, hop_length=512, x_axis='time', y_axis='hz', cmap='magma') plt.colorbar(format='%+2.0f dB') plt.title('Spectrogram (Linear Frequency)') plt.tight_layout() plt.savefig('spectrogram_linear.png', dpi=300) plt.close() # Mel Spectrogram (Escala Frequência Perceptual) M = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=2048, hop_length=512, n_mels=128) M_db = librosa.power_to_db(M, ref=np.max) plt.figure(figsize=(14, 5)) librosa.display.specshow(M_db, sr=sr, hop_length=512, x_axis='time', y_axis='mel', cmap='viridis') plt.colorbar(format='%+2.0f dB') plt.title('Mel Spectrogram') plt.tight_layout() plt.savefig('spectrogram_mel.png', dpi=300) 

Avançado: Marcadores Onset/Beat, Chroma, Tonnetz

 # Onset detection onsets = librosa.onset.onset_detect(y=y, sr=sr, units='time') plt.figure(figsize=(14, 4)) librosa.display.waveshow(y, sr=sr, alpha=0.5) for o in onsets: plt.axvline(o, color='red', alpha=0.5, linestyle='--') plt.title('Onset Detection') plt.savefig('onsets.png', dpi=300) 

2. MATLAB / Octave (Padrão Acadêmico / Engenharia)

 [x, fs] = audioread('audio.wav'); if size(x,2) > 1, x = mean(x,2); end % Mono % Waveform t = (0:length(x)-1)/fs; figure; plot(t, x); xlabel('Time (s)'); ylabel('Amplitude'); title('Waveform'); print('-dpng', '-r300', 'waveform_matlab.png'); % Spectrogram window = hamming(1024); noverlap = 512; nfft = 1024; figure; spectrogram(x, window, noverlap, nfft, fs, 'yaxis'); colormap('jet'); colorbar; caxis([-100 0]); title('Spectrogram (dB)'); print('-dpng', '-r300', 'spec_matlab.png'); 

3. DAWs & Editores Áudio (Interativo, Sem Código)

SoftwareWaveform ViewSpectrogram ViewExport Imagem
Audacity (Gratuito)View track padrão. Zoom (Ctrl+1/2/3).Track Dropdown > **Spectrogram** / **Spectrogram Settings** (Window, Max Freq).File > Export > **Export as PNG** (Seleção ou Full).
Adobe AuditionEditor Panel. Spectral View (Toggle).**Spectral Frequency Display** (Shift+D). Resolution, Window, Overlap ajustáveis.Edit > **Copy Spectral View to Clipboard** → Paste no PS. Ou Screenshot.
iZotope RXWaveform Overview + Spectrogram (Linkados).Best-in-class. FFT, Window, Dynamic Range, Colormap ajustáveis.File > Export > **Image** (PNG, TIFF, SVG). Batch via Scripting.
Sonic Visualiser (Gratuito, Acadêmico)Pane 1.Pane 2: Layer > Add Spectrogram. Mel, ERB, Chroma layers.File > Export Image. Anotações incluídas.
Reaper / Logic / Pro Tools / AbletonArrange View.Limitado / Via Plugins (Voxengo SPAN, Melda MAnalyzer, FabFilter Pro-Q 3).Screenshot / Region Render (Video).

4. Ferramentas Online (Zero Install)

Aviso: Upload áudio sensível pra tools web = risco privacidade. Use tools locais pra conteúdo privado.

5. Design/Arte: Vetor & Estilizado (Figma, Illustrator, After Effects)

  • After Effects: Efeitos **Audio Spectrum** / **Audio Waveform** em Solid. Link a audio layer. Anime cores, espessura, lados, bandas frequência. Export PNG sequence / MP4 / GIF.
  • TouchDesigner / Processing / p5.js: Visuais audio-reativos real-time. Spectrogramas shader-based.
  • Figma/Illustrator: Importe PNG acima → Image Trace (Vetor) → Estilize strokes. Ou plugins: Waveform (Figma), Audio Waveform Generator (AI).

Melhores Práticas pra Publicação

  • Resolução: 300 DPI mínimo (Print). 2x/3x pra telas Retina.
  • Colorblind Safe: Use **viridis**, **magma**, **cividis**, **turbo** colormaps. Evite **jet**, **rainbow**, **hot**.
  • Labels Eixos: Sempre "Time (s)", "Frequency (Hz/kHz)", "Power (dB)".
  • Dynamic Range: Set `vmin/vmax` (matplotlib) / `caxis` (MATLAB) pra clip noise floor (ex: -80 a 0 dB).
  • Vetor vs Raster: Formas de onda → SVG (escalável). Espectrogramas → PNG (raster inerente).

Pra ciência/reprodutibilidade: **Python (librosa/matplotlib)**. Pra mastering/QC: **iZotope RX / Sonic Visualiser**. Pra arte/motion: **After Effects / TouchDesigner**. Pra olhar rápido: **Audacity / Spektrogram.com**.