WAV格式音频截取

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

【功能】
通常我们会拿到例如某个歌手的演唱会完整版的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 pd

f_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+s
    return 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 / framerate
    cut_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))

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

【注意事项】
1.sox.exe的安装位置必须与代码中sox-path相同,且为绝对路径;sox_path=“D:\sox\sox-14-4-2\sox.exe”
2.截取参数表设置完成后请保存关闭.
3.对应的文件夹需要事先建立
WAV格式音频截取文章来源地址https://www.toymoban.com/news/detail-401875.html

到了这里,关于WAV格式音频截取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 将音频格式从flac转到wav的两种方法

    最近在智能语音中用到了数据集cn-celeb。这个数据集的音频格式是flac,而在做数据增强(augmentation)以及模型训练时用的数据格式是wav,因此需要把音频格式从flac转到wav。我在ubuntu下摸索了一番,找到了两种方法。   1,基于Linux下的sox命令写shell脚本实现 SoX​​(即 Sound eXch

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

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

    2024年02月06日
    浏览(60)
  • mp3怎样才能转换成wav格式?音频互相转换的方法

    一,什么是WAV WAV,全称为波形音频文件(Waveform Audio File Format),是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来,WAV格式因其无损的音频质量和广泛的兼容性,成为了多媒体应用中不可或缺的一部分。本文将从WAV格式的定义、特点、应用以及与其他音

    2024年04月14日
    浏览(58)
  • Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法

    Python的集成环境我一般使用的是 Winpython , Winpytho 脱胎于pythonxy,面向 科学计算 , 兼顾数据分析与挖掘 ;Anaconda 主要面向数据分析与挖掘方面 ,在大数据处理方面有自己特色的一些包; Winpytho 强调 便携性 ,被做成绿色软件,不写入注册表,安装其实就是解压到某个文件夹

    2024年01月18日
    浏览(41)
  • 如何快速地在网页中展示3D模型,可以支持主流的3d格式文件的预览功能,例如stl,step,solidworks的文件

    最近我们公司有个需求要加一个在线预览3d文件的功能,如果要自己撸一套渲染各种类型的3d模型需要写好多代码哦,还要包括加放大,缩小,拖拽,旋转,平移,测量,剖切,需要写太多代码啦!! 然后我们就找到了分形三维(Fractal 3D)-易用的在线3D CAD可视化引擎!!!!这

    2024年02月13日
    浏览(50)
  • 三、pcm音频转wav

    ffmpeg录制下来的音频为pcm格式(内部存储着十六进制数据),但pcm格式的音频无法直接播放 本文先将pcm转换成wav格式(提要提前了解音频知识) 首先分析wav文件格式(wav的本质是在pcm数据前加上文件头),即在pcm的十六进制数据前加上文件头(文件头也是十六进制数据,但

    2023年04月08日
    浏览(43)
  • 使用NAudio录制wav音频

    NAudio官网 Unity2019.4.34f1c1 Window10 NAudio 1.10 .Net 3.5 StartRecording方法 启用录制 StopRecording方法 停止录制 DataAvailable 录制中回调 RecordingStopped 录制结束回调 Write方法可存储音频 WaveIn.DeviceCount 返回音频捕获设备数量 台式电脑,可能需要插入耳机才可以启用麦克风 检测到麦克风,显示

    2024年02月12日
    浏览(36)
  • 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能

    一、FFmpeg简介。 二、FFmpeg常用参数及命令。 三、FFmpeg在Unity 3D中的使用。 1、FFmpeg 录屏。 2、FFmpeg 推流。 3、FFmpeg 其他功能简述。 对于FFmpeg,其官网上是这样介绍的: FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything th

    2024年02月09日
    浏览(52)
  • 【音频】python读取写入wav文件

    使用librosa库: librosa.load(文件路径,采样率sampling rate) 直接用librosa的函数 librosa.output.write_wav(\\\'output.wav\\\', y, sr) 会报错: \\\"AttributeError: module \\\'librosa\\\' has no attribute \\\'output\\\'\\\" 。 这是因为librosa库在0.8.0版本后把这个函数删掉了,我们可以用soundfile库的soundfile.write()函数达到同样的目的

    2024年02月03日
    浏览(43)
  • python对wav音频可视化

    本文主要是使用代码实现音频文件(wav)的多种可视化。 1.信号 2.傅里叶变换 3.Mel(梅尔)谱图 4.log_Mel谱图 提示:以下是本篇文章正文内容,下面案例可供参考 为了便于展示,我将信号和傅里叶变换使用plt组合在一起进行展示。 结果展示: 为了便于展示,我将信号和傅里

    2023年04月08日
    浏览(82)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包