Python 音频添加静音段(多个)

多个合并为一个

# -*- coding:utf-8 -*-
import os
import sox
import sys
def soxWav(jPath, path):
    infiles = []
    lists = []
    jingyin = './' + jPath
    filePath = './' + path + '/'
    if os.path.isfile(jingyin):
        flag = True
    else:
        return '静音段不存在'
    fileArr = os.listdir(filePath)
    if os.path.exists(filePath):
        flag = True
    else:
        return '音频目录不存在'
    cbn = sox.Combiner()
    for key in sorted(fileArr):
        infiles.append(filePath+key)
        infiles.append(jingyin)
    for key in infiles:
        lists.append(key)
    cbn.build(lists,'./' + path + 'new' + '.wav', 'concatenate')

if  __name__ == '__main__':
    jPath = raw_input('请输入静音段:   ')
    path = raw_input('请输入音频位置:   ')
    soxWav(jPath, path)

每个分别添加


```python
# -*- coding:utf-8 -*-
import os
import sox

def addQuiet(filePath, quite_name, type, new_file):
    if not os.path.exists(filePath):
        return '音频文件不存在'
    listwav = os.listdir(filePath)
    for file in listwav:
        tail_file = file[-3:]
        if tail_file == 'wav':
            synthesis(type, file, filePath, quite_name, new_file)


def synthesis(type, file, filePath, quite_name, new_file):
    file_path = filePath + '/' + file
    file_name = './' + new_file + '/' +file
    data = []
    if type == '1':
        data = [quite_name,file_path]
    elif type=='2':
        data = [file_path,quite_name]
    elif type=='3':
        data = [quite_name,file_path,quite_name]
    cbn = sox.Combiner()
    cbn.build(data, file_name, 'concatenate')


if __name__ == '__main__':
    filename = input('请输入文件名')
    quiteName = input('请输静音段名称 ')
    type = input('请输入要合成的类型1:前,2:后,3:前后 ')
    filePath = './' + str(filename)
    quite_name = '/home/mute/quiet/' + quiteName
    #new = filename.index(.)
    new_file = filename + 'new'
    if not os.path.exists(new_file):
        os.mkdir(new_file)
    addQuiet(filePath, quite_name, type, new_file)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要批量清理多个WAV文件中的静音,可以使用Python中的文件操作和循环语句。以下是一种基于Python的实现VAD技术,批量清理多个WAV文件中的静音的方法: 1. 导入所需的库:例如pydub, webrtcvad等。 2. 使用os库列出所有待处理的WAV文件。 3. 使用pydub库加载每个WAV文件。 4. 将每个WAV文件转换为PCM数据。 5. 使用webrtcvad库检测PCM数据中的活动和静默部分。 6. 根据检测结果,将静默部分从PCM数据中删除。 7. 将处理后的PCM数据保存为WAV文件。 以下是一个简单的Python代码示例,可以实现VAD技术批量清理多个WAV文件中的静音: ``` import os from pydub import AudioSegment import webrtcvad # 定义参数 frame_duration_ms = 30 frame_size = int(frame_duration_ms * 16 / 1000) vad = webrtcvad.Vad() vad.set_mode(3) # 列出所有待处理的WAV文件 wav_files = [f for f in os.listdir() if f.endswith('.wav')] # 循环处理每个WAV文件 for wav_file in wav_files: # 加载音频文件 audio = AudioSegment.from_file(wav_file) # 将音频转换为PCM数据 pcm_data = audio.raw_data # 检测静默部分 active = [] start = 0 audio_length = len(pcm_data) sample_rate = audio.frame_rate while start < audio_length: end = min(start + frame_size, audio_length) frame = pcm_data[start:end] if vad.is_speech(frame, sample_rate): active.extend(range(start, end)) start = end # 提取静默部分 segments = [] for k, g in groupby(enumerate(active), lambda i_x:i_x[0]-i_x[1]): segment = list(map(itemgetter(1), g)) start = segment[0] * 2 end = segment[-1] * 2 segments.append((start, end)) # 删除静默部分 for segment in segments: audio = audio[:segment[0]] + audio[segment[1]:] # 保存处理后的音频文件 audio.export("processed_" + wav_file, format="wav") ``` 这代码使用了os库列出所有待处理的WAV文件,并使用循环语句依次处理每个WAV文件。请注意,要根据实际情况调整VAD检测器的参数以达到最佳效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值