(Python) 在Python中对WAV音频文件进行分割与拼接

这篇具有很好参考价值的文章主要介绍了(Python) 在Python中对WAV音频文件进行分割与拼接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在本文中,我们将介绍如何使用Python来处理音频文件,主要集中在wav文件的分割和拼接方面。

1. 分割WAV文件

对于音频处理来说,分割文件是一项基本任务。在Python中,我们可以使用wave模块来读取.wav文件,并使用SciPy中的signal模块来进行分割。

1.1. 读取WAV文件

使用wave.open()函数打开.wav文件,我们可以得到文件的基本信息,如声道数、采样率等。

import wave

wf = wave.open("audio.wav", "rb")

# 获取音频文件基本信息
nchannels = wf.getnchannels()  # 声道数
sampwidth = wf.getsampwidth()  # 采样位宽
framerate = wf.getframerate()  # 采样率
nframes = wf.getnframes()      # 采样点数

1.2. 分割WAV文件

我们可以通过设置起始和结束帧数,来实现wav文件的分割。下面的代码是将一个10s的音频文件按照2s的长度分割为5个文件。

import wave
import numpy as np
from scipy import signal

wf = wave.open("audio.wav", "rb")
nchannels = wf.getnchannels()
sampwidth = wf.getsampwidth()
framerate = wf.getframerate()
nframes = wf.getnframes()

duration = nframes / framerate
print("音频文件时长:%.2fs" % duration)

# 设置分割的长度为2s
length = 2 * framerate
start = 0

for i in range(5):
    # 截取片段
    wf.setpos(start)
    data = wf.readframes(length)

    # 保存为新文件
    new_wf = wave.open("segment_%d.wav" % i, "wb")
    new_wf.setnchannels(nchannels)
    new_wf.setsampwidth(sampwidth)
    new_wf.setframerate(framerate)
    new_wf.writeframes(data)
    new_wf.close()
    
    # 更新起始位置
    start += length

2. 拼接WAV文件

除了分割文件,我们还需要拼接文件的功能。在Python中,我们同样可以使用wave模块来进行wav文件的读取,并使用numpy中的concatenate函数来进行拼接。

2.1. 读取多个WAV文件

使用wave.open()函数打开多个.wav文件,我们可以将它们读入内存中,然后使用numpy中的concatenate函数来进行拼接。下面的代码将5个2s的音频文件拼接为一个10s的文件。

import wave
import numpy as np

# 读取多个.wav文件
wfiles = []
for i in range(5):
    wfiles.append(wave.open("segment_%d.wav" % i, "rb"))

# 获取音频文件基本信息
nchannels = wfiles[0].getnchannels()
sampwidth = wfiles[0].getsampwidth()
framerate = wfiles[0].getframerate()

# 拼接为一个文件
data = np.array([])
for wf in wfiles:
    frames = wf.readframes(wf.getnframes())
    frames = np.frombuffer(frames, dtype=np.int16)
    data = np.append(data, frames)

# 保存为新文件
wf = wave.open("output.wav", "wb")
wf.setnchannels(nchannels)
wf.setsampwidth(sampwidth)
wf.setframerate(framerate)
wf.writeframes(data.tobytes())
wf.close()

总结:

通过wave模块和SciPy中的signal模块,我们可以轻松地对.wav文件进行分割和拼接。这将为音频处理和音频数据分析提供一定的便利。文章来源地址https://www.toymoban.com/news/detail-831850.html

到了这里,关于(Python) 在Python中对WAV音频文件进行分割与拼接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音频数据分割单独处理后再拼接出现跳跃间断点的处理方法

      +hezkz17进数字音频系统研究开发交流答疑 1如图所示   问题1: 对于一个81920字节的音频文件,如果是分割成小块4096输入(无重叠,均分),在频域上做去噪算法,每4k数据返回到时域上再拼接成80k的处理结果文件,发现处理结果有异常有跳跃间断点,像是频谱泄露?分割也需要

    2024年02月16日
    浏览(35)
  • Python中对基本文件操作

    保存数据放在磁盘中 f=open(‘文件’,‘w’)或者f=open(‘文件’,‘r’) 3.1 写数据(write) 如果文件不存在那么创建,如果存在那么就先清空,然后写入数据 对象=open(“文件”,w) 对象.write(“写入数据”) 对象.close 3.2读数据(read) 以读的方式打开文件,读取数据 对象 = open(“文

    2024年02月12日
    浏览(44)
  • Unity加载并播放本地.wav音频文件

    使用UnityWebRequestMultimedia加载.wav文件,并转成AudioClip对象,然后使用AudioSource进行播放。播放使用协程函数。 加载你的电脑桌面上的test.wav文件并播放。 如需要加载其它格式音频,请将UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(“file:///” + fileName, AudioType.WAV);中的AudioType换

    2024年02月04日
    浏览(45)
  • android音频学习笔记之wav头文件

    如何存储和解析wav文件 定义:wav格式,就是微软开发的一种文件格式规范,文件分为两部分 (1)第一部分:文件头,记录重要的参数信息,对于音频而言,包括:采样率,通道数,位宽等等 (2)第二部分:数据块,也就是一帧一帧的二进制数据,对于音频而言,就是原始

    2023年04月08日
    浏览(35)
  • python中对文件路径的获取

    1、获取当前文件的绝对路径 输出:E:pythonprojecttestpath_test.py 2、获取当前文件的所在目录 输出:E:pythonprojecttest 3、获取当前文件所在目录的上一级目录 输出:E:pythonproject 4、获取指定文件的路径(例如想获得project文件夹下的test.txt文件路径) 输出: E:pythonprojecttest

    2024年02月03日
    浏览(38)
  • python加上ffmpeg实现音频分割

    前言: 这是一个系列的文章,主要是使用python加上ffmpeg来对音视频文件进行处理,包括音频播放、音频格式转换、音频文件分割、视频播放等。 系列文章链接: 链接1: python使用ffmpeg来制作音频格式转换工具(优化版) 链接2:<Python>PyQt5+ffmpeg,简单视频播放器的编写(解

    2024年02月04日
    浏览(37)
  • 如何进行字符串的分割和拼接?

    字符串的分割和拼接是在C语言编程中常见的操作,尤其在处理文本数据时非常重要。在本文中,我将详细解释如何在C语言中进行字符串的分割和拼接,包括使用标准库函数和手动操作字符串数组的方法,以及一些实际应用示例。 字符串分割是将一个字符串拆分成多个子字符

    2024年02月09日
    浏览(34)
  • C# 将音频PCM数据封装成wav文件

    之前实现了《C++ 将音频PCM数据封装成wav文件》,最近将其改成了C#版本。使用C#实现录音功能时还是需要写wav文件的,直接用C#实现也是比较简单的,这样可以免去不必要的依赖。 首先需要构造wav头部,wav文件音频信息全部保存在头部,我们要做的就是在PCM数据的前面加入w

    2024年02月07日
    浏览(39)
  • 音频文件PCM、WAV、MP3的区别以及文件合并

    采样率即采样频率,指的一秒内的采样次数,它反映了采样点之间的间隔大小。常说的 44.1KHz 采样率,也即 1 秒采集了 44100 个样本。间隔越小,丢失的信息越少,数字声音就越逼真细腻,要求的存储量也就越大。由于计算机的工作速度和存储容量有限,而且人耳的听觉上限为

    2024年02月15日
    浏览(47)
  • 【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍wav音频格式🍭 😎金句分享😎:🍭子曰:父母在,不远游,游必有方。 ——《论语·里仁篇》。意思是,父母还健在时,就不要

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包