問題タブ [onset-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.
audio - ノートオンセット検出
ミュージシャンが採譜を行う際の補助としてシステムを開発しています。目的は、単一の楽器のモノフォニック録音で自動音楽トランスクリプションを実行することです (ユーザーが後でグリッチ/ミスを修正するため、完璧である必要はありません)。ここに自動音楽トランスクリプションの経験がある人はいますか? それともデジタル信号処理全般?あなたの経歴に関係なく、誰からの助けも大歓迎です。
これまで、高速フーリエ変換をピッチ検出に使用する方法を調査してきました。MATLAB と私自身の Java テスト プログラムの両方で多くのテストを行った結果、高速フーリエ変換が私のニーズに十分に対応できることが示されました。作成された MIDI データを楽譜として表示することも課題の 1 つですが、これについては今のところ気にしていません。
簡単に言えば、私が探しているのは、ノート開始検出、つまり新しいノートが始まる信号内の位置の良い方法です。スローオンセットを適切に検出するのは非常に難しいため、最初はピアノの録音でシステムを使用します。これは、私がピアノを弾くという事実にも一部起因しており、テストに適した録音を取得するのにより適した立場にあるはずです. 前述のように、このシステムの初期バージョンは単純なモノラル録音に使用されますが、今後数週間の進捗状況に応じて、後でより複雑な入力に進む可能性があります。
java - 音楽のトランスクリプション
私はポリフォニック音楽のトランスクリプションプロジェクトに取り組んでいます。私はいくつかの論文を読み、同様のタスクを説明する記事を読みました。私は問題領域の多くの側面について非常に混乱しています。誰かが私を助けてくれることを願っています。
これまでのところ、特定のmp3からデコードされたオーディオデータのストリームを取得しました。
私は、発症の検出が転写への第一歩であることを理解しました。。発症の検出に使用できるJavaライブラリはありますか。
次に、私が読んだように、基本周波数の検出もFFTを使用して行われます。
これらのタスクでのFFTの使用法を知りたいです。(私はFFTにあまり精通していません)。発症検出とF0検出のためにFFTを実行することは絶対に必要ですか?そうでない場合、他の方法は何ですか。私が持っているオーディオストリームでFFTを実行できますか、またはこれらのオーディオデータを操作するために実行する必要がある他の操作がありますか?
どうもありがとう。
waveform - 開始検出のデバッグのために波形に「可聴ティック」を追加する
私は自分でいくつかの開始/ビート検出アルゴリズムをいじっています。入力は.wavファイルで、出力は.wavファイルです。float[]配列のチャンクで波形全体にアクセスできます。
アルゴリズムをデバッグして評価するための良い方法を思い付くのに苦労しています。私の入力と出力は両方とも聴覚であるため、デバッグ機能も聴覚である場合に最も理にかなっていると思いました。開始点で.wavファイルに可聴の「ティック」または「ビープ音」を追加することによって。
誰かがこれを行う方法について何かアイデアがありますか?理想的には、数百または数千のサンプルを実行する単純なforループになります。
java - 音声からの音頭検出
重複の可能性:
音頭の検出
Java/Matlab で論文を作成するには、非常に堅牢な音符開始検出器が必要です。オーディオ ファイルからラウドネスと必要なその他の (種類の) 機能を抽出しますが、開始の問題は依然として難しいものであり、ほとんどの場合、正確には完了していません。
誰でもこの問題で私を助けることができますか?
ミディも気にならない!
INPUT: ベースラインを含むオーディオ信号 (ファイルまたはライン入力から)
背景: リアルタイムで行う必要があるため、他の質問は関係ありません。
audio - オンセット検出の動的しきい値処理に注意してください
だから私はノートオンセット検出に取り組んでいます。私はここでメソッドを実装しました:開始検出に注意してください
ただし、メソッドの「静的」な性質に関して、いくつかの困難または問題を発見しています。私が探しているのは、しきい値処理方法を「動的」にする方法です。しかし、適切な解決策を見つけるのに苦労しています。
それとは別に、しきい値を超える基準として振幅値を使用する代わりに、2 つの振幅値の「差」を利用して、信号がいつ増加するか増加しないか、どの程度増加したかを知ることにも取り組んでいます。または減少した。これは私が現在使用しているものです。
この種の問題を手伝ってくれる人、または働いたことがある人はいますか? ありがとうございました!
さらに、ひょっとしたら、この論文の PDF ファイルを持っている人はいますか? http://www.mendeley.com/research/methods-detecting-impulsive-noise-speech-audio-signals-14/
audio - オンセット位置に基づく音の長さの決定
オンセット位置からノートの長さを決定する方法について質問があります。
たとえば、振幅値の配列 (short を含む) と、ノートの開始が検出された場合は 1、検出されなかった場合は 0 を含む同じサイズの別の配列があります。したがって、基本的には、各 1 間の距離が継続時間を決定するために使用されます。
これどうやってするの?オーディオ データのサンプル レートやその他の属性を使用する必要があることはわかっていますが、使用できる特定の式はありますか?
ありがとうございました!
audio - ノートオンセット検出用のフィルターに関する質問はありますか?
私が無知になるかもしれないのなら許してください、しかし私はノートオンセット検出のためのフィルターアルゴリズムの使用に関していくつかの質問をしたいと思います。
「検出機能」は、オーディオ信号にフィルターを使用するのと同じですか?または、一般的に、検出機能、フィルタリング(信号の前処理)、およびピークピッキングの違いは何ですか?
ローパス(またはハイパス)フィルターについてはいつも聞いていますが、混乱しています。特定のしきい値を下回る(または上回る)特定の周波数をキャンセルすることで機能することを読みました。ただし、ノートオンセットの計算には時間領域を使用しています(つまり、信号の振幅/エネルギーの変化を使用しています)。そのため、時間領域にローパスフィルタリングを適用する方法がわかりません。音の発生を検出するための他の優れたフィルターはありますか?
スペクトルエネルギーと相エネルギーの違いは何ですか?(スペクトルはスペクトログラムまたは周波数を指すと思いますが、フェーズが何であるかはわかりません)
動的しきい値の操作に問題があります。良いアルゴリズムの提案はありますか?たとえば、次のシグナルがあります。
上の画像に示されているように、私が見逃したメモの開始があります。アルゴリズムの簡単な説明として、オーディオ信号で発生するエネルギー/振幅の変化を計算して記録します。次に、最大の「エネルギー変化」を取得し、感度に基づいて、そのパーセンテージを取得し、それをしきい値として設定します。したがって、ここでさまざまな程度の振幅/エネルギーを処理する問題が発生します。感度を低く設定しすぎると、「ゴースト」の開始が発生し、感度を高く設定しすぎると、一部の開始を見逃します。私が使用しているアルゴリズムを改善する(または新しいアルゴリズムを提案する)ための提案はありますか?
100%の精度を得るのは難しいと思いますが、現在の場合と比較して、音符の開始を検出するためのより優れたアルゴリズムが必要です。私が得ることができるすべての助けをいただければ幸いです。どうもありがとうございます!
audio - スペクトル差を使用した開始検出に注意してください
発症検出はかなり新しいです。私はそれについていくつかの論文を読み、時間領域のみで作業する場合、多数の誤検知/陰性が発生する可能性があり、一般に両方の時間領域で作業することをお勧めします。および周波数領域または周波数領域。
これに関しては、スペクトルエネルギーまたはFFTビンからの結果を使用して音符の開始を決定する方法に問題があるため、少し混乱しています。なぜなら、振幅の鋭いピークによって表される開始に注意しないのですか?
誰かがこれについて私に教えてもらえますか?ありがとうございました!
audio - ビート検出への開始?
どのオンセットが拍動であるかをどのように判断しますか? ノート オンセット検出にはスペクトル フラックスを使用し、ピーク ピッキング/しきい値には実行平均を使用しています。
私はギター楽器で作業しているだけなので、パーカッションの存在はこれに役立たないかもしれません. 何か案は?
ありがとう!
audio - 音符の開始点からのビート検出?
どのノートオンセットがビートであるかをどのように判断しますか? 現在、私が持っているのは、いわゆる「パルストレイン」を使用した「ブルートフォース」メソッドのようなものです。
基本的には、最小テンポから最大テンポまでのパルス列を生成するという考え方です。これらのパルス列は、特定のテンポでビートが発生するタイミングを表しています。たとえば、Tempo = 60bpm (1 分あたりのビート) の場合、パルス列には 1 秒間隔 (60 / 60 bpm) で発生するビートがあります。Tempo = 120bpm の場合、パルス列には 0.5 秒間隔 (60 / 120bpm) で発生するビートがあります。
基本的に、これらのパルス列を使用して、想定されるビートでノートオンセットがどれだけ近いかを比較対照します。したがって、一般的には、音符の開始が拍の位置に近いほど、全体的な差は小さくなるという考えです。次に、基本的に全体的な違いが最小のテンポを選択します。
ただし、この実装に関して 2 つの問題に遭遇しました。
1.) 特に録音された音楽 (私が取り組んでいる) では、音符の開始点に完璧な位置を設定することはめったにありません。
2.) テンポを高くすると間隔が狭くなり、実際の音楽のより良いテンポ (純粋に8 分音符はおそらく 120bpm を返します)
ビート検出の他の (単純な) 方法を提案できますか? 経験を積むためにアルゴリズムを自分で実装したいので、チュートリアルへの役立つリンクは大歓迎です。ありがとうございました!