🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6444閲覧

scipy.signal.stftにおける周波数軸と時間軸とは?

kay_ventris4

総合スコア269

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/22 13:02

編集2020/11/22 13:28

###背景
自分で録音したピアノの音源をフーリエ変換してスペクトログラムを描画していました。該当コードと出力は以下です:

Python

1import numpy as np 2import wave as wave 3import scipy.signal as sp 4import matplotlib.pyplot as plt 5import math 6 7file=wave.open('/Users/***/Desktop/Musica/doremi.wav') 8 9data=file.readframes(file.getnframes()) 10data=np.frombuffer(data, dtype=np.int16) 11 12f,t,i=sp.stft(data, fs=file.getframerate(), window='hann', nperseg=512, noverlap=256) 13i=10*np.log(np.abs(i)) 14 15plt.title('Time-Frequency') 16plt.xlabel('Time(s)') 17plt.ylabel('Frequency(Hz)') 18plt.pcolormesh(t, f, i, cmap='jet') 19plt.show()

![イメージ説明

###質問
上のコードのうち、fとtとは何なのかということが気になり、色々と調べてみましたが、「周波数軸だよ〜時間軸だよ〜」と言った以上の理解可能な説明はどこにも見つけることが出来ませんでした。自分で実行した出力は以下の通りです:

Python

1(省略) 2 3print(f) 4print(t)

Python

1[0.00000000e+00 5.80498866e-03 1.16099773e-02 ... 1.76297506e+01 2 1.76355556e+01 1.76413605e+01] 3[ 0. 86.1328125 172.265625 258.3984375 344.53125 4 430.6640625 516.796875 602.9296875 689.0625 775.1953125 5 861.328125 947.4609375 1033.59375 1119.7265625 1205.859375 6 1291.9921875 1378.125 1464.2578125 1550.390625 1636.5234375 7 1722.65625 1808.7890625 1894.921875 1981.0546875 2067.1875 8 2153.3203125 2239.453125 2325.5859375 2411.71875 2497.8515625 9 2583.984375 2670.1171875 2756.25 2842.3828125 2928.515625 10 3014.6484375 3100.78125 3186.9140625 3273.046875 3359.1796875 11 3445.3125 3531.4453125 3617.578125 3703.7109375 3789.84375 12 3875.9765625 3962.109375 4048.2421875 4134.375 4220.5078125 13 4306.640625 4392.7734375 4478.90625 4565.0390625 4651.171875 14 4737.3046875 4823.4375 4909.5703125 4995.703125 5081.8359375 15 5167.96875 5254.1015625 5340.234375 5426.3671875 5512.5 16 5598.6328125 5684.765625 5770.8984375 5857.03125 5943.1640625 17 6029.296875 6115.4296875 6201.5625 6287.6953125 6373.828125 18 6459.9609375 6546.09375 6632.2265625 6718.359375 6804.4921875 19 6890.625 6976.7578125 7062.890625 7149.0234375 7235.15625 20 7321.2890625 7407.421875 7493.5546875 7579.6875 7665.8203125 21 7751.953125 7838.0859375 7924.21875 8010.3515625 8096.484375 22 8182.6171875 8268.75 8354.8828125 8441.015625 8527.1484375 23 8613.28125 8699.4140625 8785.546875 8871.6796875 8957.8125 24 9043.9453125 9130.078125 9216.2109375 9302.34375 9388.4765625 25 9474.609375 9560.7421875 9646.875 9733.0078125 9819.140625 26 9905.2734375 9991.40625 10077.5390625 10163.671875 10249.8046875 27 10335.9375 10422.0703125 10508.203125 10594.3359375 10680.46875 28 10766.6015625 10852.734375 10938.8671875 11025. 11111.1328125 29 11197.265625 11283.3984375 11369.53125 11455.6640625 11541.796875 30 11627.9296875 11714.0625 11800.1953125 11886.328125 11972.4609375 31 12058.59375 12144.7265625 12230.859375 12316.9921875 12403.125 32 12489.2578125 12575.390625 12661.5234375 12747.65625 12833.7890625 33 12919.921875 13006.0546875 13092.1875 13178.3203125 13264.453125 34 13350.5859375 13436.71875 13522.8515625 13608.984375 13695.1171875 35 13781.25 13867.3828125 13953.515625 14039.6484375 14125.78125 36 14211.9140625 14298.046875 14384.1796875 14470.3125 14556.4453125 37 14642.578125 14728.7109375 14814.84375 14900.9765625 14987.109375 38 15073.2421875 15159.375 15245.5078125 15331.640625 15417.7734375 39 15503.90625 15590.0390625 15676.171875 15762.3046875 15848.4375 40 15934.5703125 16020.703125 16106.8359375 16192.96875 16279.1015625 41 16365.234375 16451.3671875 16537.5 16623.6328125 16709.765625 42 16795.8984375 16882.03125 16968.1640625 17054.296875 17140.4296875 43 17226.5625 17312.6953125 17398.828125 17484.9609375 17571.09375 44 17657.2265625 17743.359375 17829.4921875 17915.625 18001.7578125 45 18087.890625 18174.0234375 18260.15625 18346.2890625 18432.421875 46 18518.5546875 18604.6875 18690.8203125 18776.953125 18863.0859375 47 18949.21875 19035.3515625 19121.484375 19207.6171875 19293.75 48 19379.8828125 19466.015625 19552.1484375 19638.28125 19724.4140625 49 19810.546875 19896.6796875 19982.8125 20068.9453125 20155.078125 50 20241.2109375 20327.34375 20413.4765625 20499.609375 20585.7421875 51 20671.875 20758.0078125 20844.140625 20930.2734375 21016.40625 52 21102.5390625 21188.671875 21274.8046875 21360.9375 21447.0703125 53 21533.203125 21619.3359375 21705.46875 21791.6015625 21877.734375 54 21963.8671875 22050. ]

これらの数字を見ていると、ただある数字が定数倍になっていくだけのもので、これは一体周波数・時間の何なのか?この数字の配列がどういう形で周波数分析に貢献しているのか?ということが分かりませんでした。素人質問で恐縮ですが、お力添え頂ける箇所がございましたら、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2020/11/22 13:14

> 「周波数軸だよ〜時間軸だよ〜」と言った以上の詳しい説明はどこにも見つけることが出来ませんでした。 より詳しい説明はhttps://ja.wikipedia.org/wiki/%E7%9F%AD%E6%99%82%E9%96%93%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9Bをはじめ「STFT」で検索するとたくさん出てくるので、それを読んだうえで分からないことを具体的に記載すると回答得られやすいかと思います。
guest

回答1

0

ベストアンサー

stft(短時間フーリエ変換)というのは、短時間を取り出す窓関数を、少しずつ時間軸方向にずらして、元の音源に掛け合わせて(短時間を取り出して)フーリエ変換するものです。tはピアノの演奏開始からの経過時間、fは基準周波数、そしてiを係数とすることで、時刻tにおけるピアノの音(fごとの音量の組み合わせ)が導き出される、と考えるとだいたい合っています。

基準周波数 f = (f0, f1, f2, f3, ・・・)
時刻tでのピアノの音 = i(f0, t)*f0 + i(f1, t)*f1 + i(f2, t)*f2 + i(f3, t)*f3 + ・・・

よって、tとfを基準値としてiを係数として合成されてはじめて意味を持つものであり、tだけfだけ見ても単調に増加する値にしか見えません

なお、iは複素数であり、音量だけでなく位相も表現しています。

投稿2020/11/22 14:07

編集2020/11/22 14:56
toast-uz

総合スコア3266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kay_ventris4

2020/11/22 14:18

回答有難う御座います。 tとfのペアで見るということ、納得致しました。しかしながら、len(t)とlen(f)はそれぞれターミナルで計算したところそれぞれ3040と257となっていました。fはtにおける音色というのは大まかに理解したのですが、長さが違う二つの配列の対応はどの様になっているのでしょうか。何度も申し訳ございませんが、ご教授お願い申し上げます。
toast-uz

2020/11/22 14:46

回答を修正しました。
kay_ventris4

2020/11/22 14:57

時刻tごとの音色をintensityとfの積のシグマとしての特徴量と捉えるということだったんですね! 最後までご丁寧に有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問