Traitement audio avec Python

Parfois, lors de la programmation, nous devons passer par des étapes de traitement audio. Certaines des tâches de traitement audio les plus utilisées dans la programmation incluent le chargement et l’enregistrement de fichiers audio, la division et l’ajout de fichiers audio en segments, la création de fichiers audio mixtes à l’aide de différentes données, la manipulation des niveaux sonores, l’application de certains filtres et la génération de réglages audio et peut-être plus.

Tous ces types de choses peuvent être réalisés avec Python. Python est un langage flexible ; il fournit des bibliothèques pour presque toutes les tâches dont vous avez entendu parler. Pour le traitement audio, Python fournit Pydub, qui est un module très simple et bien conçu.

Installer Pydub

Comme tous les autres modules de Python, Pydub peut également être facilement installé à l’aide d’une simple commande – pip install pydub.

Traitement audio : chargement et lecture

AudioSegment est la classe parente dans Pydub. Il joue le rôle d’un conteneur qui peut charger, manipuler et enregistrer des fichiers audio. Créons notre premier audio avec python. Pour cela, nous aurons besoin d’un fichier de test, qui pourrait être dans n’importe quel format comme WAV, MP3 ou n’importe qui. Dans cet article, je vais télécharger un fichier audio comme nous récupérons des données sur le Web :

import urllib.request
from pydub import AudioSegment
from pydub.playback import play
# Download an audio file
urllib.request.urlretrieve("https://tinyurl.com/wx9amev", "metallic-drums.wav")
# Load into PyDub
loop = AudioSegment.from_wav("metallic-drums.wav")
# Play the result
play(loop)

Traitement audio de base

Comme nous avons chargé notre audio, nous pouvons maintenant effectuer différents types de traitement audio, commençons par quelques étapes nécessaires en répétant un fichier audio :

# Repeat 2 times
loop2 = loop * 2
# Get length in milliseconds
length = len(loop2)
# Set fade time
fade_time = int(length * 0.5)
# Fade in and out
faded = loop2.fade_in(fade_time).fade_out(fade_time)

Superposition audio

Ci-dessus, nous avons simplement répété l’audio, maintenant superposons et mixons différents segments audio avec différents niveaux de manipulation :

# Download another loop
urllib.request.urlretrieve("https://tinyurl.com/yx3k5kw5", "beat.wav")
# Load into PyDub
beat = AudioSegment.from_wav("beat.wav")
# Mix with our original loop
mixed = beat[:length].overlay(loop2)

Traitement audio : appliquer des filtres

Maintenant, allons plus loin en rassemblant tout en appliquant des filtres et en inversant les effets audio :

# Filter the beat at 3kHz
filtered = beat.low_pass_filter(3000)
# Mix loop2 with a reversed, panned version
loop = loop2.reverse().pan(-0.5).overlay(loop2.pan(0.5))
# Mix our filtered beat with the new loop at -3dB
final = filtered.overlay(loop2 - 3, loop=True)

Maintenant, si vous souhaitez enregistrer votre fichier audio, vous pouvez facilement le faire comme ci-dessous :

final.export("final.mp3", format="mp3")

Synthétiser des mélodies

Outre toutes les étapes de manipulation du son que nous avons décrites ci-dessus, nous pouvons également synthétiser de nouveaux sons. Ces tonalités peuvent être sinusoïdales, carrées, manipulant des ondes à n’importe quelle fréquence. Nous pouvons également effectuer du bruit blanc. Dans l’exemple ci-dessous, je vais montrer la méthode sinusoïdale pour produire un réglage sinusoïdal pour les 15 premiers intervalles de manière harmonique :

# Create an empty AudioSegment
result = AudioSegment.silent(duration=0)
# Loop over 0-14
for n in range(15):
  # Generate a sine tone with frequency 200 * n
  gen = Sine(200 * n)
  # AudioSegment with duration 200ms, gain -3
  sine = gen.to_audio_segment(duration=200).apply_gain(-3)
  # Fade in / out
  sine = sine.fade_in(50).fade_out(100)
  # Append the sine to our result
  result += sine
# Play the result
play(result)

J’espère que vous avez aimé cet article sur le traitement audio avec Python. N’hésitez pas à poser vos précieuses questions dans la section des commentaires ci-dessous.

À lire aussi  Projet de système de gestion de la paie en C++

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page