最近开始做实验需要绘制音频的语谱图,绘制语谱图的过程中需要FFT过程,FFT需要采样点个数是2的整数倍,所以为了生成语谱图的大小合适,那么总长65536是个比较合适的数,对于采样率32kHz的wav音频,2S时常正好是64000个采样点,(这里都是按一个声道来说的)所以我们不能按照时常来截取音频,可能采样点个数不太准确,但是网上都是使用ffmpeg或者其他方式裁剪音频的,都是以时间为单位,所以这不是太合适,于是我使用查了差资料使用python简单的写了个小程序,用于按固定采样点个数分割wav格式音频。

直接放代码,不多说了

import wave
import numpy as npdef cut(input_path, out_put, cut_length):# 打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。f = wave.open(input_path, "rb")# 读取格式信息# 一次性返回所有的WAV文件的格式信息,它返回的是一个组元(tuple):声道数, 量化位数(byte单位), 采样频率, 采样点数, 压缩类型, 压缩类型的描述。wave模块只支持非压缩的数据,因此可以忽略最后两个信息params = f.getparams()nchannels, sampwidth, framerate, nframes = params[:4]print("你要分割的音频所有参数参数为:")print("通道数:%d,量化位数:%d,采样频率:%d,帧数(采样点数):%d" % (nchannels, sampwidth*8, framerate, nframes))# 读取波形数据# 读取声音数据,传递一个参数指定需要读取的长度(以取样点为单位)str_data = f.readframes(nframes)f.close()# 将波形数据转换成数组# 需要根据声道数和量化单位,将读取的二进制数据转换为一个可以计算的数组wave_data = np.frombuffer(str_data, dtype=np.int16)# print(wave_data.shape)# 将wave_data数组改为2列,行数自动匹配。在修改shape的属性时,需使得数组的总长度不变。wave_data.shape = -1, nchannels# wave_data.shape = 2, -1 # 这种情况要先转置# print(wave_data)# 转置数据wave_data = wave_data.T# print(wave_data)# 切割帧数# cut_length = 10*framerateprint("切割的固定长度为:%d" % cut_length)i = 1for num in range(0, nframes//cut_length*cut_length, cut_length):  # 保证每一段够长,不够长舍掉print(num)# 切片now_wave_data = wave_data[:, num:num+cut_length]  # 切片不包括后端点print(now_wave_data.shape)# 打开WAV文档f = wave.open(out_put+str(i)+".wav", "wb")# 配置声道数、量化位数和取样频率f.setnchannels(nchannels)f.setsampwidth(sampwidth)f.setframerate(framerate)# 将wav_data转换为二进制数据写入文件f.writeframes(now_wave_data.tobytes())f.close()# f = wave.open(out_put, "rb")f = wave.open(out_put+str(i)+".wav", "rb")params = f.getparams()print(params[:4])f.close()i += 1

如何使用呢,这儿放一点调用代码

from audio_cut import *
input_path = ""
output_path = ""
cut(input_path, output_path, 16000)

至于如何批量调用,当然是写个循环就行了,这个大家都会,就不赘述了。

各位有问题可以再在下方留言

原文地址:https://www.shanyemangfu.com/pythonwav.html

python按固定采样点个数分割wav格式音频相关推荐

  1. c语言 输出音频 单片机,单片机播放WAV格式音频的理解

    CSDN账号注册了3年,一直没有上来过,更不用说写博客了.我不知道博客的具体用途,我只想把它当做一种心得来发表,可能是一些技术上的理解或者生活上的小故事.好了,下面我将记录我对WAV播放器的理解. 很 ...

  2. 单片机播放WAV格式音频的理解

    CSDN账号注册了3年,一直没有上来过,更不用说写博客了.我不知道博客的具体用途,我只想把它当做一种心得来发表,可能是一些技术上的理解或者生活上的小故事.好了,下面我将记录我对WAV播放器的理解. 很 ...

  3. 【音视频数据数据处理 10】【PCM篇】将PCM转为WAV格式音频

    [音视频数据数据处理 10][PCM篇]将PCM转为WAV格式音频 一.WAV头信息 1.1 RIFF区块 1.2 FORMAT区块 1.3 DATA区块 二.PCM 转 WAV 代码实现 PCM转为 ...

  4. wav格式音频怎么转换mp3

    对于一些音乐的爱好者们来说音频格式运用的很广发,大家是否发现有这样一个问题,每次自己在电脑上下载的歌曲最后在手机或者其他设备上准备播放的时候都会显示无法播放,你们有找过这是什么原因造成的吗?小编今天告 ...

  5. matlab wav格式音频去除人声

    matlab wav格式音频去除人声(原理自查) 先设立Hbs带阻函数(matlab2018a为例) 选择右上view可以查看函数效果如下 应用函数 代码块 代码块语法遵循标准markdown代码,例 ...

  6. TTS生成wav格式音频添加报头信息

    TTS生成wav格式音频添加报头信息 由于使用百度语音或是科大讯飞语音TTS合成的音频文件,内部没有写入音频的关键信息,如采样率,码率,通道数,位数等信息.在linux下,使用aplay命令无法播放此 ...

  7. android 字节转wav,Android音频开发(4):PCM转WAV格式音频

    前面几篇已经介绍了PCM音频文件的录制,这一篇主要介绍下pcm转wav. 一.wav 和 pcm 一般通过麦克风采集的录音数据都是PCM格式的,即不包含头部信息,播放器无法知道音频采样率.位宽等参数, ...

  8. WAV格式音频转G.711A

    有个项目,要求从微信录音,远程传输到终端设备广播.终端只支持G.711A格式,而从微信获取的音频文件是AMR格式(具体获取见微信开发文档),所以就需要音频转码.以前没有做过音频开发,对各种格式不了解, ...

  9. (原创)speex与wav格式音频文件的互相转换(二)

    之前写过了如何将speex与wav格式的音频互相转换,如果没有看过的请看一下连接 http://www.cnblogs.com/dongweiq/p/4515186.html 虽然自己实现了相关的压缩 ...

最新文章

  1. 11.2 滑动窗口-机器学习笔记-斯坦福吴恩达教授
  2. 使用LoadRunner对Web Services进行调用--Add Service Call
  3. php 删除单个文件大小,php删除指定大小的jpg文件
  4. MySQL字段拼接Concat
  5. Hadoop生态系统学习路线
  6. aps后缀是什么文件_APS审核真的取消了么?
  7. 批量上传文件及进度显示
  8. 安装WPS办公软件后广告特别多怎么办?【wps广告】全网最详细!!!
  9. 运行 Docker 容器时的安全风险:别丢了你的套接字
  10. Vue 电商后台管理项目阶段性总结
  11. java jar包转成exe运行
  12. Congestion问题怎么解决?
  13. Intellij IDEA社区版下载与安装教程
  14. 北美电影票房Top10-2020年1月10日:《1917》扬眉吐气
  15. unity3d如何获知场景中需要加载的数据_游戏中遮挡剔除方案总结
  16. 【BugKu-CTF论坛writeup(杂项)】细心的大象
  17. 图像分割技术与MATLAB仿真剖析
  18. Xilinx vivado DDR3 MIG IP核中系统时钟、参考时钟解释及各个时钟的功能详解
  19. 自定义View之垂直翻页公告
  20. three.js学习笔记(四)——Lights灯光

热门文章

  1. 头部和四肢血量间相互流动速率系数的确定(含python代码)
  2. python在工业机器人上的应用_请简述工业机器人主要应用场合
  3. 【电气专业知识问答】问:厂用高压开关柜必须具备的基本条件是什么?
  4. 教育学考研跨考计算机,用心教育学考研 | 22届教育学考研跨考,做好这三件事跨考无压力...
  5. 平板电脑可以用手写的计算机软件,平板电脑可以当手写板用吗
  6. 玛拉工艺计算机科学博士申请,顾老师助力新鲜出炉马来西亚玛拉工艺大学博士一枚!...
  7. 网页中插入Flash动画的代码
  8. OCX控件开发及WEB Javascript如何使用OCX控件
  9. BAT、360、新浪 小米 网易等大公司开源项目
  10. B06.有意思的小东西 -切分音频mp3,过滤不感兴趣的部分