Я намагаюся реалізувати гру співу, яка проаналізує вихідний мікрофон і скаже гравцеві, як добре він співає. Це потрібно зробити в режимі реального часу.
Я натрапив на багато тем, які задають одне і те ж питання, але я все ще зовсім не закінчую це, мабуть, через мій брак досвіду в цій галузі та дрібну математику. Я реалізував алгоритм, заснований на статті зміни зрушення кроку на веб-сайті DSPDimension: http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/
Я витягую справжню частоту і величину так, як пояснюється в статті, але я не знаю, що знаходжу фундаментальну частоту в цьому. Я намагався отримати бункер з найбільшою величиною, але це дає мені лише правильні результати для отримання сигналів більш високого тону, неважливо, який фактор перебігу я використовую, я все одно отримую погані дані для низькочастотних сигналів. Цей підхід є абсолютно неправильним чи я на правильному шляху, але просто щось пропускаю?
Спасибі заздалегідь,
EDIT: Я забув зазначити, що мене цікавить тільки крок класу, тому це нормально, якщо фундаментального не вистачає, але у мене є сильний перебіг у вибірці.
EDIT2: Спасибі всім, я щойно закінчив версію алгоритму, який працює як шарм. Проблема оцінювання з низьким тоном була пов'язана з моїм вхідним тестом. Коли я заспівав ноту, вона відповідала правильно. Також я зараз розглядаю всі гармоніки, а не лише найвищий пік.