LoginSignup
7
12

More than 3 years have passed since last update.

Pythonで音声解析をしよう#1 FFT編

Posted at

Pythonで音声解析をしよう

本記事では,Pythonの音声解析のいろはを順を追って紹介していきます.

事前条件

  • Pythonがインストール済み
  • cmdからpyまたはpythonでpythonのインタプリタが起動できる

私の環境

  • Windows10 Home 64bit
  • Python3.7.4
  • Visual Studio Code(VSCode)
  • Vim(マジで好き)

必要なPythonライブラリ

  • numpy
  • wave
  • matplotlib.pyplot
インポート設定
import numpy as np
import matplotlib.pyplot as plt

第一章 ~データの用意~

適当な音声データを読み込んで解析するのが流れとしては良いと思いますが,まずは簡単のためにデータを作成します.正弦波を以下のようにして作ってみましょう.

正弦波の作成
def make_wave():
    fs = 48000 # サンプリングレート
    f = 10 # 周波数
    t = np.linspace(0,1,fs) # 1秒を48,000分割
    y = np.sin(2*np.pi*f*t) # 正弦波を作成
    return y

後に再利用したいので,関数にしておきます.

第二章 ~プロットしてみよう~

では,用意した波をプロットして外観を見てみましょう.

プロット
    sig = make_wave()
    plt.plot(sig)
    plt.show()

たしかに,10回振動する波が作成されていますね.
このとき,横軸は単純にデータ数なので,0~48,000まであります.
test.jpg

第三章 ~解析編の前に~

ここまでのコードをまとめると,以下のようになります.

まとめ
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt

def make_wave():
    fs = 48000
    f = 10
    t = np.linspace(0,1,fs)
    y = np.sin(2*np.pi*f*t)
    return y

def main():
    sig = make_wave()
    plt.plot(sig)
    plt.show()

if __name__ == '__main__':
    main()

非常に単純なコードですが,これだけでデータの作成,確認ができちゃいます.
pythonって便利ですね.
次回,解析についてまとめるので,今回は短いですが以上で失礼します.

次章 ~Fast Fourier Transform~

高速フーリエ変換について

7
12
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
7
12