Алгоритм для удаления вокала из звуковой дорожки
Я хочу удалить вокал с mp3-треков. Я искал google и пробовал несколько программ, но ни один из них не убедителен. Я планирую прочитать mp3 файл, получить форму волны и удалить форму волны, которая превышает указанный предел.
Есть ли у вас какие-либо предложения о том, как действовать.
- Обновить
Мне просто нужен код, который может читать формат mp3 файлов. Есть ли программные средства?
Ответы
Ответ 1
Это не столько "алгоритм", сколько "трюк", но он может быть автоматизирован в коде. Он работает в основном для стереофонических дорожек, где вокал сосредоточен. Если вокал центрирован, они одинаково проявляются на обоих треках. Если вы инвертируете одну из дорожек, а затем объедините их вместе, формы волны центрального вокала будут отменены и будут практически удалены. Вы можете сделать это вручную с помощью большинства хороших редакторов аудио, таких как смелость. Это не дает вам идеальных результатов, и остальная часть звука тоже немного страдает, но это приводит к большим трекам караоке:)
Ответ 2
Источник: http://www.cdf.utoronto.ca/~csc209h/summer/a2/a2.html, написанный Даниэлем Зингаро.
Звуки - это волны давления воздуха. когда генерируется звук, звуковая волна состоящий из сжатий (увеличивается в давлении) и разрежения (уменьшение давления) проходит через воздух. Это похоже на то, что если вы бросаете камень в пруд: вода поднимается и падает повторяющаяся волна.
Когда микрофон записывает звук, он измеряет давление воздуха и возвращает его как значение. Эти значения называются выборками и могут быть положительный или отрицательный, соответствующий увеличивается или уменьшается в воздухе давление. Каждый раз, когда давление воздуха записывается, мы отбираем звук. Каждый образец записывает звук в момент времени; чем быстрее мы образец, тем точнее наш представление звука. частота дискретизации относится к тому, сколько раз в секунду мы пробуем звук. Для Например, звук качества CD использует частота дискретизации 44100 выборок на второй; выбор кого-то голоса для использование в разговоре VOIP использует далеко меньше этого. Частота дискретизации 11025 (качество голоса), 22050 и 44100 (качество CD) являются общими...
Для монофонических звуков (с одним звуком канал), образец является просто положительное или отрицательное целое число, которое представляет собой величину сжатия в воздухе в точке образец был приняты. Для стереозвуков (которые мы используем в этом задании), образец фактически состоящий из двух целых значения: один для левого динамика и один для правильного...
Здесь работает алгоритм [для удаления вокала].
-
Скопируйте первые 44 байта из входного файла на вывод файл. Эти 44 байта содержат важные информацию заголовка, которая не должна быть изменен.
-
Затем обработайте остальную часть входного файла в виде последовательности шорт. принимать каждая пара шорт слева и справа, и вычислять комбинированные = (слева - справа) /2. Напишите две копии комбинированных выходной файл.
Почему это работает?
Для любопытного, краткого объяснения алгоритма вокального удаления в заказ. Как вы заметили из алгоритм, мы просто вычитаем один канал от другого (а затем разделив на 2, чтобы сохранить громкость слишком громко). Так почему вычитая левый канал из правый канал волшебным образом удаляет вокал?
Когда музыка записывается, это иногда в том случае, когда вокал записанных одним микрофоном, и этот единственный вокальный трек используется для вокал в обоих каналах. Другой записываются инструменты в песне несколькими микрофонами, чтобы они звук по-разному в обоих каналах. Вычитание одного канала из другого забирает все, что есть общий "между этими двумя каналами который, если нам повезет, означает удаление вокал.
Конечно, вещи редко работают так хорошо. Попробуйте свое вокальное удаление на этом плоховатый wav файл. Конечно, вокалы исчезли, но и тело музыка! По-видимому, некоторые из были также записаны инструменты" центрировано", чтобы они были удалены наряду с вокалом, когда каналы вычитаются.
Ответ 3
Вы можете использовать панель pydub Toolbox, см. здесь, а также см. здесь для соответствующего вопроса. Он зависит от FFmpeg и может читать любой файл.
Затем вы можете сделать следующее:
from pydub import AudioSegment
from pydub.playback import play
# read in audio file and get the two mono tracks
sound_stereo = AudioSegment.from_file(myAudioFile, format="mp3")
sound_monoL = sound_stereo.split_to_mono()[0]
sound_monoR = sound_stereo.split_to_mono()[1]
# Invert phase of the Right audio file
sound_monoR_inv = sound_monoR.invert_phase()
# Merge two L and R_inv files, this cancels out the centers
sound_CentersOut = sound_monoL.overlay(sound_monoR_inv)
# Export merged audio file
fh = sound_CentersOut.export(myAudioFile_CentersOut, format="mp3")
Ответ 4
Выше указанного предела? звучит как фильтр высоких частот... Вы можете использовать фазу отмены, если у вас есть трек acapella вместе с оригиналом. В противном случае, если только его старый трек 60-х годов, у которого есть вокал прямо в середине, и все остальное жестко подкрашено, я не думаю, что там есть чистый способ удаления вокала.