Python numpyとwaveライブラリを利用したwaveファイルの読み込み
Sponsored Links
皆さんこんにちは
お元気ですか?私は眠い
さて、音声関係のファイルですね。
Pythonではwaveファイルを読み込み、書き込みするようなライブラリが予め用意されています。
さっそく使ってみましょう。
サンプルソースコード
#coding: utf-8 import wave import sys import numpy as np file_name = sys.argv[1] """読み込み作業""" wave_file = wave.open(file_name,"r") #Open print wave_file.getnchannels() #モノラルorステレオ print wave_file.getframerate() #サンプリング周波数 print wave_file.getnframes() #フレームの総数 print wave_file.getparams() x = wave_file.readframes(wave_file.getnframes()) #frameの読み込み x = np.frombuffer(x, dtype= "int16") #numpy.arrayに変換 """書き込み作業""" write_wave = wave.Wave_write("aaa.wav") write_wave.setparams(wave_file.getparams()) write_wave.writeframes(x) write_wave.close()
waveファイルの読み込みは以下の通りで実行できます。
wave_file = wave.open(file_name,"r")
モノラルorステレオですね。
モノラルとステレオで信号処理での扱い方が異なってきますので、注意して扱ってください。
基本的にgetのメソッドを使うと、そのファイルの詳細な情報を取得することができます。
print wave_file.getnchannels() #モノラルorステレオ print wave_file.getframerate() #サンプリング周波数 print wave_file.getnframes() #フレームの総数
以下の方法でnumpyの形式でファイルを読み込むことができます。
x = wave_file.readframes(wave_file.getnframes()) #frameの読み込み x = np.frombuffer(x, dtype= "int16") #numpy.arrayに変換
最後に書き込み作業です
ステータスとフレームセットして閉じているのみ。
write_wave = wave.Wave_write("aaa.wav")
write_wave.setparams(wave_file.getparams())
write_wave.writeframes(x)
write_wave.close()
numpyを扱うとフーリエ変換とか色々できるので、信号を読取る方法を知っていると楽しいことができます。