Как стать автором
Обновить

Pitch-tracking, или определение частоты основного тона в речи, на примерах алгоритмов Praat, YAAPT и YIN

Время на прочтение 10 мин
Количество просмотров 22K
Всего голосов 33: ↑32 и ↓1 +31
Комментарии 7

Комментарии 7

А какие алгоритмы порекомендуете для распознавания основного тона в реальном времени? Есть ли какие-то наработки по ML-предсказанию тона для потоковых данных? Меня интересует синхронное определение тона с минимальной задержкой для одного из моих «гаражных» проектов.

Для этого ML не нужен, для этого есть фазовая автоподстройка частоты (ФАПЧ), реализуется на любом мощном микроконтроллере (вопрос ширины полосы и частоты дискретизации ацп)


Или делается набор фильтров под конкретные частоты

Могу скинуть код на С. Однако он немного коряво написан. Или можно погуглить литературу на тему синтезаторов речи, вокодеров. В одной из книжек нашел собственно алгоритм. Он анализирует экстремумы сигнала.
Там, где у вас на спектрограмме Pratt пометил основной тон синей линией, не очень очевидно, правильно ли он выбран. И выше, и ниже него есть гармоники, которые по форме его повторяют. Насчет гармоник выше — это, очевидно обертона, а откуда берутся гармоники ниже синей линии?
Спасибо за вопрос! На рисунке шкалы не зависимы для спектрограммы и для f0. Поэтому синяя линия не должна накладываться на темные полосы на спектрограмме.
Pitch-tracking по-русски переводится как «определение основного тона».

Реализации в статье старые описаны, в шумах они не работают. Про динамическое программирование ни слова, за счёт него улучшение достигается значительное.

Хороший вариант от Гугла github.com/google/REAPER.

Или на нейросетях — arxiv.org/pdf/1802.06182.pdf
Спасибо за комментарий! Динамическое программирование используется во всех вышеперечисленных алгоритмах. К сожалению, объем статьи не позволил включить их подробный пересказ, однако вы можете ознакомиться с ними по предоставленным ссылкам.

Также мы осознанно не обсуждаем нейросетевые решения. Нейросети — другой подход, который в разрезе речевых технологий заслуживает отдельного обсуждения. Было бы интересно их сравнить.

Создатель алгоритма Google (REAPER), David Talkin, известен как автор статьи 1995 года «A robust algorithm for pitch tracking (RAPT)», на которую опирались создатели YAAPT. Мы не видели статьи с подробным описанием REAPER, но алгоритм опирается на ту же функцию Normalized Cross Correlation (NCCF), которая обсуждается выше.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий