Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

Pythonで音楽再生 | wave, PyAudio

Pythonで音楽再生 | wave, PyAudio


Pythonで音楽解析処理を行っていくので、まずwaveファイルの取り扱いかたについてしらべた。大きく分けると、

1. WAVEファイルの読み込み(wave標準ライブラリ)

2. WAVEファイルの再生(PyAudio)

上の二つに分けられる。waveモジュールというのはPythonの標準ライブラリです。

21.5. wave — WAVファイルの読み書き(原文)

wave モジュールは、WAVサウンドフォーマットへの便利なインターフェイスを提供するモジュールです。このモジュールは圧縮/展開をサポートしていませんが、モノラル/ステレオには対応しています。http://docs.python.jp/2/library/wave.html

 

1. WAVEファイルの読み込み(wave標準ライブラリ)

 

waveモジュールを使う事で、waveファイルからデータを読み込めます。
しかし、読み込んだデータは、その後数値演算を行うためには、そのまま使えないので、NumpyやScipyを使い数値配列へ変換する必要があります。
上の例だとScipyのfromstringモジュールを使って、waveモジュールから取得した文字型データを数値型に変換しています。

ちなみに、オーディオの再生が不要であれば、waveモジュールを使わない方法もあります。

scipy-wav.py
  Scipy.io.wavfileモジュールを使えば、簡単に数値型で得る事ができます。(注意: オーディオの再生はできません)

2. WAVEファイルの再生(PyAudio)

さて、オーディオを再生しましょう。オーディオの再生にはPyAudioを使うとよいでしょう。

imgres
pyaudio:docs   pyaudio-sample.py    

どうやらPythonの標準ライブラリだけではオーディオの再生はできない(?)ようです。グラフ等を表示するだけであれば、waveモジュールやScipy等を使って、数値データだけ取得すれば良いのですが、再生となると別にPyAudioが必要になります。 さて、これらを使って、音楽データの信号解析コードを作ろうとしているのですが、やたらややこしいので、一つのクラスとしてまとめました。名前はAudioManagerクラスとしています。
少々長いですが、これを作っておく事で、一つのオブジェクトで、再生と数値データを取得することができるようになりました。これを使って、GUIアプリを作っていく予定です。


↓は信号処理初心者にはおすすめです。


Pythonからはじめる数学入門

Pythonからはじめる数学入門

行列プログラマー ―Pythonプログラムで学ぶ線形代数

行列プログラマー ―Pythonプログラムで学ぶ線形代数

MATLAB対応 ディジタル信号処理

MATLAB対応 ディジタル信号処理