2009-02-02 3 views
4

Я хочу знать, как выполнять «обнаружение спектральных изменений» для классификации вокала & невольных сегментов песни. Нам нужно найти спектральные изменения из спектрограммы. Любая подробная информация об этом, в частности, с участием MATLAB?Разделение пения голоса от музыки

ответ

1

Это сложно. Если вы можете сделать это надежно, вы будете опытным ученым-компьютерщиком. Самый многообещающий метод, который я читал, использовал лирику для генерации голоса для сравнения. Опять же, если вы можете это сделать и написать статью об этом, вы будете знамениты (среди компьютерных ученых). Кроме того, вы могли бы заработать много денег, автоматически генерируя тайминги для караоке.

4

Разделение различных сигналов от аудио - очень активная область исследований, и это очень сложная проблема. В литературе это часто называют Blind Signal Separation. (Существует несколько MATLAB демо-код в предыдущей ссылке.

Конечно, если вы знаете, что есть вокал в музыке, вы можете использовать один из многих vocal separation алгоритмов.

2

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

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

В худшем случае ваш материал будет обычным mp3-альбомом обычных песен, т. Е. Полноценной группой + вокалистом. У меня такое чувство, что вы, вероятно, смотрите на характер вашего вопроса.

В лучшем случае у вас есть доступ к записям студий многодорожечной съемки и имеют как минимум полное микширование и инструментальную дорожку, и в этом случае вы можете извлечь вокальные частоты из микса. Вы сделали бы это, создав импульсный отклик с одного из треков и применив его к другому.

В среднем случае вы имеете дело с простой музыкой, в которой вы можете применить какой-то алгоритм, настроенный на параметры музыки. Например, если вы имеете дело с электронной музыкой, вы можете использовать в своих интересах стерео ширину дорожки, чтобы исключить все моноэлементы (например, басовые линии + пинки) для извлечения вокалов + других инструментов, а затем применить некоторые типы фильтрации и анализа спектра оттуда.

Короче говоря, если вы планируете сделать универсальный алгоритм для создания чистых сокращений acapella из произвольного исходного материала, вы, вероятно, кусаете больше, чем можете здесь жевать. Если вы можете конкретно ограничить свой исходный материал, то у вас есть ряд алгоритмов в вашем распоряжении в зависимости от характера этих источников.

0

Если вы просто хотите решить, что блок музыки - это чистая а-капелла или инструментальный фон, вы, вероятно, могли бы это сделать, сравнив полосу пропускания сигнала с обычной полосой пропускания человека. Кроме того, вы можете проверить базовую частоту, которая может быть только в довольно ограниченном диапазоне частот для человеческих голосов.

Все еще, это, вероятно, будет непросто. Однако слуховые аппараты делают это все время, поэтому это явно выполнимо. (Хотя они обычно ищут речь, а не петь)

-1

сначала синхронизировать инструментальную с оригиналом, убедитесь, что они имеют одинаковую длину и скорость передачи, а также начать и завершить в точное время и преобразовать их в.WAV

затем сделать что-то вроде

I = wavread(instrumental.wav); 
N = wavread(normal.wav); 
i = inv(I); 
A = (N - i); // it could be A = (N * i) or A = (N + i) you'll have to play around 
wavwrite(A, acapella.wav) 

, который должен сделать это .. немного линейная алгебра идет длинный путь.

+0

Я не думаю, что вы поняли вопрос. Он спрашивает о «обнаружении спектральных изменений»; ваша разница в двух волнах не отвечает на его вопрос. –

Смежные вопросы