python对批量WAV音频进行等长分割的方法实现

 更新时间:2020年09月25日 11:33:05   作者:养只小刺猬吧  
这篇文章主要介绍了python对批量WAV音频进行等长分割的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

对批量WAV音频进行等长分割

对WAV格式的音频以相同长度进行分割。

import os
import wave
import numpy as np
import pylab as plt
import librosa

path = r"D:\cutaudio\test"
files = os.listdir(path)
files = [path + "\\" + f for f in files if f.endswith('.wav')]
CutTime = 4 #单位长度4s

def CutAudios():
  for i in range(len(files)):
    FileName = files[i]
    f = wave.open(r"" + FileName, 'rb')
    params = f.getparams() #读取音频文件信息
    nchannels, sampwidth, framerate, nframes = params[:4] #声道数, 量化位数, 采样频率, 采样点数  
    str_data = f.readframes(nframes)
    f.close()
   
    wave_data = np.frombuffer(str_data, dtype=np.short)
    #根据声道数对音频进行转换
    if nchannels > 1:
        wave_data.shape = -1, 2
        wave_data = wave_data.T
        temp_data = wave_data.T
    else:
        wave_data = wave_data.T
        temp_data = wave_data.T

    CutFrameNum = framerate * CutTime 
    Cutnum =nframes/CutFrameNum #音频片段数
    StepNum = int(CutFrameNum)
    StepTotalNum = 0
  
    for j in range(int(Cutnum)):
      FileName = r"D:\cutaudio\11\\" + files[i][-17:-4] +"-"+ str(j) + ".wav"
      temp_dataTemp = temp_data[StepNum * (j):StepNum * (j + 1)]
      StepTotalNum = (j + 1) * StepNum
      temp_dataTemp.shape = 1, -1
      temp_dataTemp = temp_dataTemp.astype(np.short)# 打开WAV文档
      f = wave.open(FileName, 'wb')
      # 配置声道数、量化位数和取样频率
      f.setnchannels(nchannels)
      f.setsampwidth(sampwidth)
      f.setframerate(framerate)
      f.writeframes(temp_dataTemp.tostring()) # 将wav_data转换为二进制数据写入文件
      f.close()
      
if __name__ == '__main__' :
  CutAudios()

到此这篇关于python对批量WAV音频进行等长分割的方法实现的文章就介绍到这了,更多相关python WAV等长分割内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python提升循环速度的高效方法小姐

    Python提升循环速度的高效方法小姐

    Python编程中,循环是一种常见的操作,但是如果处理大规模数据或者需要频繁执行的循环,往往会导致程序运行速度变慢,下面我们就来看看有什么办法可以提升循环速度吧
    2024-03-03
  • Python利用多进程将大量数据放入有限内存的教程

    Python利用多进程将大量数据放入有限内存的教程

    这篇文章主要介绍了Python利用多进程将大量数据放入有限内存的教程,使用了multiprocessing和pandas来加速内存中的操作,需要的朋友可以参考下
    2015-04-04
  • 使用Python来开发Markdown脚本扩展的实例分享

    使用Python来开发Markdown脚本扩展的实例分享

    这篇文章主要介绍了使用Python来开发Markdown脚本扩展的实例分享,文中的示例是用来简单地转换文档结构,主要为了体现一个思路,需要的朋友可以参考下
    2016-03-03
  • python 3.8.3 安装配置图文教程

    python 3.8.3 安装配置图文教程

    这篇文章主要为大家详细介绍了python 3.8.3 安装配置图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 详解Python的爬虫框架 Scrapy

    详解Python的爬虫框架 Scrapy

    这篇文章主要介绍了Python的爬虫框架 Scrapy的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • python 中pyqt5 树节点点击实现多窗口切换问题

    python 中pyqt5 树节点点击实现多窗口切换问题

    这篇文章主要介绍了python 中pyqt5 树节点点击实现多窗口切换问题,文中给大家介绍了python pyqt5 点击按钮来打开另一个窗口的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python3.6环境下安装freetype库和基本使用方法(推荐)

    python3.6环境下安装freetype库和基本使用方法(推荐)

    这篇文章主要介绍了python3.6环境下如何安装freetype库和基本使用方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 使用 Python 清理收藏夹里已失效的网站

    使用 Python 清理收藏夹里已失效的网站

    这篇文章主要介绍了用 Python 清理收藏夹里已失效的网站,本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Caffe卷积神经网络solver及其配置详解

    Caffe卷积神经网络solver及其配置详解

    这篇文章主要为大家介绍了Caffe卷积神经网络solver及其配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Jupyter notebook 不自动弹出网页的解决方案

    Jupyter notebook 不自动弹出网页的解决方案

    这篇文章主要介绍了Jupyter notebook 不自动弹出网页的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论