Intereting Posts
Получение INVALID_SENDER на одном устройстве во время работы с другим GCM-андроидом Автоматическая всплывающая клавиатура при запуске Дублировать файлы при добавлении компиляции с помощью Gradle в Android Studio Переход от общего элемента не работает Как создать фотоэффекты в Android? Как найти функцию поиска в android с помощью телефонной заставки? Получение сборки Ошибка создания приложения для Android с использованием расширения Xamarin для предварительного просмотра Visual Studio 2015 Создание службы Android с помощью Phonegap? (У вас есть приложение для телефонного звонка, даже если оно закрыто) Как получить электронную почту пользователя на GraphRequest.newMeRequest Не удалось выполнить перезагрузку Android Repo Почему собственный SIP-стек, включенный в Android 2.3, не работает над 3g? Как правильно использовать Dagger2 с новыми компонентами архитектуры Android Массивы сравнения андроидов Как удалить интервал для виджета вкладки в Android? Как можно сделать тосты, только если приложение находится на переднем плане?

Поиск голоса на Android

Как я могу найти min, max, mean, std dev pitch из моей записи голоса? Я использую AudioRecord для записи своего голоса.

frequency = 8000; channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO; audioEncoding = AudioFormat.ENCODING_PCM_16BIT; recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration, audioEncoding, bufferSize); 

После того, как я использую алгоритм FFT для обработки голосовых необработанных данных и получаю float []

После использования этой функции:

 private float[] spectrumAnalyz(float[] spectr) { float Re; float Im; float[] spectruData = spectr; float[] mySpectrum = new float[(spectruData.length / 2) - 1]; for (int i = 1, j = 0; i < spectruData.length / 2; i++, j++) { Re = spectruData[2 * i]; Im = spectruData[2 * i + 1]; mySpectrum[j] = (float) Math.sqrt(Re * Re + Im * Im); } return mySpectrum; } 

Эта функция возвращает частотный массив. После поиска в google я нашел эту формулу http://en.wikipedia.org/wiki/Pitch_(music)

 pitch = 69+12*log2(F/440Hz), where F is frequency in Hz. 

Используя эту формулу, я могу найти min, max, mean и std dev pitch.

Все верно?

FFT возвращает массив сложных величин для группы выбранных битов частоты спектра звука. Он напрямую не оценивает частоту основного тона, так как музыкальный шаг – это не только спектральная ячейка.

Если вы используете метод определения высоты тона или оценки (взвешенная автокорреляция, кепструм, RAPT и т. Д.), Вы можете указать формулу, которую вы укажете, для MIDI-частоты.