Wie man MP3-Daten mit Python FFT. Da pydub und ffmpeg als Bibliotheken verwendet werden, laden Sie diese bitte im Voraus herunter.
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 = "Geben Sie den Dateinamen ein"
sound = AS.from_file(file + ".mp3", "mp3")
data = np.array(sound.get_array_of_samples())
spec = np.fft.fft(data) #Ein zweidimensionales Array(Realteil, Imaginärteil)
freq = np.fft.fftfreq(data.shape[0], 1.0/sound.frame_rate)
spec = spec[:int(spec.shape[0]/2 + 1)] #Entfernung von Spektralelementen mit negativen Frequenzen
freq = freq[:int(freq.shape[0]/2 + 1)] #Entfernen von Frequenzelementen mit negativer Frequenz
max_spec=max(np.abs(spec)) #Holen Sie sich maximalen Schalldruck(Wird zur Normalisierung des Schalldrucks verwendet.
plt.plot(freq, np.abs(spec)/max_spec)
plt.grid()
plt.xlim([0,4000]) #Frequenzbereich, der in das Diagramm ausgegeben werden soll[Hz]
plt.xlabel("Frequency[Hz]")
plt.ylabel("Sound Pressure[-]")
#plt.yscale("log")
plt.savefig(file + ".png ") #Ausgabe als PNG-Datei
Sie können zur Protokollskalierung wechseln, indem Sie plt.yscale ("log") auskommentieren.
Recommended Posts