Comment FFT des données mp3 en utilisant Python. Puisque pydub et ffmpeg sont utilisés comme bibliothèques, veuillez les télécharger à l'avance.
sudo apt install ffmpeg
pip install pydub
FFT.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from pydub import AudioSegment as AS
import ffmpeg
import numpy as np
import matplotlib.pyplot as plt
file = "Entrez le nom du fichier"
sound = AS.from_file(file + ".mp3", "mp3")
data = np.array(sound.get_array_of_samples())
spec = np.fft.fft(data) #Un tableau bidimensionnel(Partie réelle, partie imaginaire)
freq = np.fft.fftfreq(data.shape[0], 1.0/sound.frame_rate)
spec = spec[:int(spec.shape[0]/2 + 1)] #Suppression des éléments spectraux avec des fréquences négatives
freq = freq[:int(freq.shape[0]/2 + 1)] #Suppression des éléments de fréquence qui ont une fréquence négative
max_spec=max(np.abs(spec)) #Obtenez une pression acoustique maximale(Utilisé pour normaliser la pression acoustique)
plt.plot(freq, np.abs(spec)/max_spec)
plt.grid()
plt.xlim([0,4000]) #Plage de fréquences à afficher sur le graphique[Hz]
plt.xlabel("Frequency[Hz]")
plt.ylabel("Sound Pressure[-]")
#plt.yscale("log")
plt.savefig(file + ".png ") #Sortie sous forme de fichier png
Vous pouvez passer à l'échelle du journal en décommentant plt.yscale ("log").
Recommended Posts