извлечение характеристик основного тона из аудиофайла

Я пытаюсь извлечь характеристики основного тона из аудиофайла, который я буду использовать для проблемы классификации. Я использую python (scipy / numpy) для классификации.

Я думаю, что могу использовать частотные функции, используя scipy.fft но я не знаю, как аппроксимировать музыкальные ноты, используя частоты. Я немного исследовал и обнаружил, что мне нужно получить функции цветности, которые отображают частоты до 12 бит для нот хроматического масштаба.

Я думаю, что есть набор цветных инструментов для matlab, но я не думаю, что для python есть что-то похожее.

Как мне идти дальше? Может ли кто-нибудь также предложить прочитать материалы, на которые я должен обратить внимание?

    3 Solutions collect form web for “извлечение характеристик основного тона из аудиофайла”

    Вы можете отображать частоты в музыкальные ноты:

    п = 12 * log_2 (е / Ср) +69

    с N являясь номером ноты миди, который должен быть рассчитан, е частота и Cp высота камеры (в современной музыке 440,0 Гц).

    Как вы знаете, одна частота не делает музыкальную подачу. «Шаг» возникает из-за ощущения фундаментальных гармонических звуков, то есть звуков, которые в основном состоят из целочисленных кратных одной частоте (= фундаментальной).

    Если вы хотите иметь функции Chroma на Python, вы можете использовать Bregman Audio-Visual Information Toolbox . Обратите внимание, что функции цветности не дают вам информации об октаве поля, поэтому вы просто получаете информацию о классе основного тона .

     from bregman.suite import Chromagram audio_file = "mono_file.wav" F = Chromagram(audio_file, nfft=16384, wfft=8192, nhop=2205) FX # all chroma features FX[:,0] # one feature 

    Общая проблема извлечения тональной информации из звука называется детекцией тона .

    Если вы хотите использовать сторонние библиотеки (по крайней мере, как ссылку на то, как это сделали другие люди):

    Извлечение музыкальной информации из звука, презентация из PyCon 2012, показывает, как использовать AudioNest Python API:

    • Демонстрация определения высоты тона в действии
    • Некоторые пояснения

    Вот соответствующая документация EchoNest:

    • Методы API отслеживания
    • Подробная аналитическая документация

    Соответствующая выдержка:

    содержание основного тона задается вектором «цветности», соответствующим 12 шагам основного тона C, C #, D-B, со значениями от 0 до 1, которые описывают относительное доминирование каждого тона в хроматической шкале. Например, аккорд C Major, скорее всего, будет представлен большими значениями C, E и G (т.е. классы 0, 4 и 7). Векторы нормализуются до 1 по их самому сильному размеру, поэтому шумные звуки, вероятно, представлены значениями, близкими к 1, тогда как чистые тона описываются одним значением в 1 (шаг) и другими около 0.

    EchoNest делает анализ на своих серверах. Они предоставляют бесплатные ключи API для некоммерческого использования.

    Если EchoNest не вариант, я бы посмотрел проект aubio с открытым исходным кодом . Он имеет привязки к python, и вы можете изучить источник, чтобы узнать, как они выполнили настройку тона .

    Вы можете попробовать прочитать литературу об обнаружении высоты тона, которая довольно обширна. Как правило, методы, основанные на автокорреляции, работают очень хорошо; методы частотной области или пересечения нуля менее надежны (поэтому БПФ на самом деле не очень помогает). Хорошей отправной точкой может стать реализация одного из этих двух алгоритмов:

    Что касается готовых решений, ознакомьтесь с Aubio , кодом C с оболочкой python, несколькими имеющимися алгоритмами извлечения тона, включая YIN и multiple-comb.

      Interesting Posts

      RuntimeError: не удалось завершить работу тестового сервера в течение 2 секунд. Сервер может застрять или генерировать медленный ответ. – Django

      Редактирование определенной строки в текстовом файле в python

      Можно ли построить неявные уравнения с использованием Matplotlib?

      Я новичок в python, я не могу сказать, будет ли это работать или нет

      функция распаковки в python

      Проверка того, является ли число простым числом в Python

      oddites

      Pandas dataframe: проверьте, монотонно ли данные

      У Eclipse есть направляющие отступов?

      PySide Qt: автоматический вертикальный рост для виджета TextEdit и расстояние между виджетами в вертикальном макете

      Создание общего контакта Google с использованием API-контакта создается, но не в общем каталоге

      Python: для цикла – печать в одной строке

      Сортировка связанных элементов в шаблоне Django

      Поиск размера с наибольшей дисперсией с использованием scikit-learn PCA

      tweepy count ограничено до 200?

      Python - лучший язык программирования в мире.