【Python】wav 파일을 해석해 본다(추가 플러그인 불필요 Ver)

파이썬과 함께 제공되는 기본 GUI 키트,
tkInter의 캔버스를 사용하여 억지로 wav의 파형을 그립니다.

추가로 필요한 플러그인 등은 일절 없습니다.
파이썬과 재생하고 싶은 음원을 준비하기만 하면 됩니다.
※음원은 「test.wav」를 해석하도록(듯이), 이하의 프로그램은 짜고 있습니다.

파이썬
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter
import wave
import numpy as np

window_width = 600
window_height = 500

root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry(str(window_width) + "x" + str(window_height))

# wavデータの読み込み
wav = wave.open("./test.wav")

# オーディオ部分の先頭に移動
wav.rewind()

# バイナリ読み込み
wavdata = wav.readframes(wav.getnframes())

# intに変換
wavdata = np.frombuffer(wavdata,'int16')


#
# キャンバスエリア
#
canvas = Tkinter.Canvas(root, width = window_width, height = window_height)

# X軸のステップ数
step = float(window_width)/float(wav.getnframes())
x = 0           # X軸
b_i = 0         # 一つ前の値

for c,i in enumerate(wavdata):
    # 一つ前の座標をおいておく
    if (c%2 == 0):
        b_i = i
        x = x + step
        continue

    # 一つ前の座標と,今回の座標を使って,波形グラフを作成
    canvas.create_line(int(x), (b_i/window_height)+(window_height/2), int(x+step), (i/window_height)+(window_height/2), fill = "blue")

    # X座標をstep分進める
    x = x + step
    print "(x,y) = ("+ str(x) +","+ str(i) +")"

#中央線
canvas.create_line(0, window_height/2, window_width, window_height/2, fill = "black")


#
# キャンバスバインド
#
canvas.place(x=0,y=0)


#
# wavをクローズ
#
wav.close()

root.mainloop()



잡으로는 있습니다만, 이런 느낌으로 출력됩니다.

좋은 웹페이지 즐겨찾기