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

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

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

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

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

  • Слишком много разных версий 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

    Python-запросы ImportError: невозможно импортировать имя HeaderParsingError

    Анализ настроений по большому набору текста интерактивной беседы

    Может быть, «вид» монады в питоне

    Ошибка с MySQLdb на OS X El Capitan

    Поддерживает ли Python 2.5.2 Unicode для lower () и upper ()?

    Невозможно заставить MySQL-исходный запрос работать с использованием модуля mysqldb Python

    все перестановки бинарной последовательности x бит длиной

    Чтение файла в кусках – использование ОЗУ, чтение строк из двоичных файлов

    Как я могу использовать telnetlib python для получения данных с устройства в течение определенного периода времени?

    python: создание гистограммы из словаря

    Обратить строку в Python

    Как создать скриншот веб-страницы с использованием сценария на стороне сервера?

    Создание списка на основе значения, хранящегося в переменной в python

    Python Multiprocessing – Как передать функции kwargs?

    В чем разница между eval, exec и компиляцией в Python?

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