プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

添付されたデータが存在しないので、一般論ですが、wavファイル(PCMデータ)には、振幅しか記録されていません。

では時間軸はどこにあるのかというと、それはデータの並びそのものが示します。デジタルデータは全てサンプリング周波数に従って量子化されるため、CDであれば44.1KHz=44100Hzで量子化され、1秒あたり44100個のデータが存在します。このデータの並び(の数)が時間軸となるわけです。88200個データがあれば、それは2秒になりますね。

当然ながら、サンプリング周波数が変われば、1秒あたりのデータの個数も変わります。
    • good
    • 0
この回答へのお礼

siremono2496様、

早速回答頂きありがとう御座います。
添付について、テキストファイルが添付できないようだったため
諦めておりました。すみません。

なるほど、時間は現れないのですね。
だから値をy軸にプロットしてx軸は並びだけにすると
音声グラフが得られるのですね。ひとつ気になることが御座います。
得られたデータでは、一列ではなく、二列でして、
一方が振幅だとすると、もう片方は何でしょうか・・・

もう一点教えて下さい。サンプリング周波数はファイルのどれを見れば
わかりますでしょうか。wavファイルのプロパティーを見ても記載がされていないようです。Bit rateというのが記載があり、これが1536kbps
となっておりますが、これは何でしょうか。サンプリング周波数と関係がありますでしょうか。 ちなみに、一秒間のデータで、49632のデータ数ありました。一秒のビデオ(つまり30フレーム)からとった音声ファイルでも、音声としては29.99999とか30.9999などの範囲かも知れないわけですね。間違っていたらご指摘ください。

お礼日時:2009/05/16 13:12

得られたデータが2列、とは、単にステレオのWaveデータを取得しただけじゃありませんか?



サンプリング周波数、ビットレート、ビット深度、のそれぞれの関係は、ざっくり言えば、
サンプリング周波数(1秒間をいくつ区切るか)×ビット深度(1サンプルをどれだけの幅で表現するか)=ビットレート(一秒間あたりのデータ量)
です。

wavereadじゃなくwavreadですよね?
http://infoshako.sk.tsukuba.ac.jp/InfoRes/jdoc/M …

このソフトは使ったことありませんが、これを見る限りサンプリングレートの数字は出力しないような気がします。

>Bit rateというのが記載があり、これが1536kbps
>一秒間のデータで、49632のデータ数ありました。

この数字は正確に1秒間、というわけではないんですね?
ビデオから適当にほぼ1秒、ということだと、おそらく48kHzのサンプリングレート、ステレオ(2チャンネル)、ビット深度(サンプルサイズ)16bit、に近い数字ですね。
ビデオの場合、音声が48kHzのサンプリングレートというのは一般的です。
48000×32(片チャンネル16bitステレオ)=1536000
で、ビットレートの計算は合います。

サンプリングレート等の情報はiTunesのような一般的なプレーヤでも表示できます。

iTunesの場合、登録した曲を選択して右クリック>プロパティ、の「概要」タブ
iTunesの場合、サンプリングレート=サンプルレートとなります。
「オーディオデータの意味」の回答画像2

この回答への補足

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

補足日時:2009/05/16 15:38
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/16 15:33

#2です。



時間を取得したい、ということですが、すでに取得してるじゃありませんか。
サンプリング周波数(サンプリングレート)を取得した時点で、それは時間軸の情報です。
(wavreadで直接取得できないなら、他のソフトであらかじめ調べればいいだけの話。)

サンプリング周波数が48kHzとわかっているなら、データを48000個カウントすれば、それで1秒です。
つまり、48サンプル毎に1ミリ秒。

一般的なCDの音声の場合、サンプリング周波数は44.1kHzですから、441サンプル毎に10ミリ秒。
単純な割り算です。

# ちなみに、Matlabにもwavreadにも詳しくはないです。
# おかげさまで今日初めてこういうソフトがあることを知りました。興味深いソフトですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!