1. wavファイルの読み込み
import wave
from pylab import *
def openFile(filename):
wf = wave.open(filename + ".wav", "r" )
fs = wf.getframerate() # サンプリング周波数
x = wf.readframes(wf.getnframes())
x = frombuffer(x, dtype= "int16") / 32768.0 # -1 - +1に正規化
printWaveInfo(wf)
wf.close()
return x, fs, wf.getnchannels(), wf.getnframes()
from pylab import *
def openFile(filename):
wf = wave.open(filename + ".wav", "r" )
fs = wf.getframerate() # サンプリング周波数
x = wf.readframes(wf.getnframes())
x = frombuffer(x, dtype= "int16") / 32768.0 # -1 - +1に正規化
printWaveInfo(wf)
wf.close()
return x, fs, wf.getnchannels(), wf.getnframes()
def printWaveInfo(wf):
"""WAVEファイルの情報を取得"""
print ("チャンネル数:", wf.getnchannels())
print ("サンプル幅:", wf.getsampwidth())
print ("サンプリング周波数:", wf.getframerate())
print ("フレーム数:", wf.getnframes())
print ("パラメータ:", wf.getparams())
print ("長さ(秒):", float(wf.getnframes()) / wf.getframerate())
"""WAVEファイルの情報を取得"""
print ("チャンネル数:", wf.getnchannels())
print ("サンプル幅:", wf.getsampwidth())
print ("サンプリング周波数:", wf.getframerate())
print ("フレーム数:", wf.getnframes())
print ("パラメータ:", wf.getparams())
print ("長さ(秒):", float(wf.getnframes()) / wf.getframerate())
2. wavファイルの保存
def save(data, fs, bit, filename):
"""波形データをWAVEファイルへ出力"""
data = [int(v * 32767.0) for v in data]
data = struct.pack("h" * len(data), *data)
w = wave.Wave_write( filename + ".wav")
w.setnchannels(1)
w.setsampwidth(int(bit/8))
w.setframerate(fs)
w.writeframes(data)
w.close()
w.setchannels: 1:モノラル音声、2:ステレオ音声で保存
w.setsampwidtn: bit = 16がよく使われる
w.setframerate: サンプリング周波数
3. 音を変化させてみる
今回は、アプリゲーム「アイドルマスター ミリオンライブ! シアターデイズ」のタイトルコールを用いて音を大きくしたり、合成したり、早送りしたりして見ます。
・iori
・volumeBoost
・synthsis
・fastForWard
コード: