はじめに
「音をテーマに機械学習の題材を調査する」という宿題を頂いたことから、まずは音を収集する方法を調べてみたのでメモします。
環境
- MacBook Air
- Python 3.6.0 Anaconda custom (x86_64)
- Jupyter Notebook
ライブラリのインストール
pyaudioというのを使うとすぐにできるという情報があったのでインストールします。
まずは依存しているPortAudioというライブラリをインストールします。
./configure --disable-mac-universal && make
sudo make install
Macでは、pyaudioをインストールしようとすると「pa_mac_core.hがないよ」って言われるので、以下のコマンドでコピーしておきます。
sudo cp include/pa_mac_core.h /usr/local/include/
引き続き、pyaudioのインストール
pip install pyaudio
以上。
録音と可視化
raspberryPi と pyaudioで録音、音声波形処理
上記のサイトに音を録音してファイルに保存する方法が記載されていたので、こちらを参考にさせて頂きました。
import pyaudio
import sys
import time
import wave
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 3
p = pyaudio.PyAudio()
stream = p.open(
format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = chunk
)
all = []
for i in range(0, int(RATE / chunk * RECORD_SECONDS)):
data = stream.read(chunk)
all.append(data)
stream.close()
p.terminate()
data = b''.join(all)
ここで、dataに音のデータが入るので、これを以下の手順で可視化します。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.frombuffer(data, dtype="int16") / 32768.0
plt.figure(figsize=(15,3))
plt.plot(x)
plt.show()
x = np.fft.fft(np.frombuffer(data, dtype="int16"))
plt.figure(figsize=(15,3))
plt.plot(x.real[:int(len(x)/2)])
plt.show()
柏手を数回打った音を録音した結果を可視化すると以下のとおりでした。
上が音の波形で、下がFFTの結果です。
ということで、さてこれからどうしよう...(^_^;)
その後
スクリプトを改造し、以下の記事を書いてみました。あわせてご覧下さい(^-^)