スキップしてメイン コンテンツに移動

Mathematica 9.0買ったドー

データ解析をやりたい。

音声データをマルチマイクで加工して音源推定を行いたいのだ。いずれ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時間くらい。まだまだ楽しめそう。

参考にしたページ

コメント

このブログの人気の投稿

瞬間日記のデータをday oneに移動させるのだ

瞬間日記をiPodを購入した2010年から使ってきたが、day oneが人気なので使ってみた。なかなかよかった。コマンドライン(CLI:Command Line Interface)から入力できるし、クラウドで同期できるのもいい。見た目もきれい。安定しているのもいい。 という訳で、瞬間日記からday oneにデータを引っ越しすることにした。 (このページで半角の &gt; と表示されたら半角の”>”記号だと思ってください。HTMLの仕様のインプリバグでしょう。) 特定の日記アプリ間のデータの移動とは人生で一回しかないだろうから汎用性など考えずに間違えないように慎重にすることが大切だ。確かめて確かめて。このページはそんな備忘録である。また、瞬間日記のデータをday oneに移動させたという記事も見つけられなかったので誰かのお役に立てるかもしれない。でも自己責任でね。 瞬間日記は独自フォーマット(.dat3)や標準的な(.sqlite)、(.csv)でもMacにバックアップできる。使い勝手のいいcsvファイルは本文だけで写真情報が欠落している。瞬間日記のデータを引き上げるのは色々試したが、テキストばかりでなく写真も移動させたいの結局メールでバックアップすることにした。瞬間日記側で自分にひと月毎のバックアップをメールする。3年半分。ソチオリンピック開会式を見ながら作業でもれなく終了。 これは瞬間日記が30枚しか1つのメールに写真を貼付できないので、ひと月分だけせっせとメールする。 届いたメールはOSX側のmail.appで開くが、~/Libraryに保存されているelmsでなく、単にテキストファイルでmail.app側の機能を使って出力することにする。 瞬間日記のデータを取り出し、day oneにエントリできるくらいの粒度のファイルにするまでの流れ: iPodの瞬間日記のひと月分に区切ったバックアップデータを自分のメールアドレスに送信する OSXのmail.appで受信したメール全部(件名"MomentDialy"で始まるメールを一つのメールボックスに束ねる。例えばMomentDiaryというメールボックスに全部入れる mail.app上のメールボックスMomentDiary内の全部のメールを選択する。つまり⌘+a。 ...

電解コンデンサの容量抜けを測ってみた

中古オーディオ屋でスーパーウーハーを買ってから7〜8年経つだろうか。 1989年に発売されたONKYOの SL-10 という機種で、現役で商品が店頭に並んでいた時にピアノ曲に深みが増すことにちょっとした感動を覚えて中古屋で見つけた時2万円で即購入したのだ。 スピーカのエッジのクズがエンクロージャのダクトから出てきて開けてみたら見事エッジ全体が下手っていた。これを奇麗にして、ウレタンエッジに交換することにした。写真1、と写真2がそのBefore/Afterだ。 写真1 SL-10のスピーカのエッジを交換してみた (エッジを取り除いた状態) 写真2 SL-10のエッジを交換したスピーカ また、SL-10が勝手に自己発振する様になっていたのでコンデンサの容量が抜けたと想像してこれらを交換することにした。これは電解コンデンサの容量が抜ける事でフィードバック回路の時定数が変わってしまいネガティブフィードバックがポジティブフィードバックに位相が回って知ったのでは予想した。 電解コンデンサを交換したSL-10のコンデンサ 交換した電解コンデンサ達(容量は抜けていなかった)  マルツ電波で発注しておいたオーディオ用のコンデンサを付け替えた。ただ、それだけでは詰まらないので交換したコンデンサを測ってみた。使った測定器は卓上テスタ(GBW 9000A)の付属機能。最大20μFまでしか測れなかったが、結論からすると交換した電解コンデンサの容量抜けは無かった。 測定例 定格(μF)   実測(μF) 10       10.19 10       10.00 4.7       4.78 3.3       3.27 1.0       1.01 0.47       0.46 というわけで直しても自己発振は直らないかも。明日組立ててみよう。

声紋・ソノグラム・スペクトルグラム

声紋(sonogram, spectrogram)は野鳥の声の分析に不可欠なツールです。横軸に時間、縦軸に周波数を取って、音の強さを色で表示します。 ここで用いられている処理は、音声である波形を周波数の信号に変換する時間−周波数変換(フーリエ変換)です。フーリエ変換するときに幾つかの調整できるパラメータがありそれぞれがどう関係しているのかをまとめてみました。案外、まとめて書かれているものがありません。そのため自分で調べました。厳密に定義しているのではなく備忘録です。初心者向けにコ ーネル大学の作成したCanary/Ravenのマニュアルの付録に鳥の声のスペクトル解析の章 がありこれを参考にしています[1]。 音声データのパラメータ 波形とは時間に対する強度が連続的に変化する信号を表します。音声は波形であり、ICレコーダは連続の波形を離散化(デジタル化)されて記録されます。離散化された信号も波形と呼びまし、今はディジタル信号を意味する事が多いです。 連続な信号をとびとびの信号で表すので失われる情報があります。しかし、必要とする周波数帯域の2倍以上でサンプリングレート(サンプリング周波数)で離散化すれば完全に復元できるとシャノンさんが証明しました。 この関係は、次の表のようになります。 サンプリングレート(SR) 標本点の周期(ΔT) 192KHz 5.2μs 96KHz 10.42μs 48KHz 20.83μs 44.1KHz 22.67μs 音を声紋(スペクトログラム)にするには短い一定期間の波形データを切り出して(スライス)これを周波数変換し並べます。この短時間の周波数変換を短時間フーリエ変換:STFT(Short Time Fourier Transform)と呼びます。問題はこの時間の選び方です。時間と言っても離散化されているのでその切り出す波形の個数です。切り出された波形をフレームと呼んだりチャンクと呼んだりします。ここではフレームと呼びます。1フレームの波形の個数をフレーム長(Flame Length)と呼びます。各アプリではもっとわかりやすい言葉を使っていますが同じ意味です。 Amadeus Pro : FFT Size Audacity : ウィンドウサイズ 鳥の...