問題タブ [spectrogram]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - FFT をスペクトログラムに変換する
オーディオ ファイルがあり、ファイルを反復処理し、各ステップで 512 個のサンプルを取得してから、それらを FFT に渡します。
ブロック 514 フロート ロング (IPP の ippsFFTFwd_RToCCS_32f_I を使用) としてデータを出力し、実数成分と虚数成分をインターリーブします。
私の問題は、これらの複素数を取得したらどうするかということです。現時点では、各値に対して行っています
これにより、少し使用可能なものが得られますが、値を 0 から 1 の範囲で取得する何らかの方法が必要です。上記の問題は、ピークが約 9 またはそれ以上に戻ってしまうことです。これは、オーディションのスペクトログラムでオーディオを実行すると、非常に強いように見えるという事実にもかかわらず、物事がひどく飽和し、スペクトログラムの他の部分がほとんど表示されないことを意味します. FFT によって返されるデータが何であるか 100% 確信が持てないことは十分に認めます (それ以外は、渡された 512 サンプルの長さのブロックの周波数値を表します)。特に、複素数が正確に何を表しているのかについて、私の理解が欠けています。
アドバイスや助けをいただければ幸いです。
編集:明確にするために。私の大きな問題は、返される FFT 値が、スケールが何であるかがわからないと意味がないことです。誰かがそのスケールを解決するように私に指摘できますか?
Edit2:次のようにすることで、非常に見栄えの良い結果が得られます。
私の目には、これまでに見た他のほとんどのスペクトログラム実装よりも良く見えます。
私がやっていることに重大な問題はありますか?
c++ - スペクトログラムC++ライブラリ
C ++ / Qtでの現在のプロジェクトでは、シグナル(基本的にはdoubleの配列)からスペクトログラムを計算できるライブラリ(LGPLが推奨)が必要です。GUI部分にはすでにQwtを使用しています。
助言がありますか?ありがとう。
matlab - スペクトログラムを画像に変換する方法
MATLAB を使用して、画像を音声 (.wav 形式) に変換しました。また、この音声ファイルはスペクトログラム画像に変換されます。このスペクトログラムを元の入力画像に変換しようとしています
database - スペクトログラムグラフを比較可能なデータ構造として保存するための最良の方法は何ですか?
特定のサウンドクリップのスペクトログラムを作成するShazamと同様のプロセスを作成しました。比較を実行できるように、このデータをデータベースに保存する方法を見つけようとしています。(実際のコードは必要ありません。プロセスの概念的なヘルプだけが必要です)。
スペクトログラムに慣れていない人のために、x軸に時間、y軸に周波数のグラフを作成します。比較を実行できる方法でこのデータを保存する方法が必要です。また、大きなデータセット(基本的にはN ^ 2の部分文字列の比較)で検索しようとすると時間計算量の問題になるため、左から右に長い頻度値を単純に作成することはできません。
基本的に、サウンドクリップにある種のハッシュを作成し、データをハッシュのトライまたはサフィックスツリーとして保存することを考えていましたが、その場合、どのように比較できるかわかりません。
任意のアイデアをいただければ幸いです。
matlab - Matlabのスペクトログラムの期限切れとスペクトログラムの置き換え
Matlabsの最近のバージョンでは、specgram
関数はに置き換えられてspectrogram
おり、ドキュメントには次のように記載されています。
ノート。削除されたスペックグラム関数で同じ結果を得るには、長さ256の「ハン」ウィンドウを指定します。
残念ながら、それは私にはうまくいかないようです。私が使用した場合spectrogram(signal,hann(256))
、結果はとは異なりますがspecgram(signal)
、どちらも非常に似ています。まったく同じ出力を取得する方法はありますか?
python - Python + Qt の組み合わせでリアルタイムスペクトル分析ツールを作成できますか?
以下のことを行うツールを開発したいと考えています。
- 生の音声録音を取り込む
- リアルタイム スペクトログラムを作成する
- 時間領域信号を表示
- スペクトル分析から抽出されたいくつかの値を出力します
これらはすべて、音声が録音されるときにウィンドウで更新し続ける必要があります。
私はnumpyで働いてきました。しかし、私は Qt やその他の GUI ビルダー ツールはまったく初めてです。この状況を考えると、どのように進めるのが最善でしょうか? タスクについて説明した後、同僚は Qt を勧めてくれました。このタスクのために Python で使用するためのより良いツールを誰かが知っていたら、私に知らせてください。また、ライブ ストリームをキャプチャし、GUI ウィンドウに表示される Python で処理する方法に関する技術的な詳細を教えてください。希望を与えてくれたリンクの 1 つは、http: //www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python- です。 scipy-and-wckgraph/ . しかし、それを理解するのは少し難しいです。それほど集中的でない解決策が、私が始めるのに役立つかもしれません。
audio - RAW/WAV ファイルを数字のリストにデコードするにはどうすればよいですか?
RAW/WAV ファイルを数字のリストにデコードするにはどうすればよいですか?
オーディオ ファイルからスペクトログラム/波形を作成する必要があるため、実行する必要があります。
数値のリストを使用して、グラフ作成アプリケーション (gnuplot など) を使用して画像を作成できると考えました。
audio - オーディオファイルスペクトログラム、それは時間対振幅ですか、それとも時間対周波数ですか?
オーディオファイルのスペクトログラムを作成しようとしているとき、時間と振幅、または時間と周波数をプロットする必要がありますか?
iphone - 音声録音スペクトログラム
デシベルメーターを表示した音声録音アプリを作成しています。ただし、DragonDictateまたはGoogleSearchアプリケーションで見つかったものの行に音声スペクトログラムを含めたいと思います。
この点で私がどこから始められるかについての提案。FFTまたはスペクトログラム分析に関しては、私は完全なダミーです。
ご提案をお待ちしております。
c# - 2つのスペクトログラムを比較して、アルゴリズムと一致するオフセットを見つけます
私はインターネットから毎日2分間のラジオ放送を録音しています。開始時と終了時のジングルは常に同じです。ラジオ放送の正確な時間は多かれ少なかれ6分と異なるかもしれないので、私は約15分のラジオを録音しなければなりません。
これらのジングルが15分のレコードにある正確な時間を特定したいので、必要なオーディオの部分を抽出できます。
MP3をPCMデータにデコードし、PCMデータをhttp://www.codeproject.com/KB/audio-video/SoundCatcher.aspxに基づくスペクトログラムに変換するC#アプリケーションを既に開始しました。
PCMデータで相互相関アルゴリズムを使用しようとしましたが、アルゴリズムは10msのステップで約6分と非常に遅く、ジングルの開始時刻が見つからない場合があります。
2つのスペクトログラムを比較して一致させるアルゴリズムのアイデアはありますか?または、そのジングルの開始時間を見つけるためのより良い方法はありますか?
ありがとう、
更新、遅れてすみません
まず、すべての回答者に感謝します。それらのほとんどは、関連性のある、または興味深いアイデアでした。
fonzoが提案したShazamアルゴリズムを実装してみました。しかし、スペクトログラムのピークを検出できませんでした。これは、3つの異なるレコードからの開始ジングルの3つのスペクトログラムです。ブロブフィルターを使用してAForge.NETを試しました(ただし、ピークを特定できませんでした)。画像をぼかし、高さの違いを確認し、ラプラス変換、勾配分析を行って、一連の垂直バーを検出しました(ただし、偽が多すぎました)。ポジティブ)...
その間、私はDaveAaronSmithによって提案されたHoughアルゴリズムを試しました。ここで、各列のRMSを計算します。はいはい各列、それはO(N * M)ですが、M << Nです(列が約8kのサンプルであることに注意してください)。したがって、全体としてはそれほど悪くはありませんが、アルゴリズムには約3分かかりますが、失敗することはありません。
私はその解決策を採用することもできますが、可能であれば、ShazamがO(N)であり、おそらくはるかに高速(そしてより低温)であるため、Shazamを使用することをお勧めします。コメントを追加することで、これらのスペクトログラムで常に同じポイントを検出するアルゴリズム(ピークである必要はありません)を知っている人はいますか?
新しいアップデート
最後に、上記で説明したアルゴリズムを使用して、Shazamアルゴリズムを実装しようとしましたが、スペクトログラムで適切なピークを見つけることができませんでした。特定されたポイントは、サウンドファイル間で一定ではありません。理論的には、Shazamアルゴリズムはその種の問題の解決策です。Dave Aaron Smithによって提案されたハフアルゴリズムは、より安定していて効果的でした。約400個のファイルを分割しましたが、正しく分割できないのはそのうちの20個だけです。8GBから1GBの場合のディスク容量。
ご協力いただきありがとうございます。