グラフの例:音の波形

WAVEファイルをテキスト化してRでプロットする

WAVEファイルに収められた音RやExcelなどで読めるテキスト形式にするための簡単なツールとして,ここでは WAVE file format で紹介している拙作の dumpwave.c を使う。これをコンパイルして,例えば

./dumpwave "/Applications/Microsoft Office 2008/Office/EntourageCore.framework/Versions/12/Resources/welcome.wav" > welcome.txt

としてテキストファイルに変換する。これをRで読み込む:

welcome = read.table("welcome.txt")

ここで summary(welcome) と打ち込むと,チャンネル V1V2 が読み取れたことがわかる。試しに V1(左チャンネル)の一部をプロットしてみる。

par(mgp=c(2,0.8,0))     # 軸マージン(デフォルト: c(3,1,0))
plot(welcome$V1, xlim=c(20000,21000), type="l", xlab="", ylab="", lwd=2)

音の波形

別の方法として,

plot(welcome$V1[20000:21000], type="l", xlab="", ylab="", lwd=2)

ともできる。両者は最大値・最小値の計算や目盛りが異なる。

非常に長いWAVEファイルについては,Rに全部読み込むのはたいへんなので,あらかじめ標準的なテキストフィルタで切り出すとよい。例えば20000行目から21000行目を取り出すには,次のような方法が考えられる。

sed -n 20000,21000p welcome.txt
head -21000 welcome.txt | tail -1001

tuneRを使う

RにはWAVEファイルを直接扱える tuneR(チューナー)というパッケージがある。これを使ってみよう。あらかじめパッケージインストーラまたはコマンドでtuneRをインストールしておく。コマンドの場合は次のように打ち込めばインストールできる:

install.packages("tuneR")

インストールされたパッケージを読み込む:

library(tuneR)

自分のパソコンにある適当なWAVEファイルを読み込む:

welcome = readWave("/Applications/Microsoft Office 2008/Office/EntourageCore.framework/Versions/12/Resources/welcome.wav")

ここで show(welcome) あるいは単に welcome と打ち込むとWAVEファイルのメタ情報が表示される。プロットの例をいくつか挙げる。

plot(welcome)
plot(extractWave(welcome, 20000, 21000))
plot(channel(extractWave(welcome, 20000, 21000), "left")

音の波形

tuneRを使えば音を作ることもできる。

x = sine(440, bit=16)
writeWave(x, "hoge.wav")

奥村晴彦

Last modified: 2010-06-11 12:33:48