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

Comment puis-je créer une forme d'onde à partir de l'audio?

La création d'une visualisation de forme d'onde à partir de l'audio implique plusieurs étapes, et la complexité dépend du niveau de détail et de sophistication souhaité. Voici une ventilation du processus, allant des méthodes simples à avancées:

1. Méthode simple (utilisant des bibliothèques):

Cette approche est la plus simple et ne nécessite aucune connaissance approfondie du traitement audio. Vous tirerez parti des bibliothèques qui gèrent le travail lourd pour vous. Voici comment vous le feriez en utilisant Python avec les bibliothèques `Biblingosa` et` Matplotlib`:

`` Python

Importer Librosa

importer librosa.display

Importer Matplotlib.pyplot en tant que plt

Chargez le fichier audio

audio_file ="votre_audio_file.wav" # Remplacez par votre chemin de fichier audio

y, sr =librosa.load (Audio_file)

Affichez la forme d'onde

Plt.Figure (FigSize =(14, 5))

librosa.display.waveshow (y, sr =sr)

plt.title ("forme d'onde")

plt.xLabel ("temps (s)")

plt.ylabel ("amplitude")

plt.show ()

`` '

Avant d'exécuter ce code:

* Installez les bibliothèques nécessaires: `pip install librosa matplotlib`

* Remplacer `" votre_Audio_file.wav "`: avec le chemin d'accès réel vers votre fichier audio. Le fichier doit être un fichier WAV pour la meilleure compatibilité. Librosa peut gérer d'autres formats, mais WAV est généralement préféré pour cette tâche.

2. Méthode intermédiaire (traitement manuel):

Cela fournit plus de contrôle mais nécessite de comprendre les fondamentaux audio. Vous travaillerez directement avec les données audio:

`` Python

vague d'importation

Importer Numpy comme NP

Importer Matplotlib.pyplot en tant que plt

Ouvrez le fichier WAV

avec wave.open ("your_audio_file.wav", "rb") comme wf:

num_channels =wf.getnchannels ()

samptample_width =wf.getsampwidth ()

frame_rate =wf.getFramerate ()

num_frames =wf.getnframes ()

data =wf.readframes (num_frames)

Convertissez les données en tableau Numpy

data =np.frombuffer (données, dtype =np.int16) # ajuster dtype si sample_width est différent

Si stéréo, converti en mono (canaux moyens)

Si num_channels ==2:

data =np.mean (data.Reshape (-1, 2), axe =1)

normaliser les données

data =data / np.max (np.abs (données))

vecteur de temps

time =np.arange (0, num_frames) / frame_rate

tracer la forme d'onde

Plt.Figure (FigSize =(14, 5))

plt.plot (temps, données)

plt.title ("forme d'onde")

plt.xLabel ("temps (s)")

plt.ylabel ("amplitude")

plt.show ()

`` '

Ce code:

* Ouvre le fichier WAV à l'aide du module `` wave '.

* Lire les données audio brutes.

* Le convertit en un tableau Numpy pour une manipulation plus facile.

* Gère l'audio stéréo en faisant la moyenne des canaux pour créer une forme d'onde mono.

* Normalise les données à une plage entre -1 et 1 pour une meilleure visualisation.

* Crée un vecteur temporel pour le traçage.

* Trace la forme d'onde à l'aide de `matplotlib`.

3. Méthodes avancées (FFT, spectrogrammes):

Pour une analyse plus détaillée, vous pouvez utiliser Fast Fourier Transform (FFT) pour analyser les composants de fréquence du signal audio, créant des spectrogrammes. Des bibliothèques comme «Librosa» et «Scipy» fournissent des implémentations FFT efficaces. Cela dépasse la portée d'une explication simple mais implique de transformer le signal du domaine temporel en domaine fréquentiel pour visualiser les fréquences au fil du temps. `Librosa.feature.mel_spectrogram` est un excellent point de départ pour cela.

Choisir la bonne méthode:

* méthode simple: Mieux pour les visualisations de forme d'onde rapides sans avoir besoin d'une compréhension audio profonde.

* Méthode intermédiaire: Donne plus de contrôle et de compréhension des données audio brutes.

* Méthode avancée: Nécessaire pour l'analyse et la visualisation de fréquence détaillées (spectrogrammes).

N'oubliez pas d'installer les bibliothèques requises avant d'exécuter l'un de ces codes. Choisissez la méthode qui convient le mieux à vos besoins et à votre niveau de compréhension. Les exemples ci-dessus utilisent Python, mais des fonctionnalités similaires peuvent être obtenues dans d'autres langages de programmation comme JavaScript (en utilisant des bibliothèques comme l'API audio Web) ou C ++ (utilisant des bibliothèques comme SDL).

Enregistreurs vocaux numériques