代码之家  ›  专栏  ›  技术社区  ›  Boolean

从音轨中去除人声的算法[关闭]

  •  13
  • Boolean  · 技术社区  · 16 年前

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

    你对如何进行有什么建议吗。

    我只想要能读懂mp3文件格式的代码。有软件吗??

    4 回复  |  直到 16 年前
        1
  •  17
  •   Arnold Spence    16 年前

    这与其说是一个“算法”,不如说是一个“技巧”,但它可以在代码中实现自动化。它主要适用于以人声为中心的立体声音轨。如果人声居中,则在两个音轨中表现相同。如果将其中一个音轨反转,然后将它们合并在一起,则中心人声的波形会抵消,实际上会被删除。你可以用像audacity这样的最好的音频编辑器手动完成。它不会给你完美的效果,其余的音频也有点受挫,但它使伟大的卡拉OK曲目:)

        2
  •  10
  •   Tim Cooper    15 年前

    资料来源: http://www.cdf.utoronto.ca/~csc209h/summer/a2/a2.html ,作者:丹尼尔·津加罗。

    产生了一种声音,一种声波 包括压缩(增加 在压力)和稀薄 如果你把一块石头扔进 重复波。

    测量空气压力 值称为示例,可以 空气中的增加或减少 我们正在取样 声音。每个样本记录声音 在瞬间;我们越快 样品,我们的样品越准 例如,CD音质使用 第二;为某人的声音取样 在VOIP会话中使用far 比这个还少。采样率 44100(光盘质量)是常见的。。。

    对于单声道(只有一个声音的 表示压缩量 拿。对于立体声(我们使用 在本作业中),一个样本 实际上由两个整数组成 值:左扬声器和右扬声器各一个 右边一个。。。

    下面是算法(去除人声)的工作原理。

    • 文件。这44个字节包含重要的 不应显示的标题信息 被改进的。

    • 接下来,将输入文件的其余部分视为一个简短的序列。采取 和计算组合=(左-右) / 2. 写两份合并后的 输出文件。

    为什么这样做?

    人声消除算法的核心是 算法,我们只是简单的减法 从一个通道到另一个通道(然后 声音太大)。那为什么呢 从左声道减去左声道 右声道神奇地去除人声?

    当音乐被录制时,它是 有时人声是 两个频道的人声。其他的 这首歌中的乐器被录制下来 两个频道的声音都不一样。 从一个通道减去另一个通道 这两个通道之间的公共“” 如果幸运的话,这意味着

    试试你的去嗓剂 badly-behaved wav file 人声消失了,但身体也消失了 仪器也有记录 “居中”,以便将其移除 伴随着歌声 被减去。

        3
  •  5
  •   Community Mohan Dere    9 年前

    您可以使用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")
    
        4
  •  1
  •   Jim Johnson    16 年前