LoginSignup
4
6

More than 3 years have passed since last update.

【Python】mp3データをFFTする方法

Last updated at Posted at 2020-02-11

0. 概要

Pythonを使って、mp3データをFFTする方法です。ライブラリとしてpydubやffmpegを使うので予めダウンロードしてくださいね。

1. ライブラリのダウンロード

sudo apt install ffmpeg
pip install pydub

2. コード

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 = "ファイル名を入れてね"

sound = AS.from_file(file + ".mp3", "mp3")
data = np.array(sound.get_array_of_samples())
spec = np.fft.fft(data)   #2次元配列(実部,虚部)
freq = np.fft.fftfreq(data.shape[0], 1.0/sound.frame_rate) 
spec = spec[:int(spec.shape[0]/2 + 1)]    #周波数がマイナスになるスペクトル要素の削除
freq = freq[:int(freq.shape[0]/2 + 1)]    #周波数がマイナスになる周波数要素の削除
max_spec=max(np.abs(spec))    #最大音圧を取得(音圧を正規化するために使用)
plt.plot(freq, np.abs(spec)/max_spec)

plt.grid()
plt.xlim([0,4000])    #グラフに出力する周波数の範囲[Hz]
plt.xlabel("Frequency[Hz]")
plt.ylabel("Sound Pressure[-]")
#plt.yscale("log")
plt.savefig(file + ".png")  #pngファイルで出力

3. 補足

plt.yscale("log")のコメントアウトを外せばlogスケールに変更できます。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6