Python对wav文件的重采样实例


Posted in Python onFebruary 25, 2020

例如从2channel,4.41k hz 重采样到 1 channel,16k hz

def downsampleWav(src, dst, inrate=44100, outrate=16000, inchannels=2, outchannels=1):
 import os,wave,audioop
 if not os.path.exists(src):
  print ('Source not found!')
  return False
 
 if not os.path.exists(os.path.dirname(dst)):
  os.makedirs(os.path.dirname(dst))
 
 try:
  s_read = wave.open(src, 'r')
  s_write = wave.open(dst, 'w')
 except:
  print ('Failed to open files!')
  return False
 
 n_frames = s_read.getnframes()
 data = s_read.readframes(n_frames)
 
 try:
  converted = audioop.ratecv(data, 2, inchannels, inrate, outrate, None)
  if outchannels == 1:
   converted = audioop.tomono(converted[0], 2, 1, 0)
 except:
  print ('Failed to downsample wav')
  return False
 
 try:
  s_write.setparams((outchannels, 2, outrate, 0, 'NONE', 'Uncompressed'))
  s_write.writeframes(converted)
 except:
  print ('Failed to write wav')
  return False
 
 try:
  s_read.close()
  s_write.close()
 except:
  print ('Failed to close wav files')
  return False
 
 return True
 

若in和out都是单通道:

def downsampleWav(src, dst, inrate=48000, outrate=16000, inchannels=1, outchannels=1):
 import os,wave,audioop
 if not os.path.exists(src):
  print ('Source not found!')
  return False
 
 if not os.path.exists(os.path.dirname(dst)):
  os.makedirs(os.path.dirname(dst))
 
 try:
  s_read = wave.open(src, 'rb')
  params = s_read.getparams()
  nchannels, sampwidth, framerate, nframes = params[:4]
  print(nchannels,sampwidth, framerate,nframes)
  s_write = wave.open(dst, 'wb')
 except:
  print ('Failed to open files!')
  return False
 
 n_frames = s_read.getnframes()
 data = s_read.readframes(n_frames)
 
 try:
  converted = audioop.ratecv(data, 2, inchannels, inrate, outrate, None)
  if outchannels == 1 and inchannels != 1:
   converted = audioop.tomono(converted[0], 2, 1, 0)
 except:
  print ('Failed to downsample wav')
  return False
 
 try:
  s_write.setparams((outchannels, 2, outrate, 0, 'NONE', 'Uncompressed'))
  s_write.writeframes(converted[0])
 except Exception as e:
  print(e)
  print ('Failed to write wav')
  return False
 
 try:
  s_read.close()
  s_write.close()
 except:
  print ('Failed to close wav files')
  return False
 
 return True

方案二

y为下采样的结果,类型np.ndarray

You can use Librosa's load() function,

import librosa
y, s = librosa.load('test.wav', sr=8000) # Downsample 44.1kHz to 8kHz

The extra effort to install Librosa is probably worth the peace of mind.

Pro-tip: when installing Librosa on Anaconda, you need to install ffmpeg as well, so

pip install librosa
conda install -c conda-forge ffmpeg

以上这篇Python对wav文件的重采样实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python与php实现分割文件代码
Mar 06 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
python求质数的3种方法
Sep 28 Python
python支付宝支付示例详解
Aug 22 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 Python
python实现打砖块游戏
Feb 25 #Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 #Python
Django 设置多环境配置文件载入问题
Feb 25 #Python
python中resample函数实现重采样和降采样代码
Feb 25 #Python
python实现的分层随机抽样案例
Feb 25 #Python
Python可变对象与不可变对象原理解析
Feb 25 #Python
Python 使用 environs 库定义环境变量的方法
Feb 25 #Python
You might like
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
js自动下载文件到本地的实现代码
2013/04/28 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
外贸业务员求职自荐信分享
2013/09/21 职场文书
自考生自我鉴定范文
2013/10/01 职场文书
区三好学生主要事迹
2014/01/30 职场文书
岗位职责的构建方法
2014/02/01 职场文书
建材投资建议书
2014/05/16 职场文书
社区两委对照检查材料
2014/08/23 职场文书
争先创优公开承诺书
2014/08/30 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
2014年度思想工作总结
2014/11/27 职场文书
班主任工作实习计划
2015/01/16 职场文书
员工自我工作评价
2015/03/06 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python