>> Technologie Électronique >  >> Audio personnel >> Enregistreurs vocaux numériques

Créer des images d'ondes sonores : Formes d'onde, spectrogrammes et code (Python, MATLAB, DAW)

Une « image d'onde sonore » est une visualisation de l'amplitude audio dans le temps (forme d'onde) ou de la fréquence dans le temps (spectrogramme). Voici comment générer des visualisations de qualité publication, personnalisables, en utilisant le code, les DAW et les outils en ligne.

1. Python : La référence (Programmatique, Par lots, Gratuit)

Bibliothèques : librosa (analyse), matplotlib (tracé), scipy.io.wavfile (E/S).

Forme d'onde de base

import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np

# Chargement
y, sr = librosa.load("audio.wav", sr=None, mono=True)  # sr=None conserve le taux natif

# Tracé
plt.figure(figsize=(14, 4))
librosa.display.waveshow(y, sr=sr, alpha=0.7, color='#1f77b4')
plt.title("Forme d'onde : Amplitude vs Temps")
plt.xlabel("Temps (s)")
plt.ylabel("Amplitude")
plt.tight_layout()
plt.savefig("waveform.png", dpi=300, bbox_inches='tight')
plt.close()

Spectrogramme (Fréquence vs Temps - Couleur = 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('Spectrogramme (Fréquence linéaire)')
plt.tight_layout()
plt.savefig('spectrogram_linear.png', dpi=300)
plt.close()

# Spectrogramme Mel (Échelle de fréquence perceptuelle)
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('Spectrogramme Mel')
plt.tight_layout()
plt.savefig('spectrogram_mel.png', dpi=300)

Avancé : Marqueurs d'attaque/de temps, Chromagramme, Tonnetz

# Détection d'attaque
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('Détection d\'attaque')
plt.savefig('onsets.png', dpi=300)

2. MATLAB / Octave (Standard académique / ingénierie)

[x, fs] = audioread('audio.wav');
if size(x,2) > 1, x = mean(x,2); end  % Mono

% Forme d'onde
t = (0:length(x)-1)/fs;
figure; plot(t, x); xlabel('Temps (s)'); ylabel('Amplitude'); title('Forme d\'onde');
print('-dpng', '-r300', 'waveform_matlab.png');

% Spectrogramme
window = hamming(1024);
noverlap = 512;
nfft = 1024;
figure; spectrogram(x, window, noverlap, nfft, fs, 'yaxis');
colormap('jet'); colorbar; caxis([-100 0]);
title('Spectrogramme (dB)');
print('-dpng', '-r300', 'spec_matlab.png');

3. DAW et éditeurs audio (Interactif, sans code)

LogicielVue forme d'ondeVue spectrogrammeExport image
Audacity (Gratuit)Vue piste par défaut. Zoom (Ctrl+1/2/3).Menu déroulant piste > Spectrogramme / Réglages spectrogramme (Fenêtre, Fréquence max).Fichier > Exporter > Exporter en PNG (Sélection ou Total).
Adobe AuditionPanneau Éditeur. Vue spectrale (Basculer).Affichage fréquentiel spectral (Maj+D). Résolution, Fenêtre, Chevauchement ajustables.Édition > Copier la vue spectrale dans le presse-papiers → Coller dans PS. Ou Capture d'écran.
iZotope RXVue d'ensemble forme d'onde + Spectrogramme (Liés).Le meilleur du marché. FFT, Fenêtre, Plage dynamique, Colormap ajustables.Fichier > Exporter > Image (PNG, TIFF, SVG). Par lots via Scripting.
Sonic Visualiser (Gratuit, Académique)Volet 1.Volet 2 : Calque > Ajouter un spectrogramme. Calques Mel, ERB, Chroma.Fichier > Exporter l'image. Annotations incluses.
Reaper / Logic / Pro Tools / AbletonVue Arrangement.Limité / Via Plugins (Voxengo SPAN, Melda MAnalyzer, FabFilter Pro-Q 3).Capture d'écran / Rendu région (Vidéo).

4. Outils en ligne (Zéro installation)

Avertissement : Télécharger de l'audio sensible sur des outils web = risque de confidentialité. Utilisez des outils locaux pour le contenu privé.

5. Design/Art : Vectoriel et stylisé (Figma, Illustrator, After Effects)

  • After Effects : Effets Spectre audio / Forme d'onde audio sur Calque solide. Lier à la piste audio. Animer couleurs, épaisseur, côtés, bandes de fréquence. Export séquence PNG / MP4 / GIF.
  • TouchDesigner / Processing / p5.js : Visuels audio-réactifs temps réel. Spectrogrammes basés sur shaders.
  • Figma/Illustrator : Importer PNG depuis ci-dessus → Vectoriser (Vectoriel) → Styler les traits. Ou utiliser plugins : Waveform (Figma), Générateur de forme d'onde audio (IA).

Bonnes pratiques pour la publication

  • Résolution : 300 DPI minimum (Impression). 2x/3x pour écrans Retina.
  • Accessible aux daltoniens : Utilisez viridis, magma, cividis, turbo. Évitez jet, rainbow, hot.
  • Étiquettes d'axes : Toujours « Temps (s) », « Fréquence (Hz/kHz) », « Puissance (dB) ».
  • Plage dynamique : Définir vmin/vmax (matplotlib) / caxis (MATLAB) pour couper le bruit de fond (ex: -80 à 0 dB).
  • Vectoriel vs Raster : Formes d'onde → SVG (scalable). Spectrogrammes → PNG (raster inhérent).

Pour la science/reproductibilité : Python (librosa/matplotlib). Pour le mastering/QC : iZotope RX / Sonic Visualiser. Pour l'art/motion : After Effects / TouchDesigner. Pour un coup d'œil rapide : Audacity / Spektrogram.com.

Enregistreurs vocaux numériques