Изолировать вокал, удалив фоновую музыку - PullRequest
1 голос
/ 11 июля 2019

Я хочу изолировать вокал и удалить фоновую музыку в mp3-файле. Мне не нужно полностью избавляться от фоновой музыки, но, по крайней мере, минимизировать ее.

Я попробовал pydub, который помогает с аудио манипуляциями. Я попробовал этот код, который удаляет вокал и фоновую музыку KEEPS. Мне нужно сделать наоборот. Я попытался переключить моноканалы звука и инвертировать другой канал, но это тоже не сработало.

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")

Кто-нибудь знает, какое решение для этого? Спасибо!

1 Ответ

1 голос
/ 11 июля 2019

Если ваш sound_CentersOut уже удалил вокал, почему бы вам не применить фазовую отмену на вашем sound_stereo, используя инвертированную форму sound_CentersOut?

# invert sound_CentersOut
sound_CentersOut_inv = sound_CentersOut.invert_phase()

# phase cancellation on original stereo with inverted sound_CentersOut
# the vocals should remain
vocals = sound_stereo.overlay(sound_CentersOut_inv)

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

...