金子邦彦研究室人工知能Windows で動く人工知能関係 Pythonアプリケーション,オープンソースソフトウエア)spectrum のインストールと動作確認(スペクトログラム,PSD による Yule Walker 法)(Python を使用)(Windows 上)

spectrum のインストールと動作確認(スペクトログラム,PSD による Yule Walker 法)(Python を使用)(Windows 上)

スペクトログラムは,周波数と時間を,縦横の軸とするグラフ.強度を色や明るさで表すことが多い.

文献

Cokelaer et al, (2017), 'Spectrum': Spectral Analysis in Python, Journal of Open Source Software, 2(18), 348, doi:10.21105/joss.00348

関連する外部ページ

前準備

Git のインストール(Windows 上)

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページ

Windows での Git のインストール: 別ページ »で説明している.

関連する外部ページ

Git の公式ページ: https://git-scm.com/

Python のインストール(Windows 上)

サイト内の関連ページ

関連する外部ページ

Python の公式ページ: https://www.python.org/

parselmouth のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. pip を用いてインストール

    pip install -U spectrum
    

    [image]

動作確認

.wav 形式のファイルからスペクトログラムを表示. スペクトログラムは,周波数と時間を,縦横の軸とするグラフ.強度を色や明るさで表すことが多い.

次で公開されているプログラムを使用

https://github.com/cokelaer/spectrum/blob/master/examples/plot_spectrogram.py

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. 公式ページから parselmouth のファイルをダウンロード

    cd %HOMEPATH%
    rmdir /s /q spectrum
    git clone --recursive https://github.com/cokelaer/spectrum
    

    [image]
  3. numpy, matplotlib, seaborn のインストール

    pip install -U numpy matplotlib seaborn
    

    [image]
  4. スペクトログラムの表示

    次のページで公開されているプログラムを使用している.

    https://github.com/cokelaer/spectrum/blob/master/examples/plot_spectrogram.py

    次のコマンドを実行

    cd %HOMEPATH%
    cd spectrum
    jupyter qtconsole
    

    [image]

    Python プログラムを実行する

    Python プログラムの実行: 別ページ »で説明

    Python のまとめ: 別ページ »にまとめ

    from spectrum import Spectrogram, readwav
    data, samplerate = readwav("src/spectrum/data/dolphins.wav")
    
    p = Spectrogram(data, ws=128, W=4096, sampling=samplerate)
    p.periodogram()
    p.plot()
    

    [image]
  5. PSD による Yule Walker 法

    次のページで公開されているプログラムを使用している.

    https://github.com/cokelaer/spectrum/blob/master/examples/plot_yule.py

    次のコマンドを実行

    cd %HOMEPATH%
    cd spectrum
    jupyter qtconsole
    

    [image]

    Python プログラムを実行する

    from spectrum import pyule
    from scipy.signal import lfilter
    from pylab import plot, mean, log10, randn
    from numpy import array
    allpsds = []
    
    # ARフィルタ係数のリスト
    a = array([1,-2.2137,2.9403,-2.1697,0.9606])
    
    for this in range(1000):
    # ノイズを含むデータ
        x = lfilter([1], a, randn(1, 1024))
        p = pyule(x[0],4, scale_by_freq=False, NFFT=256)
        p.plot(color='gray', alpha=0.1)
        allpsds.append(p.psd)
    
    plot(p.frequencies(), 10*log10(mean(allpsds, axis=0)), "red")
    

    [image]