人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

Pythonで音声信号処理①

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()

 

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()) 

 

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. 音を変化させてみる

 今回は、アプリゲーム「アイドルマスター ミリオンライブ! シアターデイズ」のタイトルコールを用いて音を大きくしたり、合成したり、早送りしたりして見ます。

 

www.youtube.com

 

・iori

 

・volumeBoost

 

 ・synthsis

 

・fastForWard

 

 

 

コード: 

github.com