我如何在 python 3 中播放声音?

How do i play a sound in python 3?

我想写一个 python 脚本来播放声音(使用 windows 录音机录制)!

我看了pygame可以做作业并安装了pygame!但是我不知道如何编写代码来播放来自特定路径的声音!我必须播放位于 C:\Users\Asdf\Documents\Audio.wav

的音频文件

我尝试了这里的脚本 http://pythonprogramming.net/adding-sounds-music-pygame/

import pygame
crash_sound = pygame.mixer.Sound("crash.wav")

但随后我收到一条错误消息:

Traceback (most recent call last): File "", line 1, in crash_sound = pygame.mixer.Sound("crash.wav") AttributeError: 'module' object has no attribute 'mixer'

那么我该如何编写脚本来使用 pygame 播放那个 Audio.wav 文件呢?

我使用的是Python3.4 64位版本!

Add python to windows 7 PATH

  1. 按住 Win 并按 Pause
  2. 单击“高级系统设置”。
  3. 单击环境变量。
  4. 在"User variables"中如果没有PATH点击"New",否则selectPATH变量点击"Edit"
  5. ;C:\python34 附加到 Path 变量。
  6. 重新启动命令提示符。

正在安装pygame

您首先要安装 pygame。您可以通过多种方式执行此操作。 但是要从源安装

  1. 下载解压pygame-1.9.1release.zip
  2. 打开一个终端
  3. cd 进入您刚刚提取的 pygame-1.9.1release 文件夹
  4. 运行 python setup.py

或者,如果 python 与 windows 安装中的 .py 文件相关联(这是默认设置),请打开解压缩的文件夹并双击 setup.py

运行宁pygame

你需要运行

pygame.init()

在调用 pygame 模块之前!

希望能帮您解决问题

例子

import pygame
pygame.init()
s = pygame.mixer.Sound("C:\Users\Asdf\Documents\Audio.wav")

# Start playback
s.play()

# Stop playback
s.stop()

在 windows 上播放声音(没有 pygame)

import winsound

fname = "C:\Users\Asdf\Documents\Audio.wav"
winsound.PlaySound(fname, winsound.SND_FILENAME)

这是一个适用于所有平台的简单解决方案,除了单个 Python 文件外没有依赖项。

首先使用 pip 安装 playsound

pip install playsound

然后从模块中导入同名函数并运行它。很简单,不是吗?

from playsound import playsound
# wav works on all platforms. mp3 works on OS X. Other filetype/OS combos may work but have not been tested.
playsound('/path/to/file/you/want/to/play.wav')

免责声明:我写了 playsound。它有一个可选的第二个参数,block = False,这样函数调用就不会阻塞。它会默认阻止。

为了这个目的,我已经有效地使用了 pydub。该模块可以安装为

pip install pydub

pydub 确实需要安装 FFMPEG。 @https://github.com/jiaaro/pydub

给出了pydub和ffmpeg的安装细节

安装上述依赖项后,该库将以相当简单的方式跨不同平台[windows、Linux、Mac]提供对各种音频格式的全面操作。

这是一个例子

from pydub import AudioSegment
from pydub.playback import play

fname = "C:\Users\Asdf\Documents\Audio.wav"
mysong = AudioSegment.from_wav(fname)
play(mysong)