【问题标题】:how to remove silence periods from wav file in python?如何从python中的wav文件中删除静音期?
【发布时间】:2020-07-23 02:59:10
【问题描述】:

我在 wav 文件(客户服务)中有一个对话,我将其拆分为 2 个音频通道。现在我有 2 个 wav 文件,每个人都在说话,并且有静音期。我需要剪掉那些静默期,以在较短的文件中“压缩”所有人的话。

我在谷歌上搜索并找到了这个link。 它有这个代码:

def addFrameWithTransition(self, image_file, audio_file, transition_file):
    media_info = MediaInfo.parse(transition_file)
    duration_in_ms = media_info.tracks[0].duration
    audio_file = audio_file.replace("\\", "/")
    try:
        audio_clip = AudioSegment.from_wav(r"%s"%audio_file)
        f = sf.SoundFile(r"%s"%audio_file)
    except Exception as e:
        print(e)
        audio_clip = AudioSegment.from_wav("%s/pause.wav" % settings.assetPath)
        f = sf.SoundFile("%s/pause.wav" % settings.assetPath)
    duration = (len(f) / f.samplerate)
    audio_clip_with_pause = audio_clip
    self.imageframes.append(image_file)
    self.audiofiles.append(audio_clip_with_pause)
    self.durations.append(duration)
    self.transitions.append((transition_file, len(self.imageframes) - 1, duration_in_ms / 1000)) 

但它需要某种“图像文件”。还有其他选择吗?

【问题讨论】:

  • 你如何定义沉默?是不是在某个阈值以下没有任何声音或没有声音?
  • @LukaszTracewski 没有声音
  • github.com/pradbajaj/bothoven/blob/master/sound.py。这是为了检测静音并获取声音所在的部分并找到频率节点

标签: python audio silent pydub


【解决方案1】:

我发现了一个小的 vad.py 文件,它将对话分成两部分,并实际压缩每个音轨。 最后你会得到 2 个 wav 文件,只有 1 个人说话。

https://github.com/mauriciovander/silence-removal/blob/master/vad.py

像这样工作:

python vad name_of_new_file.wav

【讨论】:

  • 您共享的代码不是语音活动检测器 (VAD),尽管名称如此。这是一个粗略的“活动”检测器,会被任何超过阈值的噪音触发,而不仅仅是声音。
猜你喜欢
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多