Python で wave ファイル生成

wave 形式の音声ファイルを出力する Python プログラム。

#!/usr/bin/env python
import wave, math, array
SAMPFREQ = 44100
LENGTH = 3

def wave_init(fname, sampf):
   f = wave.open(fname, 'w')
   f.setnchannels(1)
   f.setsampwidth(2)
   f.setframerate(sampf)
   f.setcomptype('NONE', 'not compressed')
   return f
 
def prepare_array(n):
   data = array.array('h')
   data.extend([0]*n)
   return data
 
def wave_write(f, data):
   f.writeframesraw(data.tostring())
   f.close()
 
def sin_wave(fname, freq):
   f = wave_init(fname, SAMPFREQ)
   data = prepare_array(SAMPFREQ * LENGTH)
   a = math.pi * 2.0 * float(freq) / float(SAMPFREQ)
   for i in range(SAMPFREQ * LENGTH):
      ft  = int(math.sin(a * float(i)) * 30000.0)
      data[i] = ft
   wave_write(f, data)
 
if __name__ == "__main__":
   sin_wave('sinwave.wav', 440)

実行すると,カレントディレクトリに sinwave.wav というファイルが出来上がります。
おもしろい。

参考文献:
千葉大学 情報通信システム 講義資料(PowerPoint)

そして,この資料で面白いと思ったのはこっちです。この授業受けてみたいなぁ。




Leave a comment





このエントリーのはてなブックマーク (-)