Python 从歌曲中提取人声

Python 从歌曲中提取人声,python,algorithm,audio,signal-processing,voice,Python,Algorithm,Audio,Signal Processing,Voice,我的问题是如何使用python语言提取音乐中的人声 我已经通过了这个代码,但它提取的背景音乐 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_stere

我的问题是如何使用python语言提取音乐中的人声 我已经通过了这个代码,但它提取的背景音乐

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")
我需要在歌曲中提取人声


如果不是这样,那么如何从另一个音频文件中减去一个音频文件

您始终可以使用librosa库,这是python中最常用的音频处理库。 它有助于从伴奏乐器中分离人声(和其他零星的前景信号)

它获取切片并绘制相同的切片,但将其分为前景和背景

要保存提取的前景,可以使用:

导入librosa.output
新建y=librosa.istft(S_前台*阶段)
librosa.output.write_wav(“./new audio.wav”,new_y,sr)

这是对上述答案评论中提到的问题的回答:


如何保存生成的S_前景@玛丽亚姆拉曼尼莫哈达姆

首先导入librosa包的输出模块:

导入librosa.output
然后,在python文件末尾添加以下代码:

new_y=librosa.istft(S_前台*阶段)
librosa.output.write_wav(“./new audio.wav”,new_y,sr)

我提到的python文件可在本网站末尾访问:

您始终可以使用librosa库,它是python中用于音频处理的一个很好的库。它有助于从伴奏乐器中分离人声(和其他零星的前景信号)

它获取切片并绘制相同的切片,但将其分为前景和背景

要保存提取的前景,可以使用:

导入librosa.output
新建y=librosa.istft(S_前台*阶段)
librosa.output.write_wav(“./new audio.wav”,new_y,sr)

你说的“提取”是指“保留”还是“删除”?你的代码是减法的(加上倒数和减法是一样的)。我想保留人声并删除背景音乐,所以你的代码是减去L和R,这保留了背景音乐(删除人声)-所以你应该把两个通道加在一起(也就是说,不要做倒数),然后你就会得到人声。可能是左右声道中的人声比例不同,所以你应该对每个声道的比例进行播放-将b在0和1之间变化(或者更实际地说是0.30.7),然后计算出L*b+R*(1.0-b),看看哪一个在去除音乐/保留人声方面做得最好。或者使用Audacity遵循以下指南:@barny,你所说的“将两个频道加在一起”是什么意思,这难道不会产生相同的音频文件吗?你能解释一下吗?谢谢如何保存生成的S_前景?@MaryamRahmaniMoghaddam我将在答案部分编写保存新音频的代码