WAV音频归一化工具---支持文件夹递归

import os
import copy
import numpy as np
from scipy.io import wavfile
import matplotlib.pyplot as plt

#https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.wavfile.read.html
#库安装方法,进入命令行: 1、pip install scipy    2、 pip install matplotlib

#若无法下载,请修改源


def normalizVol(source, destination):   #参数为音频输入和输出目录
    samplerate, dataIn = wavfile.read(source)

    #plt.figure()
    #plt.subplot(2,1,1)
    #plt.plot(dataIn)

    dataTemp = copy.deepcopy(dataIn)
    dataTemp = dataTemp - np.mean(dataTemp)     # 消除直流分量
    dataOut = 0.6 * dataTemp / np.max(np.abs(dataTemp)) # 幅值归一化
    
    dataOut = dataOut.astype(np.float32) #wav不能使用double数据直接写入,否则会有兼容性问题

    wavfile.write(destination, samplerate, dataOut)

    #plt.subplot(2,1,2)
    #plt.plot(dataOut)
    #plt.show()
    
def walkFiles(path,endpoint=None): #遍历所有文件夹下的文件
    fileList = []
    for root,dirs,files in os.walk(path):
        for file in files:
            filePath = os.path.join(root,file)
            if filePath.endswith(endpoint):
                fileList.append(filePath)

    return fileList

wavPath = "C:\\xx"
wavList = walkFiles(wavPath, endpoint=".wav")
print(len(wavList))

for wav in wavList:
    normalizVol(wav, wav)
    
print("Done.")

注:1、只实现了基本功能;2、使用前需备份音频文件,此代码会直接覆盖路径下的音频文件;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值