【Python】wavファイルを解析してみる(追加プラグイン不要Ver)
Pythonに付いているデフォルトGUIキットである,
tkInterのcanvasを使って,無理矢理wavの波形を描画してみます.
追加で必要なプラグインなどは一切ありません.
Pythonと,再生したい音源を用意するだけです.
※音源は「test.wav」を解析するように,以下のプログラムは組んであります.
python
#!/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()
雑では有りますが,こんな感じで出力されます.
Author And Source
この問題について(【Python】wavファイルを解析してみる(追加プラグイン不要Ver)), 我々は、より多くの情報をここで見つけました https://qiita.com/nnahito/items/c975f739d308cdf2968a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .