音声データをMatplotでグラフ表示する on raspberry pi 2 B

raspberry pi 2 B へのmatplotのインストール

 

sudo apt-get install python-matplotlib

sudo apt-get install python-pip

sudo pip install drawnow

 

pythonを使用してプロットテスト↓

import numpy as np

import matplotlib.pyplot as plt

 

x=np.arange(-3, 3, 0.1)

y=np.sin(x)

plt.plot(x,y)

plt.show()

 

分割してRAWデータとローパスフィルタをかけたデータをプロット

 

 

# This program can plot sound data as graphs on matplot 

 

import pyaudio

import sys

import time

import wave

from numpy import *

import numpy as np

import matplotlib.pyplot as plt

import os

 

if __name__ == '__main__':

    chunk = 1024

    FORMAT = pyaudio.paInt16

    CHANNELS = 1

    #サンプリングレート、マイク性能に依存

    RATE = 16000

    #録音時間

    RECORD_SECONDS = input('Please input recoding time>>>'

    #pyaudio

    p = pyaudio.PyAudio()

 

    #マイク0番を設定

    input_device_index = 0

    #マイクからデータ取得

    stream = p.open(format = FORMAT,

                    channels = CHANNELS,

                    rate = RATE,

                    input = True,

                    frames_per_buffer = chunk)

    all =

    for i in range(0, RATE / chunk * RECORD_SECONDS):

        data = stream.read(chunk)

        all.append(data)

 

    stream.close()    

    data = ''.join(all)

    data=frombuffer(data, dtype="int16")/32768.0

    print data

    

    #Lowpass filter

    tap = 100

    aftlowpass_data =

    i = 0

    j = 0

    for i in range(0, len(data)-tap):

        sum_data = 0

        for j in range(0, 99):

            sum_data = sum_data + data[i + j]

        aftlowpass_data.append(sum_data / tap)

 

    #converting numpy-type-array

    np_data=np.array(data, dtype = np.float64)

    np_aftlowpass_data=np.array(aftlowpass_data, dtype = np.float64)

    

    #data plot

    plt.subplot(2,1,1)

    plt.plot(np_data)

    plt.subplot(2,1,2)

    plt.plot(np_aftlowpass_data)

    plt.show()

 

 

    

    p.terminate()

 

 

f:id:iroha112233:20160319112058j:plain

 

 

参考 

・スレッドによるタイマー

一定時間毎の繰り返し

Python スレッドをやってみる(3) | BTY備忘録

 

・numpy配列の作成・型変換

標準python、numpy、pandasを行ったり来たりするために① - Qiita

 

・matlibのインストール

Install numpy, matplotlib and drawnow for Python 2 - YouTube

 

・matplotの使い方

matplotlib入門 - りんごがでている