WAV格式音频截取

news/2025/2/12 7:54:35/

【功能】
通常我们会拿到例如某个歌手的演唱会完整版的WAV格式的争端音频,而我们想对该音频进行分割或其中某些部分才是我们实际真正想要的音频段落,为此我们需要设计一个可以按照指定时分秒进行截取的程序。
要求实现的功能如下:
1.根据指定的起止时分秒的设置,截取出对应起止时段的WAV音频;
2.为每段截取出来的音频设置音频名称、专辑名称、歌手名称等信息
3.可以在某个参数表中进行批量设置

【需要的安装包/依赖】
1.WAV
2.pandas
3.sox:安装的位置需要与代码中设置的位置保持一致,本例中将sox.exe放置于sox_path=“D:\sox\sox-14-4-2\sox.exe”

【文件夹】
将不同文件放置不同文件夹中以进行区分
1.f_0=‘./原始音频/’
2.f_k=‘./截取参数/’
3.f_s=‘./运行结果/’
4.f_p=‘./音频缓存/’

【完整代码】

import wave
import os
import time
import pandas as pdf_0='./原始音频/'   #原始音频存放文件夹
f_p='./音频缓存/'    #转化音频存放文件夹
f_k='./截取参数/'
f_s='./运行结果/'    #截断音频存放文件夹
sox_path="D:\sox\sox-14-4-2\sox.exe"
abs_path=os.path.dirname(os.path.abspath(__file__))
cmd='cd /d {}{} && for %i in (*.wav) do {} %i -b 16 -e signed-integer {}{}%i'.format(abs_path,f_0.replace('.',''),sox_path,abs_path,f_p.replace('.',''))  #shell脚本,解决wave初始非pcm格式问题
os.system(cmd)
t_0=time.time()
x_0=os.listdir(f_0)   #获取音频文件名称列表,已含后缀
t_p=[f_p+i for i in x_0]  #生成转化音频文件夹内文件的完整路径列表
df=pd.read_excel(f_k+os.listdir(f_k)[0],sheet_name='参数表',header=0,keep_default_na=False)
name_list=[list(df['Music_Name'])[i] +'-'+list(df['Artist'])[i]+'_'+list(df['Album'])[i] for i in range(len(df))]#转化读取到的时分秒数据
def get_s_time(h,m,s):s_time=h*3600+m*60+sreturn s_time#主函数
def cut_voice(stream,name,t_begin,t_end):wf = wave.open(stream, 'rb')nchannels, sampwidth, framerate, nframes = wf.getparams()[:4]strData = wf.readframes(nframes)  # 读取音频,字符串格式t_s = nframes / frameratecut_data = strData[int(t_begin * len(strData)/t_s):int(t_end * len(strData)/t_s)]wf.close()outfile = f_s + name+'.wav'  # 定义存储路径以及文件名outwave = wave.open(outfile, 'wb')comptype = "NONE"compname = "not compressed"outwave.setparams((nchannels, sampwidth, framerate, nframes==int(len(cut_data)),comptype, compname))outwave.writeframes(cut_data)outwave.close()if __name__ == '__main__':for i in range(len(df)):t_begin=get_s_time(list(df['h_begin'])[i],list(df['m_begin'])[i],list(df['s_begin'])[i])t_end = get_s_time(list(df['h_end'])[i], list(df['m_end'])[i], list(df['s_end'])[i])cut_voice(t_p[0],name_list[i],t_begin,t_end)t_1 = time.time()print('\n全程耗时:%.2fs' % (t_1 - t_0))

【参数表说明】
参数配置表
h/m/s表示时分秒,只需要输入每个音频对应的起止时分秒(拆分输入),即可输出对应的音频片段

【注意事项】
1.sox.exe的安装位置必须与代码中sox-path相同,且为绝对路径;sox_path=“D:\sox\sox-14-4-2\sox.exe”
2.截取参数表设置完成后请保存关闭.
3.对应的文件夹需要事先建立
文件夹名称


http://www.ppmy.cn/news/576578.html

相关文章

WAV格式解析

WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持, 该格式也支持MSADPCM&#xff0c…

WAV文件格式分析(附AVI文件格式分析)

目录 一、WAV格式简介 二、WAV格式结构 1.RIFF chunk 2.Format chunk 3.Data chunk 三、AVI文件格式分析 Q1:音频和视频的数据是如何放置的?交织放置or连续放置? Q2:一个视频帧大约占据多少字节?一个音频数据块…

音频处理-2 WAV格式

后续要将流量中的音频数据转为WAV格式文件,所以本节重点说下WAV格式。 WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十…

[音视频] wav 格式

wav 格式结构 WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。另外,文件中还可能包含一些可选的区块,如:Fact…

wav文件详解

wav文件详解 分类: 视频音频图像处理算法 2013-10-10 13:50 66人阅读 评论(0) 收藏 举报 音频 wav 格式介绍 ffmpeg 目录(?)[] 工具 我们这里使用的工具有ffmpeg, cooledit, ultraedit。 音频文件 我们以这音频文件为介绍例子 文件链接http://pan.baidu.com/s…

读写wav格式文件

读写wav格式文件 本文所有相关代码(包括未来的)均可在该代码库找到 https://gitcode.net/PeaZomboss/learnaudios 本文代码在MinGW-w64 gcc/g和MSVC(vs2022)环境下编译测试通过。 MinGW gcc/g可以在以下链接下载: https://github.com/niX…

wav音频文件格式解析【个人笔记】(自用)

目录 1. WAV格式2. WAV的二进制格式解析 2.1 WAV文件格式2.2 C语言解析wav文件3. WAV文件语音数据的组织结构4. 总结 回到顶部 1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数…

灵动微32位MCU适用于家电应用领域的MCU产品推荐

伴随着移动互联网的发展,智能家居产品和解决方案也已经在互联网、地产、运营商等领域得到广泛推广,在电力负荷高峰期通过电网与智能家居平台和产品互动将为家电和上下游企业带来新的机遇与挑战。智能,节能,便捷将是家电未来的主要…