【问题标题】:Algorithm to remove vocal from sound track [closed]从音轨中删除人声的算法[关闭]
【发布时间】:2011-04-10 00:55:22
【问题描述】:

我想从 mp3 音轨中删除人声。我搜索了谷歌,并尝试了一些软件,但没有一个是令人信服的。我打算读取 mp3 文件,获取波形并删除超出指定限制的波形。

您对如何进行有任何建议。

-- 更新

我只想要可以读取 mp3 文件格式的代码。有什么软件吗??

【问题讨论】:

  • 这会很酷...您已经尝试过哪些软件?
  • 大胆、wavosaur 和额外的男孩亲
  • librosa 进行人声分离。

标签: algorithm audio mp3 signal-processing voice


【解决方案1】:

超出指定限制?听起来像一个高通滤波器……如果你有无伴奏合唱音轨和原音轨,你可以使用相位抵消。否则,除非它是一首 60 年代的旧音轨,人声直接在中间并且其他所有内容都很难平移,否则我认为没有一种超级干净的去除人声的方法。

【讨论】:

【解决方案2】:

这与其说是一种“算法”,不如说是一种“技巧”,但它可以在代码中实现自动化。它主要适用于人声居中的立体声轨道。如果人声居中,则它们在两条轨道中均等地表现出来。如果您反转其中一个音轨,然后将它们重新合并在一起,则中心人声的波形会抵消并实际上被移除。您可以使用大多数优秀的音频编辑器(如 Audacity)手动执行此操作。它不会给你完美的结果,其余的音频也会受到一些影响,但它可以制作出很棒的卡拉 OK 曲目:)

【讨论】:

  • 这叫相位抵消,主要缺点是产生的音轨是单声道的。
  • >"其余的音频也受到了一点影响" — 这种幸运的情况很少见。最可能的情况是几乎没有声音,而且听起来也很不对劲。但是,如果一个人有超过立体声源(5.1 等),通常可以做一些更好的事情。但也没有那么简单
【解决方案3】:

来源:http://www.cdf.utoronto.ca/~csc209h/summer/a2/a2.html,作者 Daniel Zingaro。

声音是气压波。什么时候 产生声音,声波 包括压缩(增加 在压力中)和稀有度 (压力降低)通过 空气。这类似于什么 如果你把一块石头扔进一个 池塘:水的上升和下降 重复波。

当麦克风录制声音时,它 测量气压 并将其作为值返回。这些 值称为样本,可以是 正或负对应 空气增加或减少 压力。每次气压 被记录下来,我们正在采样 声音。每个样本都记录声音 在一瞬间;我们越快 样品,越准确是我们的 声音的表示。这 采样率是指多少次 每秒我们对声音进行采样。为了 例如,CD 品质的声音使用 每 44100 个样本的采样率 第二;采样某人的声音 在 VOIP 对话中使用 使用 far 少于这个。采样率 11025(语音质量)、22050 和 44100(CD质量)很常见...

对于单声道声音(只有一个声音 通道),样本只是一个 正整数或负整数 表示压缩量 在空气中样品所在的点 采取。对于立体声(我们使用 在这个作业中),一个样本是 实际上由两个整数组成 值:一个用于左扬声器和 一个正确的...

以下是[去除人声]算法的工作原理。

  • 将前 44 个字节从输入文件逐字复制到输出 文件。这 44 个字节包含重要的 不应该的标头信息 修改。

  • 接下来,将输入文件的其余部分视为短序列。拿 左右各一条短裤, 并计算组合 =(左 - 右) /2.写两份合并到 输出文件。

为什么会这样?

对于好奇的,一个简短的解释 人声去除算法的 命令。正如你从 算法,我们只是简单地减去 一个频道来自另一个频道(然后 除以 2 以保持音量 声音太大)。那为什么 减去左声道 右声道神奇地去除人声?

录制音乐时,它是 有时人声是 由单个麦克风录制,以及 该单声道用于 两个声道的人声。另一个 歌曲中的乐器被录制 通过多个麦克风,使他们 两个声道的声音不同。 从另一个通道中减去一个通道 带走所有“在 这两个通道之间的共同点 如果幸运的话,这意味着移除 人声。

当然,事情很少能如此顺利。 试试你的声音去除器 badly-behaved wav file。当然, 人声不见了,但身体也不见了 音乐!显然,一些 还记录了乐器 “居中”,以便将它们删除 与人声一起当频道 被减去。

【讨论】:

  • 不,我只审核了课程,所以我不必这样做。链接好像失效了……
  • WAV 文件是具有一个或多个 WAVE 部分的 RIFF 文件。以这种方式修改文件可能会破坏具有多个 WAVE 部分的文件,并且还会破坏其他部分,例如 INFO 和 ID3 标签。
  • 我对 WAV 文件进行了尝试。输出 wav 文件似乎已损坏。当我尝试使用 VLC 打开输出 wav 文件时,出现以下错误 wav demux error: cannot peek wav demux error: cannot find 'data' chunk wav demux error: An error occurred during wav demuxing ps demux error: cannot peek mpgv demux error: cannot peek mjpeg demux error: cannot peek ps demux error: cannot peek core input error: no suitable demux module for file/any:///home/srinivas/workspace/Extract%20Vocals/output.wav 有什么建议吗?
  • 链接已失效!...
【解决方案4】:

您可以使用pydub工具箱,详情见here,相关问题见here。它依赖于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")

【讨论】:

  • 如何从原始文件中删除生成的 centerOut。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 2012-04-12
  • 2017-07-07
  • 2021-08-03
相关资源
最近更新 更多