使用 Python 播放声音
在 Python 中播放声音文件 (.wav) 最简单的方法是什么? 我所说的最简单是指最独立于平台并且需要最少的依赖性。 pygame 当然是一个选择,但对于声音来说似乎有点过分了。
What's the easiest way to play a sound file (.wav) in Python? By easiest I mean both most platform independent and requiring the least dependencies. pygame is certainly an option, but it seems overkill for just sound.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
对于Windows,您可以使用winsound。 它是内置的
你应该能够在 Linux 上使用 ossaudiodev:
(ossaudiodev 的来源:Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html)
For Windows, you can use winsound. It's built in
You should be able to use ossaudiodev for linux:
(Credit for ossaudiodev: Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html)
这看起来很荒谬且牵强,但您始终可以使用 Windows(或您喜欢的任何操作系统)来为您管理声音!
简单,没有扩展,有点慢而且垃圾,但是可以工作。
This seems ridiculous and far fetched but you could always use Windows (or whatever OS you prefer) to manage the sound for you!
Simple, no extensions, somewhat slow and junky, but working.
Snack Sound Toolkit 可以播放 wav、au 和 mp3 文件。
The Snack Sound Toolkit can play wav, au and mp3 files.
为此,请务必使用 Pyglet 。 这是一个很大的包,但它是纯Python,没有扩展模块。 这绝对是最容易部署的。 它还具有出色的格式和编解码器支持。
Definitely use Pyglet for this. It's kind of a large package, but it is pure python with no extension modules. That will definitely be the easiest for deployment. It's also got great format and codec support.
在 play() 命令添加大约 10 秒左右的延迟后,它将起作用。
这也可以播放 .mp3 文件。
After the play() command add a delay of say 10 secs or so, it'll work
This also plays .mp3 files.
pyMedia 的声音示例就是这样。 这应该就是您所需要的。
pyMedia's sound example does just that. This should be all you need.
我喜欢 pygame,下面的命令应该可以工作:
但它在我的任何一台计算机上都不起作用,并且关于该主题的帮助有限。 编辑:我弄清楚为什么 pygame 声音对我不起作用,它没有正确加载大多数声音,当我加载它们时,“长度”属性是〜0.0002。 也许使用 mygame 以外的其他东西加载它们会让它更普遍地停止。
使用 pyglet 我收到资源未找到错误使用上面的示例,查看文件的相对路径和完整路径。
使用 pyglet.media.load() 而不是 pyglet.resource.media() 可以让我加载文件。
但是 sound.play() 只播放文件的第一部分,除非我运行 pyglet.app.run() ,它会阻止其他所有内容......
I like pygame, and the command below should work:
but it doesn't on either of my computers, and there is limited help on the subject out there. edit: I figured out why the pygame sound isn't working for me, it's not loading most sounds correctly, the 'length' attribute is ~0.0002 when I load them. maybe loading them using something other than mygame will get it morking more generally.
with pyglet I'm getting a resource not found error Using the above example, wigh both relative and full paths to the files.
using
pyglet.media.load()
instead ofpyglet.resource.media()
lets me load the files.but
sound.play()
only plays the first fraction of a second of the file, unless I runpyglet.app.run()
which blocks everything else...wxPython 支持在 Windows 和 Unix 上播放 wav 文件 - 我不确定这是否包括 Mac。 然而,据我所知,它只支持 wav 文件 - 它不支持其他常见格式,例如 mp3 或 ogg。
wxPython has support for playing wav files on Windows and Unix - I am not sure if this includes Macs. However it only support wav files as far as I can tell - it does not support other common formats such as mp3 or ogg.
我刚刚发布了一个简单的 sox 周围的 python 包装器,它将用 Python 播放声音。 安装非常简单,因为您需要 Python 2.6 或更高版本、sox(可以轻松获取适用于大多数架构的二进制文件)和包装器 ( https://github.com/standarddeviant/sound4python)。 如果您没有 sox,请转到此处:http://sourceforge.net/projects/sox /files/sox/
您可以通过以下方式播放音频:
请记住,播放音频实际涉及的唯一部分就是这些:
I just released a simple python wrapper around sox that will play a sound with Python. It's very easy to install as you need Python 2.6 or greater, sox (easy to get binaries for most architectures) and the wrapper ( https://github.com/standarddeviant/sound4python ). If you don't have sox, go here: http://sourceforge.net/projects/sox/files/sox/
You would play audio with it by:
Keep in mind, the only parts actually involved in playing audio are just these:
对于 Linux 用户,如果需要低级 pcm 数据操作,请尝试 alsaaudio 模块。 包内也有一个 playwav.py 示例。
For Linux user, if low level pcm data manipulation is needed, try alsaaudio module. There is a playwav.py example inside the package too.