博客
关于我
使用Python合并多个wav音频
阅读量:144 次
发布时间:2019-02-27

本文共 1009 字,大约阅读时间需要 3 分钟。

文章目录

项目需要将多个相关的wav文件进行合并,尝试不借助工具,使用Python代码来实现。

1. 合并两个文件

import waveinfiles = ["sound_1.wav", "sound_2.wav"]outfile = "sounds.wav"data= []for infile in infiles:    w = wave.open(infile, 'rb')    data.append( [w.getparams(), w.readframes(w.getnframes())] )    w.close()output = wave.open(outfile, 'wb')output.setparams(data[0][0])output.writeframes(data[0][1])output.writeframes(data[1][1])output.close()

2. 合并一个文件夹下多个文件

3. 合并多个文件夹下指定数量的文件

这两种可以去查看 jupyter notebook文件 0817_join_wav

4. wave 模块小结 和拓展

wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声

用法:wave.open(file, mode=None)

mode为

  • rb:生成 wav_read 对象
  • wb:生成 wav_write 对象
    注意不支持同时读写

注:关于 rwrbwb

rw是普通读和写文件(简单理解为人工编写的文件);
rbwb是读写二进制文件(简单理解为可以操作图片等非手工编写的文件)

更多用法可以查看:

拓展:

wave 是Python的标准模块,Python 处理音频数据等常见模块有两个:

  • librosa:擅长音频信号处理,内部用 numpy 存储数据,读写文件依赖 soundfile 模块(不支持mp3)
  • pydub :底层基于 ffmpeg 读写文件,代码简洁,支持切割、格式转换、音量、ID3等常用功能,门槛低。(ffmpeg 是一个极其强大的开源视频处理软件)

使用建议:日常用 pydub 足够应付,更强大的信号处理则需要 librosa,但有一定数学门槛,需要了解信号处理原理,掌握傅立叶变换等基本算法。

具体的使用方法总结这里不再赘述,可以查看:

参考:

转载地址:http://ludd.baihongyu.com/

你可能感兴趣的文章
Netty工作笔记0026---NIO 网络编程应用--群聊系统1---编写服务器1
查看>>
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
查看>>
Netty工作笔记0029---NIO 网络编程应用--群聊系统4--客户端编写2
查看>>
Netty工作笔记0030---NIO与零拷贝原理剖析
查看>>
Netty工作笔记0031---NIO零拷贝应用案例
查看>>
Netty工作笔记0032---零拷贝AIO内容梳理
查看>>
Netty工作笔记0033---Netty概述
查看>>
Netty工作笔记0034---Netty架构设计--线程模型
查看>>
Netty工作笔记0035---Reactor模式图剖析
查看>>
Netty工作笔记0036---单Reactor单线程模式
查看>>
Netty工作笔记0037---主从Reactor多线程
查看>>
Netty工作笔记0038---Netty模型--通俗版
查看>>
Netty工作笔记0039---Netty模型--详细版
查看>>
Netty工作笔记0040---Netty入门--服务端1
查看>>
Netty工作笔记0041---Netty入门--服务端2
查看>>
Netty工作笔记0042---Netty入门--编写客户端
查看>>
Netty工作笔记0043---单Reactor多线程模式
查看>>
Netty工作笔记0044---Netty案例源码分析
查看>>
Netty工作笔记0044---scheduledTaskQueue
查看>>