• ベストアンサー

フーリエ 音を1オクターブ上げるにはスペクトルをどういじる?

ion12watの回答

  • ion12wat
  • ベストアンサー率33% (9/27)
回答No.5

こんばんは。 先ほど投稿したものは,図が見づらくなっていたので 再度投稿します。 f→2f後の波形は時間的に半分になってしまうのが”音の速度を変化しない”の際に問題ですね。 どのような入力信号で,どのようなフレーム幅でFFTを しているのかが不明ですが,下図のような出力波形になったとしたら, 方法(1)入力フレームをオーバーラップさせ,入力と出力の時間を合わせる 方法(2)出力波形を単純に時間フレームの半分で切って,同じものを後半にくっ付ける どちらにしても,どうつなぐかがやはり問題になりそうです。 カラオケなどの”キーコントロール”などは参考にならないのでしょうか。 すみません,にわか知識で。。。 入力波形|vvvv|--| FFT |---| IFFT |--|ww |出力波形

jyuzou
質問者

お礼

回答どうもありがとうございます。 「どのような入力信号で,どのようなフレーム幅でFFTをしているのかが不明ですが」 現在のところは暫定で、「音楽信号」を、「5秒間」、FFTしています。 5秒をつなげて10秒にするということは、現時点ではまだ行っていません。 (1フレーム5秒間のみを実験的に試している段階) ご提案頂いた方法につきまして。 「方法(1)入力フレームをオーバーラップさせ,入力と出力の時間を合わせる」 言われている意味が当方の知識不足でいまいち理解はできないのですが、とりあえず現時点では入力フレームが1なので関係ないのではないでしょうか? 「方法(2)出力波形を単純に時間フレームの半分で切って,同じものを後半にくっ付ける」 これも当方の知識不足でいまいち理解はできませんでした。 ただ、スペクトル(周波数領域)ではなく、出力波形(時間領域)レベルで音を加工すれば、音の速度と音程はセットで変化してしまうと思いますので、当方の実現したい音程のみを変化させるということは実現できないように思います。 「カラオケなどの”キーコントロール”などは参考にならないのでしょうか。」 カラオケのキーコントロールやフリーソフト等になる音程変換ソフトはどのようにして実現しているのでしょうね。 フリーソフトの音程変換ソフトを使って音程を変化させた波形をスペクトルにし、元スペクトルと比較させてみたのですが、スペクトルをどのように加工しているかまでは読み取れませんでした。 何か良い書籍とかないでしょうか?

関連するQ&A

  • 音の逆フーリエ変換

    音のデータをFFTし、目的の周波数帯を削ってRFTするソフトを作っています。しかし、実部の削り方は分かっても、虚部のどこを削ると、目的の周波数帯を削ることができるのか分かりません。あるいは虚部には触れなくてよいのでしょうか。実部だけ目的の部分を削ってRFTすると、意外な音が聞こえてきました。 音声加工、(逆)フーリエ変換について教えてください!

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

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

  • 画像の離散フーリエ変換

    現在画像の離散フーリエ変換をしており、 「c言語で学ぶ実践画像処理」という本には、 水平方向に1次元の離散フーリエ変換をした後、垂直方向に1次元の離散フーリエ変換をすれば良いと書いてあるのですが、 疑問があります。 最初に実部用の配列と虚部用の配列を用意します。 原画像を水平方向に離散フーリエ変換します。 そうすると、初めに用意した実部、虚部用の配列に値が入ります。 ここからさらに垂直方向の離散フーリエ変換をすると、 実部の垂直方向の離散フーリエ変換から実部と虚部が出て、 虚部の垂直方向の離散フーリエ変換から実部と虚部が出て、最終的には実部用の配列が2個、虚部用の配列が2個必要で、 ここからどうやって離散逆フーリエ変換や、振幅スペクトルを求められるのだろうかと混乱しております。 水平方向に1次元の離散フーリエ変換をした後、垂直方向に1次元の離散フーリエ変換はどのようにすれば良いのでしょうか? よろしくお願いいたします。

  • フーリエ変換のスペクトル

    フーリエ変換を勉強しても、なかなかわからないことが多くて困っています。現在EXCELのフーリエ解析ツールで変換して、パワースペクトルまで求められるようになっていますが、パワースペクトルがよくわかりません。 パワースペクトルは周波数領域の比みたいなものと勝手に認識しているのですが、例えばsin波の振幅を2倍するとピークのパワースペクトルはどうなるのか等、法則みないなものはありますか?実際に色々試しているのですが、よくわかりません。また、周波数0以外のデータの総和に何か法則がありそうなのですが、やはりよくわかりません。 1次元の周期成分を持つデータをフーリエ変換して、ピークが出るのですが、その値が何を示してるのかを上司に説明できるようになりたいので、アドバイスお願いします。

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

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの 振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(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をかける理由を)教えて頂けないでしょうか。

  • 実部画像と虚部画像の意味

    ある画像について、2次元の離散フーリエ変換を 実施し、パワースペクトル画像と実部画像と 虚部画像が得られました。 パワースペクトル画像というものは、 その画像がどのような周波数を持つのかが 分かる画像だということは分かったのですが、 実部画像と虚部画像の意味、またはこれらの画像が 表している情報とは何なのかが分かりません。 質問の仕方が悪いのかもしれませんが、 一般的にフーリエ変換した時に得られる 実部の画像と虚部の画像にはどのような意味が あるのでしょうか? ご存知の方がいましたら、お教え願います。

  • fortranでフーリエ変換→パワースペクトル算出

    プログラミング全くの初心者です タイトル通り、任意のデータ(100個ほど)による波長をフーリエ変換し、 そのパワースペクトル算出をfortranで行いたいのです。 (横軸時間、縦軸大きさのデータです) フーリエ変換の理論上の原理、およびパワースペクトル(=虚部の二乗+実部の二乗) という定義は、教科書から理解できたのですが、 実際に任意のデータに対してフーリエ変換を施す、となると、一体全体何からはじめていいかわからないのです。 そもそもフーリエ変換をしてデータを補間し、100個をさらに分割して増やさなければならないと思うのですが、(違うかもしれませんが) 何をしたらいいのかわからず途方にくれています。 フーリエ係数を求めるのに積分が出てきますが、これもプログラムでどう表現していいのかわかりません 無教養で申し訳ありません。 どうにもこうにも調べ方がわかりませんでしたので質問させていただきます どなたかヒントをお願いします・・・・・

  • フーリエ変換 位相の範囲

    フーリエ変換の位相の範囲について質問です. ある信号をフーリエ変換すると 周波数スペクトルがわかります. 周波数スペクトルには振幅スペクトルと位相スペクトルがあって それぞれ 振幅スペクトル: Xn=√An^2+Bn^2 位相スペクトル:θn=arctanBn/An で表されることは理解できたのですが、 この場合、 θnがとる範囲は0~πですか? 考え方がよくわからないので説明も一緒にわかる方いらっしゃいましたら 教えてください. よろしくお願いいたします.

  • フーリエ変換により得られる周波数スペクトルの単位

    離散フーリエ変換(デジタル信号に対して行う周波数解析)により得られる 周波数スペクトルの単位について教えて頂きたいと思い,質問させて頂きました. デジタル信号処理やフーリエ変換に関する書籍,またはホームページを調べてみますと 周波数スペクトルには ・振幅スペクトル ・位相スペクトル ・パワースペクトル ・パワースペクトル密度 というような様々な表現方法があることがわかりました. しかし,それぞれが持つ意味や単位がはっきりと書かれた書籍をみつけることができませんでした. 離散フーリエ変換の定義式やホームページを参考にして考えてみますと 周波数解析を行う対象の波形の縦軸の単位がVで,横軸の単位が秒であれば, 求められるスペクトルの単位は,以下のようになると考えております. しかし,確信がなく不安な気持ちです. ・振幅スペクトル [VまたはdB] ・位相スペクトル [rad] ・パワースペクトル [V^2またはdB] ・パワースペクトル密度 [(V^2)/Hz] もしスペクトルに関してご存知の方がいらっしゃいましたら, 教えて頂けると本当にうれしいです. 参考になるホームページや書籍等も教えて頂けると助かります. つたない文章ですが,どうぞよろしくお願い致します.

  • 音をフーリエ変換したスペクトルの縦軸の単位

    音をフーリエ変換して、横軸に周波数をとりスペクトル表示した場合、縦軸の単位とスケールは何になるのでしょうか。 サイトによって、マイナスになっていたり、100以上の大きな値になっていたりして良く分かりません。