当前位置:  开发笔记 > 编程语言 > 正文

用Python播放声音

如何解决《用Python播放声音》经验,为你挑选了6个好方法。

在Python中播放声音文件(.wav)的最简单方法是什么?最简单的我指的是大多数平台独立且需要最少的依赖关系.pygame当然是一个选择,但它似乎只是声音矫枉过正.



1> orestis..:

对于Windows,您可以使用winsound.它是内置的

import winsound

winsound.PlaySound('sound.wav', winsound.SND_FILENAME)

你应该可以使用ossaudiodev for linux:

from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
  from ossaudiodev import AFMT_S16_NE
except ImportError:
  from sys import byteorder
  if byteorder == "little":
    AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
  else:
    AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()

(ossaudiodev的信用:Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html)


OSS并不老.只是因为与政治和自我有关的原因而不是软件开发,Linux人员选择用ALSA取而代之.无论如何,OSS仍然是唯一的跨平台UNIX声音系统,并且可能在可预见的未来仍然存在.
我从这个答案开始,添加了一个也适用于OS X的变体,并将其作为纯python,跨平台,单个功能模块上传到pypi,称为[playsound](https://pypi.python.org/pypi /playsound/1.0.0).`pip install playsound`.请享用!
避免oss,它已经老了.我不认为我已经安装了它.

2> csexton..:

Snack Sound Toolkit可以播放wav,au和mp3文件.

s = Sound() 
s.read('sound.wav') 
s.play()


小吃似乎已经死了(2005年的最新更新 - 十年前).
它也不适用于Pypi :-(

3> 小智..:

这看起来很荒谬,但你可以随时使用Windows(或任何你喜欢的操作系统)为你管理声音!

import os
os.system("start C:/thepathyouwant/file")

简单,没有扩展,有点慢和垃圾,但工作.


跨平台:`import sys``来自子进程导入调用``if sys.platform =='linux2':``call(["xdg-open","sound.mp3"])``elif sys.platform == 'darwin':``call(["afplay","sound.mp3"])`在所有这些故障声音库中浪费时间是多么昂贵tbh.用'xdg-open`代替`mpg123`将在Linux上提供`afplay`功能
这不是python的一个特性,它是对OS中进程的调用.它不是跨平台的,而且非常昂贵
这真的很糟糕,因为(在Windows下)我可以在音频编辑器中打开音频文件的默认操作.声音永远不会播放,出于某种奇怪的原因,我的音频编辑器会一直打开......
尼斯.打开很多可能知道python有这个功能

4> Peter Shinne..:

绝对使用Pyglet.这是一个大包,但它是纯python没有扩展模块.这肯定是最容易部署的.它还具有出色的格式和编解码器支持.

import pyglet

music = pyglet.resource.media('music.mp3')
music.play()

pyglet.app.run()


这很好 - 只要你不介意pyglet接管python进程.

5> 小智..:

在play()命令添加延迟10秒左右之后,它就会起作用

import pygame

import time

pygame.init()

pygame.mixer.music.load("test.wav")

pygame.mixer.music.play()

time.sleep(10)

这也会播放.mp3文件.



6> Rizwan Kassi..:

pyMedia的声音示例就是这样做的。这应该是您所需要的。

import time, wave, pymedia.audio.sound as sound
f= wave.open( 'YOUR FILE NAME', 'rb' )
sampleRate= f.getframerate()
channels= f.getnchannels()
format= sound.AFMT_S16_LE
snd= sound.Output( sampleRate, channels, format )
s= f.readframes( 300000 )
snd.play( s )

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有