如何使用 python 连接两个 wav 文件?
我正在使用 python 编程语言,我想将 wav 文件加入到其他 wav 文件的末尾? 我在论坛上有一个问题,建议如何合并两个 wav 文件,即在某个偏移处添加一个 wav 文件的内容,但我想在彼此的末尾加入两个 wav 文件...
而且我也遇到了一个问题播放我自己的wav文件,使用winsound模块..我能够播放声音,但在播放任何Windows声音之前使用时间。睡眠一定时间,缺点是如果我想播放比时间更长的声音。睡眠(N),N秒也,Windows声音将在N秒播放winsound并停止后重叠..
任何人都可以帮忙吗?请建议如何解决这些问题...
提前致谢
I am using python programming language,I want to join to wav file one at the end of other wav file?
I have a Question in the forum which suggest how to merge two wav file i.e add the contents of one wav file at certain offset,but i want to join two wav file at the end of each other...
And also i had a prob playing the my own wav file,using winsound module..I was able to play the sound but using the time.sleep for certain time before playin any windows sound,disadvantage wit this is if i wanted to play a sound longer thn time.sleep(N),N sec also,the windows sound wil jst overlap after N sec play the winsound nd stop..
Can anyone help??please kindly suggest to how to solve these prob...
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
Python 附带的 wave 模块可以满足您的需要。当文件的详细信息(单声道或立体声、帧速率等)相同时,下面的示例有效:
Python ships with the wave module that will do what you need. The example below works when the details of the files (mono or stereo, frame rates, etc) are the same:
我是 pydub 的维护者,它的设计就是为了让这类事情变得简单。
注意:pydub 是 audioop 的一个轻量级包装。所以在幕后,它基本上做了 Tom10 提到的事情
I'm the maintainer of pydub, which is designed to make this sort of thing easy.
note: pydub is a light wrapper around audioop. So behind the scenes, it's doing essentially what Tom10 mentioned
Python 3 解决方案:
我们可以使用标准库来做到这一点,如 tom10 和 Eggbert 的答案所示。
下面是一个较短的版本:
然后,当从 wav_in 读取帧时,将帧写入 wav_out。
Python 3 solution:
We can do this with the standard library as shown by tom10 and eggbert's answers.
Below is a shorter version:
Then write frames to the wav_out as they are read from the wav_in.
只是以@tom10的答案为基础:
它不是存储所有数据然后一次性写入最后,而是一点一点地写入。它还使用 contextlib.close,因此您不必关闭文件。
Just to build on @tom10's answer:
Instead of storing all the data then writing it at the end in one go, it writes it bit by bit. It also uses contextlib.close so you don't have to close files.
我使用了 pysox 的
wave模块和许多其他模块似乎不支持mu-law wavs。
pysox 要求您安装 SoX
并更新您的 PATH 以包含其安装目录。
I used pysox
The wave module and many others don't seem to support mu-law wavs.
pysox reqs that you install SoX
and update your PATH to include the directory it's installed to.
您可以使用audiolab:
You could use
audiolab
:我会使用 librosa.load 和 librosa.write_wav。
在此处查看文档
I would use
librosa.load
andlibrosa.write_wav
.Check out the doc here
我使用 SOX [1] 库,然后像
[1] 那样调用它 http://sox.sourceforge.net/< /a>
i use the SOX [1] library and then call it like
[1] http://sox.sourceforge.net/