Лучший подход зависит от анализируемого аудио. Для монофонического ввода, такого как певец, флейта или труба, может хорошо подойти автокорреляционный подход. Идея заключается в том, что вы пытаетесь найти период формы волны, сравнивая его с собой на разных интервалах, чтобы найти наилучшее совпадение. Представьте, что у вас есть звуковая волна с периодом, который начинается заново после каждых 400 сэмплов. Если бы вам пришлось перебирать некоторое количество выборок, всегда сравнивая выборку по индексу i с выборкой по индексу (i + 400), возможно, вычитая одну из другой и добавляя этот результат к промежуточной сумме, вы обнаружите, что ваш итого было бы 0, если бы волна идеально соответствовала сама себе на этом интервале 400. Конечно, вы не знаете, что 400 - ваше магическое число, и поэтому вам нужно проверить различные интервалы, которые попадают в ваш возможный диапазон , Вы можете исключить интервалы, которые привели бы к частоте, которая была бы невероятно низкой или высокой. Вы также, очевидно, не ожидаете найти идеальное совпадение, но, вообще говоря, интервал, в котором совпадение наиболее близко, является вашей частотой для монофонического тона.
Для полифонических источников или инструментов с тембром, который очень богат гармониками, таких как скрипка или гитара, вам может понадобиться другой подход. Для этого широко используются подходы, основанные на БПФ, чтобы разбить аудиосегменты на их содержание гармонической высоты. Затем нужно применить некоторые правила, которые вы придумали, чтобы решить, какие частоты, выходящие из БПФ, являются вашей лучшей ставкой.