私はSOに関する多くの質問を読みました、そして率直に言って、それらのそれぞれはそれについて取り組む特定の方法を説明していません。「FFTを実行する」や「ゼロクロッシング」などと言う人もいます。しかし、デジタルオーディオ入力が特定の周波数の振幅の配列で構成されていることを理解しているだけです。それを超えて。
今私はナイキストの定理、周波数、振幅、フーリエ級数などを知っています、そしてそれは私がいくつかの学期の大学のプログラムでそれをした2-3年前からです。しかし、当時はフーリエの実際の使用法についてはあまり教えられていませんでした。私は、主題を理解するのに十分なことを学ぶだけで、その主題についてさらに掘り下げることはありませんでした。しかし、今、私はそれらすべてのものを使わなければならないつもりです。
これが私が検出しようとしている音のスナップショットです:
明らかに、サウンドにはユニークなグラフがあります。グラフ内の独特のとがった線から特定の特有の特性を抽出する方法を理解したいだけです。どのような振幅、周波数など。そしてどのくらいの時間-それは些細なことですが私は推測します。
わかりやすい説明リストを使って簡単な手順を教えてください-理解できない用語をググググできます。
たぶんこれ?-
入力オーディオデータを取得する
スペクトログラムをプロットする
ノイズのない環境で検出したいサウンドのスペクトグラムグラフを取得する
そのグラフを研究する-その音のユニークな特性を描く
(4)で見つかったサウンドの特性を使用して、ライブオーディオフィードでこれらの特定の特性を検出できるある種の関数を作成します
一致が見つかった場合、まあ-仕事は完了です。
アルゴリズムを磨いて、偽陰性を取り除きます。
保存したい音を静かな環境でジェスチャーとしてユーザーに録音してもらうことを考えていました。そして、ユーザーは静かな時間のパディングの間だけで音を出します。録音の最初と最後に3秒。
つまり、最初の3秒間、私のシステムは現在の入力が通常の静かなバックグラウンドサウンドであることを確認します。そして、グラフの突然の変化は音声入力の開始になります。そして、それが停止すると、録音はさらに3秒間続き、その後に静かな時間のパディングが続きます。これはユーザーが手動で行います。次に、パディング時間の間のどこかで、グラフの突然の変化が続いた部分のみの特性を自動的に保存します。
したがって、その部分の特性はそのサウンドのジェスチャーデータとして保存され、後でライブオーディオフィードでその特定のサウンドを検出するために使用されます。
問題は、これらすべてを平易な英語で考えていることです。コードで効率的に実装できるように、数学と物理学について考える必要があります。何を書いてコードのどこに書けばいいのかまったくわからないのですが、SOに関する非常に多くのライブラリと質問があっても、自由に使えます。
これが長かったらごめんなさい。