問題タブ [pitch-detection]

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.

0 投票する
1 に答える
552 参照

audio - 高速周波数測定

ミュージシャンが音楽を演奏している間に信号周波数を測定する必要がありますが、たまたま FFT (高速フーリエ変換) には少し速すぎます。

ミュージシャンは 90 ~ 140 bpm で音楽を演奏します。これは、毎分 90 ~ 140 のノート グループがあり、各グループに最大 8 つ (多くの場合、最大 4 つ) のノートがあることを意味します (60/140/8 = 0.0536 秒、60/90/4 = 0.167 秒)。つまり、ノートは 1 秒あたり 6 ~ 19 ノートの割合で変化する可能性があります。

音楽は対数スケールを使用します。たとえば、440Hz と 880Hz の間の範囲が 12 の音符に分割され、そのうちの 7 つだけがメロディーに使用されます。(基本的に、彼らはピアノの白鍵のみを使用します。開始周波数をシフトしたい場合、黒鍵の一部を使用し、白鍵を使用しません。) つまり、次の各音の周波数が乗算されます。 2^(1/12) = 1.05946 です。

さらに複雑なことに、A (La) 周波数は 438 から 446 Hz まで変化する場合があります。弦楽器は理論的にはチューニングできますが、管楽器は気温と湿度に依存するため、サウンド チェック中にミュージシャンによって周波数がたまたま再調整されます。

ミュージシャンやボーカリストが周波数を間違えることがあり、彼らはそれを「調子外れ」と呼んでいます。彼らは、そのような「チューニングエラー」を知らせるデバイスを望んでいます。チューナーがありますが、チューナーは何かを表示し始める前に約 1 秒間同じサウンドを再生する必要があります。これはチューニングには機能しますが、音楽の再生中は機能しません。

ほとんどの場合、チューナーはFFTを実行しており、式のために

1Hz の分解能を得るために 1 秒間待ちます。

A=440Hz の場合、2 つの音符間の周波数の差は 440*0.05946 = 26.16 Hz です。その周波数分解能を得るには、0.038 秒の取得時間を使用する必要があります。 98 bpm では、ピッチが変化するまさにその瞬間に取得を開始する場合、50% のチューニング誤差を伝えることができます。取得期間中にピッチの変更を許可すると、49 bpm になりますが、これは遅すぎます。さらに、周波数をより正確にすること、たとえば 25% のチューニング外れエラーを検出することは非常に望ましいことです。

FFT よりも優れた周波数を測定する方法、つまり、短い取得時間でより高い分解能で測定する方法はありますか? (少なくとも 2 倍、理想的には 8 倍) 代わりに、異なるオクターブの音を区別する必要はありません。たとえば、440 と 880 の両方が A として認識される場合があります。(おそらく、より多くのトレードオフが可能です。今は他に何も思い浮かびません。)

UPD これは本当に良い絵です:

ウィキペディアからリンクされている周波数に注意してください

UPD2

博士論文とオープン ソース ソフトウェア ( TARTINI -- リアルタイム音楽分析ツール) を次の場所で見つけました。

http://miracle.otago.ac.nz/tartini/

(ページは Web アーカイブ サービスからも利用できます: http://web.archive.org = http://archive.org = http://waybackmachine.org )

0 投票する
2 に答える
3236 参照

ios - AVAudioEngine を使用してリアルタイムでピッチを検出することは可能ですか?

ピッチの検出がすべての核となる音楽アプリを作成しようとしています。この問題の解決策と AppStore のアプリを見てきました。しかし、それらのほとんどはかなり時代遅れであり、これをやりたいのは Swift です。これを行う方法として AVAudioEngine を検討してきましたが、ドキュメントが不足しているか、十分に調べていない可能性があります。

私が見つけたのは、次のようにinputNodeバスをタップできることです。

バスは 1 秒あたり 2 ~ 3 回タップされ、バッファーにはタップごとに 16000 を超えるフロートが含まれています。これらはマイクからの振幅サンプルですか?

ドキュメントでは、少なくともノードからの出力であると主張しています

AVAudioEngine を使用してリアルタイムでピッチを検出することは可能ですか、それとも別の方法で行う必要がありますか?

0 投票する
0 に答える
706 参照

java - Java で jtransforms ライブラリを使い始める方法

wav オーディオから周波数を抽出したいのですが、FFT の使用とともに自己相関法を使用することを考えています。

「JTransforms」と呼ばれるJava用の優れたピッチ検出ライブラリに出くわしました。誰でもそれを始める方法を提案できますか? コード スニペットが理想的です。

ありがとう

0 投票する
1 に答える
74 参照

java - matlabを使用してサウンド信号を処理し、周波数を取得してJavaで使用するにはどうすればよいですか?

私は信号処理が初めてで、wavファイルを再生するサウンドのピッチを抽出するアプリケーションを開発しています.Javaを使用して(FFTとDFTを使用して)ピッチを直接抽出するいくつかのアプローチを試みましたが、続行できませんでしたこれにより、抽出によって得られる精度が低くなります。

私は、matlab を使用して音声信号の音符の周波数を決定する方法について聞いたことがあります。最終的には、Java に変換する必要がある .csv 形式のスクリプトを取得します。問題は、これを行う方法がわからないので、誰かが周波数を抽出する方法に光を当てることができますか? この情報を Java で使用するにはどうすればよいですか?

0 投票する
0 に答える
93 参照

java - この FFT コードが wav オーディオから周波数を抽出するのに機能しないのはなぜですか?

私はオーディオ処理が初めてで、wav ファイルから周波数を抽出しようとしています。研究論文が述べたように、私はwavオーディオをバイト配列に入れてセグメント化し、FFTを適用してオーディオから周波数を取得しようとしました。ただし、問題は、1 つのノートのみを再生して (ノイズなしで) オーディオ トラックに入った場合でも、1 つ取得するはずの場所で多くの周波数を取得することです。

私の推測では、オーディオが適切にセグメント化されるため、FFT コードに問題があると思われます。

みなさん、よろしくお願いします。

私のfftコード

私の結果(1音だけが演奏された1秒間のオーディオの場合)

Sample rate 44100 My data size 70376 My myBitsPerSample 16 My channels 2 My myByteRate 176400 My Length 0.7983219954648526 0.7983219954648526 44100.0 Max_index: 56 Sample rate: 44100.0 2411.71875 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0 is the frequnecy Max_index: 129 Sample rate: 44100.0 5555.56640625 is the frequnecy Max_index: 511 Sample rate: 44100.0 22006.93359375 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0 is the frequnecy Max_index: 152 Sample rate: 44100.0 6546.09375 is the frequnecy Max_index: 422 サンプル レート: 44100.0 18174.0234375 は周波数 Max_index: 26 サンプル レート: 44100.0 1119.7265625 は周波数 Max_index: 462 サンプル レート: 44100.0 19896.6796875 is the frequnecy Max_index: 450 Sample rate: 44100.0 19379.8828125 is the frequnecy Max_index: 201 Sample rate: 44100.0 8656.34765625 is the frequnecy Max_index: 383 Sample rate: 44100.0 16494.43359375 is the frequnecy Max_index: 6 Sample rate: 44100.0 258.3984375 is the frequnecy Max_index: 385 Sample rate: 44100.0 16580.56640625 is the frequnecy Max_index: 100 Sample rate: 44100.0 4306.640625 is the frequnecy Max_index: 15 Sample rate: 44100.0 645.99609375 is the frequnecy Max_index: 421 Sample rate: 44100.0 18130.95703125 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0は周波数 Max_index: 0 サンプル レート: 44100.0 0.0 は周波数 Max_index: 483 サンプル レート: 44100.0 20801.07421875 は周波数 Max_index: 0 サンプル レート: 44100.0 0.0 is the frequnecy Max_index: 134 Sample rate: 44100.0 5770.8984375 is the frequnecy Max_index: 123 Sample rate: 44100.0 5297.16796875 is the frequnecy Max_index: 2 Sample rate: 44100.0 86.1328125 is the frequnecy Max_index: 378 Sample rate: 44100.0 16279.1015625 is the frequnecy Max_index: 491 Sample rate: 44100.0 21145.60546875 is the frequnecy Max_index: 125 Sample rate: 44100.0 5383.30078125 is the frequnecy Max_index: 242 Sample rate: 44100.0 10422.0703125 is the frequnecy Max_index: 267 Sample rate: 44100.0 11498.73046875 is the frequnecy Max_index: 257 Sample rate: 44100.0 11068.06640625は周波数 Max_index: 128 サンプル レート: 44100.0 5512.5 は周波数 Max_index: 496 サンプル レート: 44100.0 21360.9375 は周波数 Max_index: 350 サンプル レート: 44100.0 15073.2421875 is the frequnecy Max_index: 75 Sample rate: 44100.0 3229.98046875 is the frequnecy Max_index: 127 Sample rate: 44100.0 5469.43359375 is the frequnecy Max_index: 473 Sample rate: 44100.0 20370.41015625 is the frequnecy Max_index: 35 Sample rate: 44100.0 1507.32421875 is the frequnecy Max_index: 420 Sample rate: 44100.0 18087.890625 is the frequnecy Max_index: 413 Sample rate: 44100.0 17786.42578125 is the frequnecy Max_index: 136 Sample rate: 44100.0 5857.03125 is the frequnecy Max_index: 93 Sample rate: 44100.0 4005.17578125 is the frequnecy Max_index: 251 Sample rate: 44100.0 10809.66796875は周波数 Max_index: 431 サンプル レート: 44100.0 18561.62109375 は周波数 Max_index: 490 サンプル レート: 44102.5390625 は周波数 Max_index: 221 サンプル レート:44100.0 9517.67578125 is the frequnecy Max_index: 364 Sample rate: 44100.0 15676.171875 is the frequnecy Max_index: 19 Sample rate: 44100.0 818.26171875 is the frequnecy Max_index: 487 Sample rate: 44100.0 20973.33984375 is the frequnecy Max_index: 350 Sample rate: 44100.0 15073.2421875 is the frequnecy Max_index :243サンプルレート:44100.0 10465.13671875はfrequnecy max_index:384サンプルレート:44100.0 16537.5はFrequnecy max_index:403サンプルレート:44100.0 17355.76171875は44100.0 17355.76171875です。 6503.02734375 は周波数 Max_index: 447 サンプル レート: 44100.0 19250.68359375 は周波数 Max_index: 501 サンプル レート: 44100.0 21576.26953125 は周波数 Max_index:377 Sample rate: 44100.0 16236.03515625 is the frequnecy Max_index: 465 Sample rate: 44100.0 20025.87890625 is the frequnecy Max_index: 417 Sample rate: 44100.0 17958.69140625 is the frequnecy Max_index: 259 Sample rate: 44100.0 11154.19921875 is the frequnecy Max_index: 34 Sample rate: 44100.0 1464.2578125 is the frequnecy Max_index: 327 Sample rate: 44100.0 14082.71484375 is the frequnecy Max_index: 280 Sample rate: 44100.0 12058.59375 is the frequnecy Max_index: 271 Sample rate: 44100.0 11670.99609375 is the frequnecy Max_index: 92 Sample rate: 44100.0 3962.109375 is the frequnecy Max_index: 141サンプルレート: 44100.0 6072.36328125 は周波数 Max_index: 467 サンプルレート: 44100.0 20112.01171875 は周波数 Max_index: 123 サンプルレート: 44100.0 5297.16796875 is the frequnecy Max_index: 388 Sample rate: 44100.0 16709.765625 is the frequnecy Max_index: 122 Sample rate: 44100.0 5254.1015625 is the frequnecy Max_index: 386 Sample rate: 44100.0 16623.6328125 is the frequnecy Max_index: 464 Sample rate: 44100.0 19982.8125 is the frequnecy Max_index: 231 Sample rate: 44100.0 9948.33984375 is the frequnecy Max_index: 95 Sample rate: 44100.0 4091.30859375 is the frequnecy Max_index: 112 Sample rate: 44100.0 4823.4375 is the frequnecy Max_index: 260 Sample rate: 44100.0 11197.265625 is the frequnecy Max_index: 383 Sample rate: 44100.0 16494.43359375は周波数 Max_index: 458 サンプルレート: 44100.0 19724.4140625 は周波数 Max_index: 17 サンプルレート: 44100.0 732.12890625 は周波数 Max_index: 129 サンプルレート: 44100.0 5555.56640625 is the frequnecy Max_index: 262 Sample rate: 44100.0 11283.3984375 is the frequnecy Max_index: 259 Sample rate: 44100.0 11154.19921875 is the frequnecy Max_index: 0 Sample rate: 44100.0 0.0 is the frequnecy Max_index: 404 Sample rate: 44100.0 17398.828125 is the frequnecy Max_index : 471 Sample rate: 44100.0 20284.27734375 is the frequnecy Max_index: 119 Sample rate: 44100.0 5124.90234375 is the frequnecy Max_index: 239 Sample rate: 44100.0 10292.87109375 is the frequnecy Max_index: 385 Sample rate: 44100.0 16580.56640625 is the frequnecy Max_index: 485 Sample rate: 44100.0 20887.20703125 は周波数 Max_index: 14 サンプル レート: 44100.0 602.9296875 は周波数 Max_index: 384 サンプル レート: 44100.0 16537.5 は周波数 Max_index: 12 サンプル レート: 44100.0 516.796875 is the frequnecy Max_index: 342 Sample rate: 44100.0 14728.7109375 is the frequnecy Max_index: 369 Sample rate: 44100.0 15891.50390625 is the frequnecy Max_index: 15 Sample rate: 44100.0 645.99609375 is the frequnecy Max_index: 22 Sample rate: 44100.0 947.4609375 is the frequnecy Max_index : 395 サンプルレート: 44100.0 17011.23046875 は周波数 Max_index: 26 サンプルレート: 44100.0 1119.7265625 は周波数 Max_index: 386 サンプルレート: 44100.0 16623.6328125 は周波数4609375 は周波数 Max_index: 395 サンプル レート: 44100.0 17011.23046875 は周波数 Max_index: 26 サンプル レート: 44100.0 1119.7265625 は周波数 Max_index: 386 サンプル レート: 44100.0 16623.632eq8125 は周波数4609375 は周波数 Max_index: 395 サンプル レート: 44100.0 17011.23046875 は周波数 Max_index: 26 サンプル レート: 44100.0 1119.7265625 は周波数 Max_index: 386 サンプル レート: 44100.0 16623.632eq8125 は周波数

0 投票する
1 に答える
726 参照

matlab - 音声信号の手動ピッチ推定

私は音声処理が初めてです。ですから、私の無知をお許しください。短い音声信号 (10 秒) が与えられ、MATLAB または Wavesufer ソフトウェアを使用して手動でピッチに注釈を付けるように求められました。音声信号のピッチを見つけるにはどうすればよいでしょうか。問題を解決するための理論的なリソースはありますか? Wavesurfer を使って信号のピッチコンターをプロットしてみました。

編集 1: 私の仕事では、データにさまざまなピッチ検出アルゴリズムを適用し、それらの精度を比較しています。したがって、手動で注釈を付けたピッチが参照として機能します。

更新 1: EGG (dEGG) 信号を微分して GCI (Glottal Closure Instants) を取得しました。dEGG のピークは GCI です。2 つの連続する GCI 間の時間間隔は、ピッチ周期 (秒) です。ピッチ周期の逆数はピッチ (hz) です。

更新 2 : SIGMA は、自動 GCI 検出の有名なアルゴリズムです。

みんな、ありがとう。