Pythonでwavファイルを読み込む
PythonでSciPyを使って音声ファイル(wavファイル)を読み込んでみます。読み込んだデータはnumpy.arrayになります。
目次
scipy.io.wavfile.readメソッド
from scipy.io.wavfile import read
rate, data = read(filename, [mmap])
変数 |
内容 |
---|---|
filename |
ファイル名。 |
mmap |
省略可。規定値はFalse。 |
rate |
音声データのサンプリング周波数。int。 |
data |
音声データとデータタイプのnumpy.array。 |
読み込んだデータのデータタイプは、元の音声ファイルのフォーマットによって変わります。 例えば、CDなどで使われる16bit PCMを読み込んだ場合はint16になります。
wavファイル読み込み例
GarageBandで適当に作ったwavファイルがあります。音声データのフォーマットは、44.1kHzの16 bit PCMです。いわゆる一般的なCD音質です。
このwavファイルを読み込んでみます。
>>> from scipy.io.wavfile import read
>>> rate, data = read('test.wav')
/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/site-packages/scipy/io/wavfile.py:273: WavFileWarning: Chunk (non-data) not understood, skipping it. WavFileWarning)
>>> rate
44100
>>> data
array([[ 7812, 7812],
[14819, 14819],
[20809, 20809],
...,
[ 0, 0],
[ 0, 0],
[ 0, 0]], dtype=int16)
>>>
警告が出てます。SciPyがwavファイルのチャンク読み取れなくて、スキップしたようです。データじゃないようなので、大丈夫かな?
サンプリング周波数は44100Hz、つまり44.1kHzですね。データはdtype=int16のarrayになっています。
読み込んだデータを表示してみましょう。
>>> from matplotlib import pyplot as plt
>>> plt.plot(data)
[<matplotlib.lines.Line2D object at 0x11e974390>, <matplotlib.lines.Line2D object at 0x11e974550>]
>>> plt.show()
こんな感じで読み込まれています。
公開日
広告
Pythonカテゴリの投稿
- PythonからWindows RuntimeのAPIを使ってみる
- Pythonから外部のアプリケーションを実行する
- PythonでApacheのログを読む
- PythonでURLを結合する
- PythonでURLを解析する
- Pythonでtar.gzなファイルを解凍(展開)する
- Pythonでwavファイルを書き出す
- Pythonでwavファイルを読み込む
- Pythonでデータを整形して出力する
- Pythonでハミング窓関数を作る(SciPy編)
- Pythonでブール値を数値に変換する
- Pythonでモジュールをインポートする
- Pythonで数値を比較する
- Pythonで文字の内容から真偽値の判定をする
- Pythonで自前の関数を定義する
- Pythonで論理演算する
- Pythonのprint関数で改行せずに出力する
- Pythonのプログラムを終了する
- Pythonの関数には参照を渡す
- Windows10 バージョン1703 Creators Update にPythonとSphinxをインストール
- Windwos10 バージョン1703 Creators Update にPythonとSphinxをインストール (Anaconda編)
- reStructuredTextの表
- ダウンロードしたファイルのチェックサムをPythonで確認してみた
- 反復処理 (while)
- 反復処理(for)
- 条件分岐
- 自作のモジュールをインポートする