12

再生されているノートを出力できるようにオーディオを処理するための最良の方法は何ですか?私は大学の課題のためにギターチューナーを作成していますが、Android開発は初めてです。

Google APIからの録音に関するAndroidの例を見たことがありますが、そこからどこに行けばいいのでしょうか。

周波数を取得するには、フーリエ変換などを実行する必要があることを理解しています。これを実行する方法について誰かアドバイスがあるかどうか疑問に思っていますか?

画面に正しい頻度が表示されるようになったら、プロジェクトの大部分を完了します。

助けてくれてありがとう。

4

5 に答える 5

11

Android 開発の経験がなく、デジタル信号処理とフーリエ変換の経験がほとんどまたはまったくない場合は、難しい課題に取り組んでいます。

一方、anthropomo が提案したように、課題に既存のライブラリを使用できる場合は、それをうまくやってのけるチャンスがあるかもしれません。

ただし、教授が既存のライブラリの使用を許可しない場合は、次の難しい問題を解決する必要があります。

あなたのプログラムは、演奏されている音の基本周波数をどのように自動的に見つけますか? E2 ノートを演奏する本物のクラシック アコースティック ギターの周波数/周波数_デシベルマグニチュード プロットを見てください。基本周波数 (82.4 Hz) が最初の高調波より約 17 デシベル (17 dB) 減衰していることに注目してください (最初の高調波は 164.8 Hz にあります)。

GuitarE2frequency_decibelMagnitude

以下は同じプロットの拡大図で、基本的なピークをより明確に見ることができます。

GuitarE2frequency_decibelMagnitudeCloseup

第 1 高調波よりも 17 dB 減衰している基本周波数は、大きな減衰です。以下は同じ E2 ノート スペクトルですが、線形の周波数マグニチュード軸にプロットされています (縦軸はデシベル周波数マグニチュードではなく線形周波数マグニチュードになります)。これで、基本周波数のピークが実際に第 1 高調波をどれだけ下回っているかをより明確に確認できます。

GuitarE2frequency_linearMagnitudeCloseup

あなたのプログラムは 82.4 Hz で 17 dB 減衰された基本波を自動的に検出する必要がありますが、ユーザーがギターで演奏している音符をプログラムが事前に知ることができない一般的なケースでは、どのように検出するのでしょうか?

上記の周波数スペクトルは、クラシック アコースティック ギターの E2 のものです。スチール弦ギターの E2 のスペクトルはどのように異なりますか? 増幅されたエレクトリック ギターの E2 はどうですか? あなたのプログラムは、これらの異なるスペクトル間の違いをどのように扱いますか?

問題は簡単ではありません。問題は、この課題にどれくらいの時間があるか、そして教授が完了した課題と見なす時間はどれくらいかということです。

このリファレンスは、より深い理解を提供します: 102.4 KHz までの楽器スペクトル

周波数スペクトルをプロットし、E2 から Bb5 までのギターの音を聞くことができます:楽器のスペクトル

于 2013-02-09T00:55:18.247 に答える
5

そのままの FFT 振幅またはその他の周波数ピーク推定器を使用しないでください。ほとんどのギターの低音弦では、非常に悪い/間違った結果が得られます。音楽のピッチは、人間の心理音響的知覚現象であり、多くの場合、FFT 周波数と同じではありません (実際の弦楽器によって生成されるものとは異なり、純粋な正弦波トーンを除く)。

代わりに、Google の「ピッチ検出」および「ピッチ推定」メソッドを使用してください。いくつかの可能性には、重み付き自己相関、AMDF、ASDF、ケプストラム/ケプストラム分析、調和積スペクトル分析、および RAAPT や YAPT などの複合アルゴリズムが含まれます。これらの推定アルゴリズムのいくつかに関するいくつかの学術論文への参照は、私の Web ページにあります: http://www.nicholson.com/rhn/dsp.html#1

于 2013-02-07T07:46:41.680 に答える
4

オーディオ処理にライブラリを使用することにインストラクターが同意する場合は、libpd を使用した完全な Android ギター チューナー アプリのソースを次に示します。

https://github.com/nettoyeurny/Making-Musical-Apps/tree/master/android/GuitarTuner

それを使用するには、Pure Data オーディオ合成プログラミング言語の基礎も学ぶ必要があります。チューナーに必要なツールはそれほど広範ではなく、上記のアプリに配置されています。明らかに、これを自分の仕事にするために何らかの作業を行う必要があります。

以下は、Pure Data を使用するための非常に優れたイントロダクションです。

http://en.flossmanuals.net/pure-data/

于 2013-02-07T00:22:04.237 に答える
2

ギター ターナー アプリケーションの良い例です。Jtransfrom を使用します。

https://github.com/nivwusquorum/Simple-Guitar-Tuner

于 2014-02-26T08:24:30.857 に答える
1

このペーパーでは、使用する可能性のあるピッチ検出アルゴリズムの包括的な評価を提供します。

前述のように、自己相関は実装が簡単ですが、特に正確ではありません。特に、基本波が欠落していることが多い実際の楽器信号ではそうです。FFT アプローチには、大量の後処理が必要です。

大学の課題では、不完全な正確なシステムよりも、常に正確であるとは限らない完全な作業システムを使用した方がよいと思います。

于 2013-02-06T23:40:10.810 に答える