3.4 Import[] によるサウンド・ファイルの読み込み

(2017/11/29 加筆: 従来は、 単に Import[ファイル名] としてサウンド・ファイルを読み込んでいたが、 Mathematica 11 からは、 Import[ファイル名, "Sound"]"Sound" を指定しないと、 以下の説明の多くが当てはまらなくなった。)


Import[] で画像ファイルやサウンド・ファイルの入力が可能である。

例えば WAVE ファイルを読み込んで、 サウンド・データとして変数に格納できる。
  SetDirectory["C:/Document and Settings/mk/デスクトップ"]
  snd = Import["piano.wav","Sound"]

サウンドである snd は、Show[snd] などで再生できる (単に snd を評価しても良い)。

図示すると
  snd = {
          {
            {
              {l1,l2,...,lN},           <-  snd[[1,1,1]]
              {r1,r2,...,rN}            <-  snd[[1,1,2]]
            },
            SampleRate                  <-  snd[[1,2]]
          }
        }
残念ながら単なるリストでないので、
これは出来ない
  {{{leftChannel,rightChannel},samplingRate}} = snd;
のような代入はさせてもらえないが、例えば
  leftChannel=snd[[1,1,1]]; rightChannel=snd[[1,1,2]]; samplingRate=snd[[1,2]]
あるいは
  {{leftChannel,rightChannel},samplingRate}={snd[[1,1]],snd[[1,2]]}
とすると、左チャンネルの数値データ leftChannel, 右チャンネルの数値データ rightChannel, サンプリング周波数 samplingRate が得られる。

ListPlay[] で再生してみる
  snd=Import["WAVEファイル名","Sound"];
  ListPlay[snd[[1,1,1]],SampleRate->snd[[1,2]]]
   あるいは
  ListPlay[snd[[1,1]],SampleRate->snd[[1,2]]]

最近の Mathematica では、項目 (要素名) を指定した読み込みが可能である。

どういう項目があるか
  Import["piano.wav","Elements"]
とすると
  {"AudioChannels", "AudioEncoding", "Data", "SampledSoundList", "SampleRate", "Sound"}
という結果を返す。

チャンネルの数
  numofchannels=Import["piano.wav","AudioChannels"]
これは多分 numofchannels=Length[Import["piano.wav"][[1,1]]] と同じ。
1 とか 2 とか、チャンネル数を返す。つまりステレオならば 2, モノラルならば1である。

エンコードの方法
  Import["piano.wav","AudioEncoding"]
UnsiginedInteger8 のような形式を返す。 まあ、これは Mathematica が抽象化してくれていて、あまり気にならないところ (C でプログラムを書く時は面倒だ)。

サンプリング周波数
  samplingrate=Import["piano.wav","SampleRate"]
これは多分 samplingrate=Import["piano.wav"][[1,2]] と同じ。
44010 のようなサンプリング周波数を返す。

  snd = Import["piano.wav","Sound"]
これは多分 snd = Import["piano.wav"] と同じ。

  data=Import["piano.wav","Data"];
これは多分 data=Import["piano.wav"][[1,1]]; と同じ。

  s=Import["piano.wav","SampledSoundList"];
これは多分 data=Import["piano.wav"][[1]]; と同じ。

「同じ」と言ったものは、Equal[] で確認できる。

あまり使用経験はないが、ほぼ裏返しの Export[] が使える。



桂田 祐史