• 締切済み

MP3のしくみについて

MP3やjpegはフーリエ変換の一種の離散コサイン変換で圧縮していると聞きました。 http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/fs.html によると、フーリエ変換は、正弦波と余弦波の重ね合わせで音を表現する、簡単にいうと音叉を何十本も同時に鳴らすと元の音が再現できる、という話です。 MP3、jpegもこれと同じ原理でしょうか?それをまず伺いたいです。違うなら解説お願いします。 また、jpegは8×8画素のブロックに分割してそれぞれを離散コサイン変換しているのはわかりましたが、 http://ja.wikipedia.org/wiki/JPEG#.E7.AC.A6.E5.8F.B7.E5.8C.96.E6.96... MP3は何秒間の音を離散コサイン変換しているのでしょうか? ご存じの方教えて下さい。

  • keeps
  • お礼率38% (364/950)

みんなの回答

回答No.3

576サンプルまたは192サンプルの選択式…のようですが…。 MP3には詳しくないのでちょっと自信がありません。本当にこの中途半端な数を使っているのでしょうか…。 また、サブバンド分割なる処理も入るようですがこれについて理解できていません。 一応Wikipediaを見る限りこの数字なのは正しそうですが…。 英語版Wikipedia、MP3のページ http://en.wikipedia.org/wiki/MP3#Encoding_audio 「During encoding, 576 time-domain samples are taken 」 「If there is a transient, 192 samples are taken instead of 576. 」 日本語版Wikipedia、AACのページ http://ja.wikipedia.org/wiki/AAC 「long blockが576点相当(32サブバンドx18点)、short blockが192点相当(32サブバンドx6点)であったMP3と比較して」 なおこのサンプル数が何秒に当たるのかはサンプリングレートによって違い、 44.1kHzであれば576×(1/44.1kHz)≒13ミリ秒になると思います。 バッファは今回の質問に無関係だと思います。

  • hrsmmhr
  • ベストアンサー率36% (173/477)
回答No.2

詳しくないですが… 多分サンプリングレートそのものか、その区間をさらに何分割かしたものだと思います。 44.1kHzとかいうやつです

noname#224896
noname#224896
回答No.1

 MP3圧縮では,JPEG圧縮での『離散コサイン変換』と若干異なり,『修正離散コサイン変換』または『変形離散コサイン変換』を利用しています.  JPEG圧縮は,8×8画素という固定サイズですが,MP3では,バッファごとに処理しています.  ご存知の通り,バッファは,PCによって異なり,さらに,どれくらいのバッファを1ブロックとして処理するかはエンコーダに依存します.  従って,MP3圧縮の何秒間は,上のバッファ数に依存するので,不明ということになります. Wikipediaによると,やはり,バッファは,下記の通りとなっており,何バッファ積んでいるかはPCに依存していることが判ります. 『CPU・制御装置などの内部処理装置との間で信号をやり取りする際に、入出力と処理との間で時間のズレを吸収・調整をするために一時的に情報を記憶する装置や記憶領域のこと。』

関連するQ&A

  • フーリエ級数、フーリエ変換、離散フーリエ変換

    こんばんは。 ・正弦波 ・余弦波 ・三角波 上記3つについて、それぞれ ・フーリエ級数 ・フーリエ変換 ・離散フーリエ変換 を求めよ、という課題を出されました。 周期2Tで、-T~Tの区間以外は0として考えていいとのことなのですが、全然分かりません。 教えていただけないでしょうか? よろしくお願いします。

  • ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値に

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(k=0~N-1) f(k)exp(-2πkni/N) を考えています。 また、離散フーリエ変換して得られるスペクトルは √(Re^2+Im^2) で計算します。 離散フーリエ変換を適用する関数を、 振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。 (この2つの信号は別々の信号で合成されていません。) サンプリング周波数を20[Hz]とした場合、サンプリングして得られるデータ列はそれぞれ、 直流: 「1, 1, 1, 1」 正弦波: 「0, 1, 0, -1」 となると想定されます。 (正弦波をサンプリングする場合は位相が関わってきますが、今回は気にしないで下さい。) このデータ列に対して上記の離散フーリエ変換を適用した場合、 得られるフーリエスペクトルの振幅値はそれぞれ、 直流: 「4」(直流のフーリエスペクトルの振幅値値) 正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値) となります。 (データ点数は上の通り4点) ここで質問なのですが、 離散フーリエ変換して得られるスペクトルの振幅値から元の関数の振幅値を求める場合、 フーリエスペクトルをサンプリングの総データ点数で割ることは数学的に納得できます。 しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、 直流: 「4 -> 1」 正弦波: 「2 -> 0.5」 となってしまい、直流は正しいのですが、正弦波の元の振幅値を正確に求めることは出来ません。 この例の場合、フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、 「フーリエスペクトルの振幅値*2/データ点数」 としてやらなければいけません。 上記のことに関して、なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。 当方、数学についてはあまり詳しくないため、簡単に説明して頂けると幸いです。

  • フーリエスペクトルの振幅について

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの 振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(k=0~N-1) f(k)exp(-2πkni/N) を考えています。 また、離散フーリエ変換して得られるスペクトルは √(Re^2+Im^2) で計算します。 離散フーリエ変換を適用する関数を、 振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。 (この2つの信号は別々の信号で合成されていません。) サンプリング周波数を20[Hz]とした場合、 サンプリングして得られるデータ列はそれぞれ、 直流: 「1, 1, 1, 1」 正弦波: 「0, 1, 0, -1」 となると想定されます。 (正弦波をサンプリングする場合は位相が関わってきますが、 今回は気にしないで下さい。) このデータ列に対して上記の離散フーリエ変換を適用した場合、 得られるフーリエスペクトルの振幅値はそれぞれ、 直流: 「4」(直流のフーリエスペクトルの振幅値値) 正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値) となります。 (データ点数は上の通り4点) ここで質問なのですが、 離散フーリエ変換して得られるスペクトルの振幅値から 元の関数の振幅値を求める場合、 フーリエスペクトルをサンプリングの総データ点数で割ることは 数学的に納得できます。 しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、 直流: 「4 -> 1」 正弦波: 「2 -> 0.5」 となってしまい、直流は正しいのですが、 正弦波の元の振幅値を正確に求めることは出来ません。 フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、 「フーリエスペクトルの振幅値*2/データ点数」 としてやらなければいけません。 上記のことに関して、 なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。

  • データ圧縮にDCTを用いるのはなぜですか?

    jpegなどの圧縮形式では離散コサイン変換(DCT)が用いられているそうなのですが、これは画像内の関数をコサインの級数展開して、更に高次の項を無視することで不可逆的な圧縮をかけるものだという理解でよろしいでしょうか? 質問は、なぜexpの級数展開であるフーリエ変換では同じようなことをしないのか、 ということと、sinを用いない理由はDC成分が重要だからと本には書かれているのですが、cosだとDC成分をなくしたくても、残ってしまうために問題になることもあるのではないのでしょうか? よろしくお願いいたします。

  • 複素フーリエ変換の位相について

    画像のとおり位相0度から始まるA列の正弦波を複素フーリエ変換しました。 その実部、虚部のグラフがReal、Imagです。 虚数のみ正弦波の周波数のところにピークがあって、実部は0です。つまりこれは位相が90度又は-90度という事になります。 試しに45度から始まる正弦波を複素フーリエ変換すると、上記は-45度になりました。 フーリエ変換の位相というのはそれぞれの周波数成分を正弦波として開始時の位相を求めるものと思っていましたが、実は余弦波だとしているという事なのでしょうか?

  • 二重フーリエ変換

    こんにちは。 普通の横軸時間軸の周期関数のフーリエ変換の参考書はよくあるのですが、二重フーリエ変換(離散)に詳しい参考書、サイトを探しています。 二重フーリエ変換の使用目的は、正弦波をPWM変調(またはΔΣなど)する時、周期的にパルス幅が変わってくるのですが、これは元の正弦波と三角波(など)の組み合わせによって回路で処理されます。 このPWM波形を周波数解析するのに、元の正弦波と三角波のそれぞれの周波数が関わり、二重のフーリエ変換が必要になるということです。 どなたか、解かる方いたらアドバイスお願いします。

  • DCT(離散コサイン変換)という圧縮方式について

    こんにちは 今、画像処理について学習をしているのですが、 Jpegなどで用いられる圧縮方法はDCT(離散コサイン変換)というものが一般的だそうです。 そこで、DCTについて調べているのですが、 いまいちよくわかりません。 ですので、簡単に教えていただけませんか? よろしくお願いします。

  • 【エクセル】フーリエ変換を用いて作った波を合成する

    エクセルのフーリエ変換を用いて作った波動式(cosとsinを組み合わせた式)の合成の仕方を教えてください。 エクセル上で"正"の関数値しか取らない折れ線グラフに対して高速フーリエ変換(FFT)を実行して、その折れ線グラフ上にFFTによって求めることができた波動式を単体(合成しない)なら描くことができます。 ですが、複数の波動式を合成したものは作ることができません。 なぜなら、波動式は関数値に負の値を取らないからです。足し合わせても関数値が打ち消し合うようなことが起こりません。 (※正弦波や余弦波ならそれぞれ関数値に負の値が出てくるので、正弦波と余弦波の関数値を足し合わせて合成関数のグラフが作れます。) どうすれば合成関数を作ることができるのでしょうか?

  • フーリエ変換の式について

    こんにちは. 現在制御について理解を深めるために勉強をしているのですが, 複素指数型のフーリエ級数からフーリエ変換へ移行する場面で躓いています. http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/ft.html 具体的には上のページで スペクトルの総和を積分で表し直すために,幅Ω_0をくくりだし,1/2πをくくりだし,F(Ω[k])と定義する.これを求める式はF(Ω[k])=・・・ という流れの中で,上のサイトの式(4.7)から式(4.8)への計算がわかりません. この式がフーリエ変換の元になっているので,理解できずに困っています. 分かる方いらっしゃいましたら,是非ご教授頂ければと存じます. よろしくお願いいたします.

  • 高速フーリエ変換によりパワースペクトルについて

    純粋な正弦波を高速フーリエ変換によりパワースペクトルを求めたのですが 混合波では無いのに元の周波数よりも高い周波数や負の周波数が周期的に検出されます。 これは離散フーリエ変換の周期性や共役性が関係しているのですか? 周期性ですと、元よりも高い周波数は検出されないと思うのですが。 また、この周期的に現れる周波数の他にも細かいパワースペクトルが検出されるのはなぜでしょうか