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)
| Logiciel | Vue forme d'onde | Vue spectrogramme | Export 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 Audition | Panneau É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 RX | Vue 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 / Ableton | Vue 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)
- Spektrogram.com - Glisser-déposer. Export PNG. Mel/Linéaire. Bon pour partage rapide.
- Academo Spectrum Analyzer - Micro live ou fichier. Animé.
- Audiotool - DAW dans le navigateur. Périphérique spectrogramme.
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.
