• ベストアンサー

オーディオデータの意味

こんにちは、 音声データ、waveファイルを数値化してグラフ化したいのですが、 数値化したデータで、どちらかが振幅、どちらかが時間とでるのかと 思っていたのですが、どちらも時間と思しき数値ではありません。 実際、片方をx軸、片方をy軸にしても音声グラフがあらわれません。 逆に、両方ともy値としてプロットすると音声グラフが現れます。 音声データでは、二つの数値は何を意味するのでしょうか・・・ 説明が下手で申し訳ありません。waveファイルをMatlabのwavereadというコマンドで得たデータでして、それをこちらへ添付しました。 大変基本的なことかもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

得られたデータが2列、とは、単にステレオのWaveデータを取得しただけじゃありませんか? サンプリング周波数、ビットレート、ビット深度、のそれぞれの関係は、ざっくり言えば、 サンプリング周波数(1秒間をいくつ区切るか)×ビット深度(1サンプルをどれだけの幅で表現するか)=ビットレート(一秒間あたりのデータ量) です。 wavereadじゃなくwavreadですよね? http://infoshako.sk.tsukuba.ac.jp/InfoRes/jdoc/MATLAB5/jhelp/techdoc/ref/wavread.html このソフトは使ったことありませんが、これを見る限りサンプリングレートの数字は出力しないような気がします。 >Bit rateというのが記載があり、これが1536kbps >一秒間のデータで、49632のデータ数ありました。 この数字は正確に1秒間、というわけではないんですね? ビデオから適当にほぼ1秒、ということだと、おそらく48kHzのサンプリングレート、ステレオ(2チャンネル)、ビット深度(サンプルサイズ)16bit、に近い数字ですね。 ビデオの場合、音声が48kHzのサンプリングレートというのは一般的です。 48000×32(片チャンネル16bitステレオ)=1536000 で、ビットレートの計算は合います。 サンプリングレート等の情報はiTunesのような一般的なプレーヤでも表示できます。 iTunesの場合、登録した曲を選択して右クリック>プロパティ、の「概要」タブ iTunesの場合、サンプリングレート=サンプルレートとなります。

reooreo
質問者

お礼

完璧です。ようやくわかりました!!ありがとう御座います。

reooreo
質問者

補足

全く脱線しますが、Matlabにもお詳しいご様子なのでお伺いさせて下さい。とても単純なことなのかもしれませんが、Matlabでそのままグラフを描くと、X軸が時間ではなく、なんというのでしょうか、サンプルの順番になりますね。でも実際表記したいのは時間でありまして、なんとかそれを表記したいのですが、いかがでしょうか。すみません、Matlab初心者なもので、なにとぞよろしくお願いします。

その他の回答 (2)

回答No.3

#2です。 時間を取得したい、ということですが、すでに取得してるじゃありませんか。 サンプリング周波数(サンプリングレート)を取得した時点で、それは時間軸の情報です。 (wavreadで直接取得できないなら、他のソフトであらかじめ調べればいいだけの話。) サンプリング周波数が48kHzとわかっているなら、データを48000個カウントすれば、それで1秒です。 つまり、48サンプル毎に1ミリ秒。 一般的なCDの音声の場合、サンプリング周波数は44.1kHzですから、441サンプル毎に10ミリ秒。 単純な割り算です。 # ちなみに、Matlabにもwavreadにも詳しくはないです。 # おかげさまで今日初めてこういうソフトがあることを知りました。興味深いソフトですね。

noname#194317
noname#194317
回答No.1

添付されたデータが存在しないので、一般論ですが、wavファイル(PCMデータ)には、振幅しか記録されていません。では時間軸はどこにあるのかというと、それはデータの並びそのものが示します。デジタルデータは全てサンプリング周波数に従って量子化されるため、CDであれば44.1KHz=44100Hzで量子化され、1秒あたり44100個のデータが存在します。このデータの並び(の数)が時間軸となるわけです。88200個データがあれば、それは2秒になりますね。 当然ながら、サンプリング周波数が変われば、1秒あたりのデータの個数も変わります。

reooreo
質問者

お礼

siremono2496様、 早速回答頂きありがとう御座います。 添付について、テキストファイルが添付できないようだったため 諦めておりました。すみません。 なるほど、時間は現れないのですね。 だから値をy軸にプロットしてx軸は並びだけにすると 音声グラフが得られるのですね。ひとつ気になることが御座います。 得られたデータでは、一列ではなく、二列でして、 一方が振幅だとすると、もう片方は何でしょうか・・・ もう一点教えて下さい。サンプリング周波数はファイルのどれを見れば わかりますでしょうか。wavファイルのプロパティーを見ても記載がされていないようです。Bit rateというのが記載があり、これが1536kbps となっておりますが、これは何でしょうか。サンプリング周波数と関係がありますでしょうか。 ちなみに、一秒間のデータで、49632のデータ数ありました。一秒のビデオ(つまり30フレーム)からとった音声ファイルでも、音声としては29.99999とか30.9999などの範囲かも知れないわけですね。間違っていたらご指摘ください。

関連するQ&A

  • Matlab 2行の行列をプロットしたいのですが

    こんにちは、Matlabを使い始めのものです。 二行の行列(2x10とか2x40など)にについて、一行目をx座標、二行目をy座標としてグラフ化したいのですが、うまくいきません。 自動的にx座標は列の番号となり、二つのグラフが現れてしまいます:y座標に一行目、二行目、両方がプロットされてしまいます。どうにか、一行目をx、二行目をy座標としてグラフ化できないでしょうか。おそらく、とても単純なことなのかもしれないのですが、どうしてもわからず、とても歯がゆい思いをしています・・・。どうかご教示ください。 何をしたいかといいますと、音声データをMatlabで取り込んだのですが、振幅データがずらっと並んだ、1x500000とかの行列が得られます。 これを、プロットすると、x軸はサンプル番号が並ぶわけですが、本当はx軸は時間であって欲しいため、音声データの行列にひとつ行を足して、時間軸を作ってあげました。つまり、今手元にあるのは、2x500000の行列で、一行目が時間、二行目が振幅となっています。これをx軸が時間軸、でy軸が振幅となるようにグラフ化してあげたいと考えています。 文章がわかり辛くて申し訳ないのですが、何卒よろしくお願いします。

  • 対数データについて

    音声学の音声データの数値表を、対数グラフにまとめたいのですが、X数値軸とY数値軸の交点がどうしても望みどおりに行きません。。。 Y数値軸を上から下にいくほど数値を増やし、X数値軸を右から左に数値を増やすように書きたいのですが、どうやったら良いのでしょうか?

  • データをリアルタイムのようにグラフ化

    MATLABで作成した.matファイルもしくはExcelファイルなどに格納した あるデータ配列の数値をグラフ化するときに 時間によって変化するのが目に見えるようにするにはどうすればいいでしょうか? 例えば 100行2列のデータを2次元折れ線グラフとして表示するときに プログラムを実行すると1秒ごとに1行分のデータがプロットされ 時間ごとにグラフが推移していくようにしたいです。 また、そのような変数をいちいち与えず ファイルを読み込むだけにしたいのですが どのようなファイル形式ならばできるのでしょうか?

  • 衝撃GとΔVのグラフが意味することを教えてください。

    衝撃GとΔVのグラフが意味することを教えてください。 トラック荷台の衝撃を計測しましたが、解析ソフトの中に、ピークG(Y軸)とΔV(X軸)のグラフを表示するコマンドがありました。このコマンドでデータをプロットした時、なにをどう読み取ればいいのでしょうか? お分かりの方、いらしゃいましたら教えてください。

  • excelの2軸上の折れ線で2軸のデータが異なる場合について

    Excelのグラフ作成で2軸上の折れ線を利用しようとしているのですが、例えば、Y軸の第一項目のデータ数が10個で第2項目が5個ある場合に、第2項目のプロットが線でつながりません。これをつなげる方法をどなたか教えてください。 (例) x軸  第一y軸  第2y軸 0    1     0.5 2    2     0.7 4    3  6    4     0.8 8    5 10    6    1.1 12    7 14    8    1.2 ※この第2y軸のプロットを線でつなげたい。 よろしくお願いします。

  • matlabのグラフ内で指定したy値のx値の求め方

    matlab初心者です matlabで楽器音のpwrファイルからグラフをプロットしました。 今の目的は、15dB以上から15dB以下になるまでを音の持続時間として計測することです。 ですが、15dB時のx軸の値(時間)の求め方がわかりません。 x=ファイル名(y==15) のように記述もしてみましたが、yが定義されていないとエラーが起きてしまい、何がこのpwrファイルのyの値に相当するのかわかっていません。 解決方法がわかる方は教えていただけると幸いです。

  • デシベルへの変換

    matlabで音声ファイルを読み込み、各サンプルを数値化しました。 16bitで量子化しているので、各サンプルはだいたい-32000から32000くらいの値をとります。さらに、これをフーリエ変換し、絶対値をとって振幅スペクトルを求めました。 ここで困った事なんですが、振幅スペクトルをプロットしたときに、縦軸をデシベルで表現するにはどうしたらいいんでしょうか? デシベルの求め方は20log10(x[パスカル]/20μ[パスカル])と教わりましたが、matlabで扱っている値はパスカルではないので単純に代入するわけにもいかないし…。 自動で変換してくれるツールとかじゃなくて、自力で計算する方法を教えて下さい。お願いします。

  • エクセルの散布図がおかしいです。

    エクセルでデータをまとめるために散布図でグラフを作ったのですが、どうやってもグラフがずれてしまいます。 X日目  データ1(Y1)  データ2(Y2) 0 -300 5.8 1 -260 5.76 2 -270 5.62 4 -250 5.79 7 -290 5.66 14 -310 5.82 大体このようなデータで、データ1を第1軸、データ2を第2軸で表示したいです。 データ1の方はずれてないのに、データ2の方だけ全体的に左にずれてしまいます。 例えばX軸の7の真下よりも左側にデータ2の7日目のデータがプロットされているといった感じです。 データ2だけ全てのプロットがX軸の正しい位置より左側にプロットされています。 どうすれば直るでしょうか? なお第2軸を設定しなかった場合には正しい位置にプロットされています。第2軸を設定するとずれます。 使用しているソフトはkingsoft2010です。

  • Sma4

    Sma4を使ってグラフ作製をしたいと思っています。データはエクセルに入っているのですが、一つのセルの中にカンマをはさんで二つの数値があります。つまり1列の中に 1,2 2,4 3,6 ・・ ・・ というようにデータが入っています。各列をそれぞれX軸、Y軸にとってプロットしたいのですが、どうしてもうまくいききません。教えてください。 エクセルのデータはCSV(カンマ区切り)です。

  • データをプロットするツール

    大量のデータ(サンプル値)からグラフを描画するツールを探しています。 実験で使用するのですが、現在使用しているmatlabでは プロットする点が多すぎて、表示できない状況です。 使用しているPCのスペックはそれほど低くはないのですが・・・ CPUはPentium4 3.2GHzで、メモリも1Gあります。 そこで、matlabより動作が軽く、データをプロットすることのできるツールを探しています。 何かおススメのツールがありましたら、教えてください。

専門家に質問してみよう