Я знаю, что этот ответ не сделает всех счастливыми, но начнем.
Это сложно, очень сложно. Сначала прочтите как можно больше руководств по БПФ, автокорреляции, вейвлетам. Хотя я все еще борюсь с DSP, я кое-что понял из следующего.
https://www.coursera.org/course/audio курс не работает в момент, но видео все еще доступны.
http://miracle.otago.ac.nz/tartini/papers/Philip_McLeod_PhD.pdf диссертация о разработке алгоритма распознавания звука.
http://dsp.stackexchange.com - целый сайт, посвященный цифровой обработке сигналов.
Если вы, как и я, не сделали достаточно математики, чтобы полностью следовать руководствам, не сдавайтесь, поскольку некоторые диаграммы и примеры все же помогли мне понять, что происходит.
Далее идут тестовые данные и тестирование. Напишите себе библиотеку, которая генерирует тестовые файлы для проверки вашего алгоритма / алгоритмов.
1) Супер простой генератор синусоидальной волны. Предположим, вы хотите написать YAT (еще один тюнер), а затем используйте свой синусоидальный генератор для создания серии файлов около 440 Гц, скажем, от 420 до 460 Гц с различными приращениями, и посмотрите, насколько чувствителен и точен ваш код. Может ли он разрешаться с точностью до 5 Гц, 1 Гц, еще лучше?
2) Затем модернизируйте свой генератор синусоидальной волны, чтобы он добавлял к сигналу серию более слабых гармоник.
3) Далее идут реальные вариации гармоник. Таким образом, в то время как для большинства струнных инструментов вы увидите ряд гармоник как простые кратные основной частоты F0, для таких инструментов, как кларнеты и флейты, из-за поведения воздуха в камере четные гармоники будут отсутствовать или очень слабые. А для некоторых инструментов F0 отсутствует, но ее можно определить по распределению других гармоник. F0 - это то, что человеческое ухо воспринимает как высоту звука.
4) Добавьте некоторое преднамеренное искажение, нерегулярно смещая пиковые частоты гармоник вверх и вниз.
Дело в том, что если вы создаете файлы с известными результатами, то легче проверить, что то, что вы создаете, действительно работает, без ошибок, конечно.
Также существует ряд «библиотек», содержащих звуковые сэмплы. https://freesound.org из упомянутой выше серии Coursera. http://theremin.music.uiowa.edu/MIS.html
Затем имейте в виду, что ваш микрофон не идеален и, если вы не потратили на него тысячи долларов, будет иметь довольно изменчивый диапазон частотной характеристики. В частности, если вы работаете с низкими нотами, тогда более дешевые микрофоны, читайте встроенные в ваш компьютер или телефон, имеют значительный спад, начиная с 80-100 Гц. Для достаточно хороших внешних вы можете снизить частоту до 30-40 Гц. Найдите данные на своем микрофоне.
Вы также можете проверить, что происходит, проиграв тон через динамики, а затем записав свой любимый микрофон. Но, конечно, сейчас мы говорим о двух наборах кривых частотной характеристики.
Что касается производительности, существует ряд свободно доступных библиотек, хотя следует помнить о различных моделях лицензирования.
Прежде всего, не сдавайтесь после пары первых попыток. Удачи.
person
TJA
schedule
24.01.2015