タグ付けされた質問 「spectrogram」

2
Pythonでスペクトログラムの解像度を改善しますか?
specgram()関数を使用matplotlibしてPythonで音声波形ファイルのスペクトログラムを生成していますが、出力は常に、通常の文字起こしソフトウェアPraatが生成できる品質よりも非常に劣っています。たとえば、次の呼び出し: specgram( fromstring(spf.readframes(-1), 'Int16'), Fs=framerate, cmap=cm.gray_r, ) これを生成します: Praatが次の設定で同じオーディオサンプルに取り組んでいる間: 表示範囲:0-8000Hz ウィンドウの長さ:0.005s ダイナミックレンジ:70dB 時間ステップ:1000 周波数ステップ:250 ウィンドウ形状:ガウス これを生成します: 私は何を間違えていますか?すべてのspecgram()パラメーターをいじってみましたが、解像度を改善できるものはありません。FFTの経験はほとんどありません。

4
Spectrogramからのオーディオ信号の再構築
50%オーバーラップしたハミングウィンドウを使用してマグニチュードスペクトログラムを抽出した曲のセットがあります。スペクトログラムを抽出した後、主成分分析(PCA)を使用していくつかの次元削減を行いました。それを低次元に減らした後、低次元からスペクトログラムを再構築しました。そのため、元のスペクトログラムと再構成されたスペクトログラムの間にエラーが発生します。私はオーディオの音をどうするか、下の次元から再構築するとき、私は知ることができるだろうだから、オーディオ信号に、このスペクトログラムの背中を変換し、それを再生したいと思います。 Matlabなどで利用可能な機能はありますか?マグニチュードスペクトログラムをオーディオ信号に変換するには??

1
スペクトログラムの作成
私はこのタスクのロジックを考え出そうとしており、KissFFTソースパッケージを使用して高速フーリエ変換を実行することを計画しています。これが正しいと思われる場合はお知らせください: FFT構造を割り当てます。私が使用しているウィンドウサイズはkiss_fft_alloc(N,0,NULL,NULL) どこですかN。入力バッファはN、タイプの要素の配列になりますkiss_fft_scalar。出力バッファはN/2 + 1、タイプの要素の配列になりますkiss_fft_cpx。 NPCMサンプルの数(ウィンドウサイズ)をデコードします。 各PCMサンプルについて、各チャネルの振幅(符号なしサンプル)を平均し、0から2にスケーリング(65536.0で除算)して、結果を入力バッファーに格納します。 入力バッファでウィンドウ処理(つまり、ハニング)を実行します。 入力バッファーで高速フーリエ変換を実行し、出力バッファーに格納します。実際の値を入力として使用しているため、を使用できますkiss_fftr()。 N/2出力値については、変換されたデータの2乗された大きさを取得し、次の式を使用して値をdBスケールに変換します。 10 * log10 (re * re + im * im) N/2手順6 の値をプロットします。 入力バッファの前半を破棄し、次の(ウィンドウサイズ/ 2)PCMサンプルをデコードして、データのスケーリングとウィンドウ処理を実行します。これにより、入力ウィンドウが効果的にスライドし、処理されたPCMサンプルの計算をやり直す必要がなくなります。 ステップ5にループし、すべてのサンプルが処理されるまでこれらのステップを繰り返します。 使用済みメモリをから解放しkiss_fft_alloc()ます。 FFTを実行する前に、入力ウィンドウから値を減算して、結果のDC値の大きさがゼロになるようにすることが提案されました。入力データから平均または平均を差し引くべきですか? また、ウィンドウサイズを選択するときに考慮する必要があることは何ですか?それ以外に、KissFFTの指示に従って偶数にする必要がありますが、小さなウィンドウサイズを使用することには利点があります。それはより良いグラフを提供しますか?ウィンドウサイズを大きくすると、実行する必要があるFFTの数が減ると思いますが、ウィンドウサイズを大きくすることの唯一の利点は何ですか。 xxx 提供できるあらゆるガイダンスを事前に感謝します。

1
MatlabのSTFT実装spectrogram()の最大周波数解像度は何ですか?
Matlabのspectrogram()関数は、信号のSTFTを計算します。それはそのNFFT引数を次のように説明します: S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT)離散フーリエ変換の計算に使用される周波数点の数を指定します。NFFTが指定されていない場合、デフォルトNFFTが使用されます。 NFFT周波数分解能と計算数の間のトレードオフであるという点で私は正しいですか?私のオフライン作業では、サイクルを節約する必要はありません。NFFTたとえばスペクトル漏れ、または私が知っておくべきその他の問題によって課される、の最大制限はありますか、またはその引数をできるだけ高く設定できますか?

3
メルスペクトログラムからスペクトログラムへの変換
STFT(短時間フーリエ変換)を抽出し、マグニチュードスペクトルを使用した一連の曲がありますメルフィルターバンク行列を使用してメルスペクトログラムを計算するため、。このプロセスを逆にする方法、つまりメルスペクトログラムからスペクトログラムに戻す方法はありますか。メルスペクトログラムにいくつかの次元削減を実行し、低次元からメルスペクトログラムを再構築しました。ここで、再構築されたメルスペクトログラムからオーディオ信号を再生成したいので、最初にスペクトログラムを再構築し、次にオーディオ信号を再構築します。|S||S||S|MMMバツ= ログ(M× | S| )X=log⁡(M×|S|)X=\log(M\times |S|) 問題は、メルビンフィルターバンク行列が正方行列ではないことです。これは、周波数ビンの数を減らすため、逆数を次のように使用できないためです。。から変換できる逆伝達関数のように、逆マッピングを生成する方法はありますか?MMMS^=M− 1exp(X)S^=M−1exp⁡(X) \hat{S}=M^{-1}\exp(X)バツXXSSS

2
ウェーブレットスカログラムを解釈する
ウェーブレットの私の知識はイプシロンよりも少ないです。私と一緒に耐えなさい。2つのよく分離された正弦波(15および48 Hz)とランダムノイズの信号がある場合、スペクトログラムで2つをはっきりと確認できます(写真の2つの縞模様)。 t=0:0.002:1; % fs = 500 Hz x=4*sin(2*pi*15*t)+2*cos(2*pi*48*t); xn = x + randn(size(x)); figure(1); plot(xn); figure(2); spectrogram(xn, 64, 60, [], 500); しかし、「wscalogram」を使用すると、コンポーネントを区別できるとは言えません。 coefs = cwt(xn,1:64,'db8','scalCNT'); wscalogram('image',coefs,'scales',1:64,'ydata',xn); スカログラムから2つの異なる正弦波があることを読み取る方法はありますか?その場合、ウェーブレット分解とフィルタリングを使用してそれらをどのように分離できますか?おそらくウェーブレット( 'db8')の選択は最適ではないと思いましたが、他のタイプを使用してスケールを大きく(または小さく)しても、大きな違いは見られません。明らかに、どこに、いつ、何にウェーブレットを適用するかについて何か不足しています。 ありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.