データ解析をやりたい。
音声データをマルチマイクで加工して音源推定を行いたいのだ。いずれiPad用のアプリを開発するにせよまず、週末の限られた時間であれこれは試せないので効率的なプログラム言語が必要だ。
パソコンがまだキラキラしている頃、大学出たての頃、MacでMathematicaが使えることを知ってどうしても欲しくて大枚をはたいてMathematica 2.2を買った。16万円はしたと思う。MacOS8.Xの頃ではなかったか。手続き型の関数を勉強したものだ。
それから会社で使ってきたものの個人的には購入はできないできた。値段が高いから。MacもOSがOSXになり、MacOS9互換のRossetaもサポート停止しオールドマック(cube)をこれ専用にメインテナンスしてるのみ。
一年に数回数式処理がしたくなるもののMaximaを使ったりしてみた。
でも、やっぱり物足りない。効率的でない。
20年ぶりにMathematicaを買った。HomeEdition for Mac 9.0だ。日本の代理店では7万円以上するが、Wolframのストアでは67000円だった。この差はなんだ?これを10年使い切れば元もとれよう。
使ってみるとこれが凄い進化。基本の構造は変わってみたいだ。
それでは早速使ってみよう。マニュアルを読めばすむことなのだが、備忘録として書き留めておく。というより思い出し。
(1)音声データの取り込み
いやー簡単です。ここまでで2時間くらい。まだまだ楽しめそう。
音声データをマルチマイクで加工して音源推定を行いたいのだ。いずれiPad用のアプリを開発するにせよまず、週末の限られた時間であれこれは試せないので効率的なプログラム言語が必要だ。
パソコンがまだキラキラしている頃、大学出たての頃、MacでMathematicaが使えることを知ってどうしても欲しくて大枚をはたいてMathematica 2.2を買った。16万円はしたと思う。MacOS8.Xの頃ではなかったか。手続き型の関数を勉強したものだ。
それから会社で使ってきたものの個人的には購入はできないできた。値段が高いから。MacもOSがOSXになり、MacOS9互換のRossetaもサポート停止しオールドマック(cube)をこれ専用にメインテナンスしてるのみ。
一年に数回数式処理がしたくなるもののMaximaを使ったりしてみた。
でも、やっぱり物足りない。効率的でない。
20年ぶりにMathematicaを買った。HomeEdition for Mac 9.0だ。日本の代理店では7万円以上するが、Wolframのストアでは67000円だった。この差はなんだ?これを10年使い切れば元もとれよう。
使ってみるとこれが凄い進化。基本の構造は変わってみたいだ。
それでは早速使ってみよう。マニュアルを読めばすむことなのだが、備忘録として書き留めておく。というより思い出し。
(1)音声データの取り込み
- Directory[] フォルダの確認
- SetDirectory["~/Desktop"] 作業ディレクトリをデスクトップに設定
- data=Import["020A_120422_0812.WAV"] 音声データの取り込み。成功、簡単です。アウトプットに再生ボタンとかついているのでこれで聞こえた。なんとこの中にソナグラム(スペクトログラム)が既に表示されている。Mathematicaではスペクトログラム(Spectrogram)という。リストを与えれば表示するようだ。WAV形式のファイルを左右のチャンネルに分解しよう。
(2)音声データの理解
- Import[]関数は強力だが自動でなんでもやりすぎる。ちょっと音声データをお勉強。まずフォーマットが"Sound"というのがある。
- ここにサウンドの表現形式があった。
- Short[InputForm[data]]で形式を確認できた。出力は、次の通りだった。Out[22]/Short=Sound[SampledSoundList[{{0., 0., 0., << 1613276 >>, -1.19209*10^-7}, {0., << 1613279 >>}}, 96000]]
- フムフム。
- data[[1,1]]はSampledSoundListの形式で左右のチャンネルの音声データが入っている。
- data[[1,2]]にサンプリングレートが入っている。
- ListPlay[rightch, SampleRate -> rate]とすれば右の音声が再生できた。
(3)ソノグラム(スペクトログラム)の表示
- Spectrogram[rightch]で表示できました。
- Spectrogramの2つ目のオプションnは"長さn == 2^(Round[Log[2,(Sqrt[m])]] + 1)のパーティションを使う"とある。ここで、mはデータ長。計算すると2048だった。この数字を大きくしたり小さくするとフーリエ変換の変換粒度を変えられる。また、窓関数も変えられる。Optionで SampleRate -> rateとすると横軸は時間縦軸は周波数で表示された。下の図は256ポイントでサンプリング。
- 縦軸はダウンコンバートして調整すればいいのかな。これは専用ソフト(Amadeus Pro)にはまだかなわない感じだ。いやPlotRangeを使えばいいんだ。PlotRange ->{{0, 16}, {0, 12000}}とか。
いやー簡単です。ここまでで2時間くらい。まだまだ楽しめそう。
参考にしたページ
コメント