2017-03-05 33 views
0

WebオーディオAPIを使用して、マイクからのサウンドの周波数を取得しています。このため、私はこのgithubリポジトリに便利なコードを見つけました:https://gist.github.com/giraj/250decbbc50ce091f79eWeb Audio API - 正しい周波数を取得する

私の問題は、わずかな音だけ、さまざまな周波数が得られていることです。この音は私の声や楽器からのものです。

これらの周波数は、90〜4000Hzに似ています。しかし、私が知っているように、人間の声または楽器からの音符は、Hz単位で1つの周波数を持つことができます。そして私はかなり確信しています、私はただ一つのトーンを演奏しています。

どのようにして、トーンごとに3つまたは4つの周波数のどの周波数が私が探している周波数かを知ることができます。 C、D、Eのような音符をその周波数から認識するためには、この値が必要です。私はこの問題が話題ではないことを願っています。なぜなら、解決策を見つけようと本当に努力していたからです。API自体から解決できる問題であるか、何らかの理由で何らかの周波数を除去しなければならないかどうかわかりません。私はどんな種類の助けにも感謝します。

編集:この周波数リストに記載されている音符と同じ値に達することはありません。http://www.phy.mtu.edu/~suits/notefreqs.html。私はピアノアプリを使用しています。ピアノアプリは、プレイストアのフリークエンシーアプリに常に正しい周波数を与えています。だから、私は受け取った結果を疑うことさえある。

+0

ほとんどの場合、サウンドは単一の周波数ではなく、稀にしか人工的ではありません。私たちがトーンとして知覚していることは、実際にはある周波数fのコンテンツ(基本と呼ばれ、あなたが考えているもの)と一連の「高調波」のコンテンツで構成されています。 '(' 2f、3f、4f、5f、等)。演奏される音符を決定するには、それを考慮する必要があります。これを行う1つの方法は、スペクトログラムの高調波間の距離( 'f ')を探すことです。 – Linuxios

+0

このアドバイスをいただき、ありがとうございました。私はこの問題について考えます。 – Kuhfleisched

答えて

0

私は同じ質問をしゃべっていて、興味深い部分的な答えがあります。このウェブサイトhttp://www.phy.mtu.edu/~suits/Physicsofmusic.htmlには膨大な量の情報が数学的に音楽を説明しており、非常に役立ちます。

私はWebオーディオアナライザを使用して、fftの結果を音楽的な音程でビンに変換しています。これは、fftの結果がどのようなものなのかを示し、実際にどの周波数がサウンドに含まれているかを示しています。それはhttps://aerik.github.io/NoteDetector.htmです。

私がそれを開始した後、私は、自己相関を使って基本を検出する別の男のコードを発見しました。これは、あなたが探しているものに近いかもしれません:https://github.com/cwilso/PitchDetect私はそれを持っている問題は、それはかなり純粋なトーンのためにうまくいくが、まだ多くのノイズを持っているということです。

私は自己相関の結果をfftからの信号強度と比較することで彼のアプローチを私のものと組み合わせることを考えています。

これは楽しいプロジェクトですが、私は単純な答えはないと思います。

0

私はプロの歌手、ピアニスト、声の先生がコードに移行しているので、ここで混乱している結果について話すことができます。

ボトムライン:実際には、楽器で音符や歌を鳴らすと同時に多くの異なる周波数を生成しているため、正確な結果が得られます。しかし、あなたが目指しているものは、ほぼ確実に基本ピッチです。これは最も低いピッチです。

より複雑で、より複雑な物理的な答え:正弦波(機械的なビープ音、まともな楽器から出てこない音)を見ていない限り、聞こえる音にはおそらく多くの異なる周波数。サウンドは、基本的なピッチ(最も低い周波数、通常は音楽でピッチを指定するときに話すもの)とオーバートーンの大部分(他の高い周波数が特徴的なサウンドを構成します楽器、または歌手のために、母音さえも)。

あなたの基本的なピッチが100hzであると想像してみましょう。私たちは音楽の意味を説明するのに便宜のためにC1と呼んでいます(実際にはCではありません)。数字はCからBまでのオクターブのオクターブ飛びを表しています。200hz 300hz(G2)、400hz(C3)、500hz(E3)、600hz(G3)、700hz(Bb3)、800hz(C4)、900hz(D4)、1000hz(E4)いくつかの倍音が他のものよりも多く飛び出したり、これらの一部をスキップしたりします(多くは多くの倍音をスキップします)。しかし、すべての倍音はこのパターン内にあります。

すべての倍音は基本波の倍数であることに注意してください。つまり、あなたが見ている他のすべてのピッチでパターンを使用して、基本的なピッチを把握することができます。音楽の観点から見ると、この倍音シリーズで最初に見られるピッチは、オクターブ、パーフェクト5th、メジャー3th、メジャートライアドのうち、最もよく聞くものです。これは偶然ではありません。これらの他のピッチと倍音がどのように並んでいるかは、ほとんど確かに聞こえることがわかります。

これは基本的なピッチからの基本的な音程をどのように決定するのかということで、基本的には同じであろうと思われます。検出された周波数はおそらく最も低い周波数ですが、信号に無関係なノイズが含まれている可能性があるため、このヒューリスティックに注意してください。倍数のあなたの素晴らしいリストに含まれていないものはおそらくノイズです。

これは、一度に複数の(基本的な)ピッチを弾くと、はるかに複雑になります。私は自分自身でコードの検出を熟考しており、人々がすでにこの分野で何をしているのか、それをどのように構築できるのかを探しながら質問を見つけました。

関連する問題