python - аудио классификация сэмплов одинаковой длины / "вокодер" - PullRequest
1 голос
/ 29 ноября 2011

Кто-нибудь может предоставить ссылки, советы или другие виды помощи по следующим вопросам?

Цель - использовать python для классификации 10-секундных аудиосэмплов, чтобы потом я мог говорить в микрофон, чтобы Python выбирал и воспроизводил фрагменты (затемненные вместе) ближайших совпадений из дБ.Моя цель не состоит в том, чтобы иметь самое близкое соответствие, и мне все равно, каков источник аудиосэмплов.Таким образом, результат, вероятно, бесполезен, кроме как говорить в шуме (забавно).

Я бы хотел, чтобы приложение python могло найти конкретное совпадение FFT, например, в пределах 10-секундных выборок в БД.Я предполагаю, что в реальном времени сэмплирование с микрофона будет иметь буферную выборку в 100 миллисекунд.

Есть идеи?FFT?Что дБ?Другое

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

Для этого вам понадобятся три вещи:

  1. Сегментация (решите, как сделать ваши аудиосэмплы)
  2. Извлечение функции (решите, какая аудио функция (например, FFT) вам нужна)
  3. Метрика расстояния (определите, какой «ближайший» образец)

Сегментация : вы в настоящее время описываете использование 10-секундных выборок. Я думаю, что вы могли бы получить лучшие результаты с более короткими сегментами (ближе к 100-1000 мс), чтобы получить что-то, что лучше соответствует изменениям в голосе.

Извлечение функции : вы упоминаете об использовании FFT. скорость пересечения нуля удивительно хорошо, учитывая, насколько это просто. Если вы хотите получить больше фантазии, возможно, вам стоит использовать MFCCs или спектральный центроид.

Метрика расстояния : большинство людей используют евклидово расстояние , но есть и более изящные, такие как Манхэттенское расстояние , косинусное расстояние и расстояние землеройных машин .

Для базы данных, если у вас достаточно маленький набор выборок, вы можете просто попытаться загрузить все в kdtree , чтобы вы могли выполнять быстрые вычисления расстояний и просто держать их в памяти.

Удачи! Звучит как забавный проект.

0 голосов
/ 18 апреля 2015

Вы можете попробовать некоторые типичные кратковременные извлечения признаков (например, энергию, скорость пересечения нуля, MFCC, спектральные характеристики, цветность и т. Д.), А затем смоделировать свой сегмент с помощью вектора статистики признаков. Затем вы можете использовать простой основанный на расстоянии классификатор (например, kNN), чтобы получить «самые близкие» обучающие выборки из набора, помеченного вручную, с учетом неизвестного «запроса».

Проверьте мою библиотеку по нескольким функциям Python Audio Analysis: pyAudioAnalysis

0 голосов
/ 29 ноября 2011

Попробуйте поискать алгоритмы по "дактилоскопии музыки".

...