web-dev-qa-db-ja.com

Pythonでサウンドを再生する

Pythonでサウンドファイル(.wav)を再生する最も簡単な方法は何ですか?最も簡単なのは、ほとんどのプラットフォームに依存せず、必要な依存関係が最も少ないことを意味します。 pygameは確かにオプションですが、音だけではやり過ぎのようです。

98
Claudiu

The Snack Sound Toolkit wav、au、mp3ファイルを再生できます。

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

Windowsの場合、winsoundを使用できます。組み込まれています

import winsound

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

Linuxでossaudiodevを使用できるはずです。

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

102
orestis

これはばかげているとはるかにフェッチされたようですが、あなたは常にあなたのためにサウンドを管理するためにWindows(またはあなたが好むどんなOS)を使用することができます!

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

シンプル、拡張機能なし、やや遅くてジャンキーですが、動作します。

28
Fillip

これには間違いなく Pyglet を使用してください。それは一種の大きなパッケージですが、拡張モジュールのない純粋なpythonです。それは間違いなく展開が最も簡単です。また、優れた形式とコーデックのサポートも備えています。

import pyglet

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

pyglet.app.run()
15
Peter Shinners

Play()コマンドで約10秒程度の遅延を追加すると、動作します

import pygame

import time

pygame.init()

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

pygame.mixer.music.play()

time.sleep(10)

これは.mp3ファイルも再生します。

7
ramkumar

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 )
4
Rizwan Kassim

私はpygameが好きで、以下のコマンドが機能するはずです:

pygame.init()
pygame.mixer.Sound('sound.wav').play()

しかし、それは私のコンピューターのどちらにもありません。そして、そこにある主題については限られた助けしかありません。編集:pygameサウンドがなぜ機能しないのか、ほとんどのサウンドが正しくロードされない理由を見つけました。ロードすると、 'length'属性は〜0.0002です。 mygame以外の何かを使用してそれらをロードすると、より一般的には暗くなるでしょう。

pygletでは、リソースが見つからないというエラーが発生します上記の例を使用して、ファイルへの相対パスとフルパスの両方を重み付けします。

pyglet.media.load()の代わりにpyglet.resource.media()を使用すると、ファイルをロードできます。

しかし、他のすべてをブロックするsound.play()を実行しない限り、pyglet.app.run()はファイルの1秒の最初の部分のみを再生します...

2
suki

wxPythonは、WindowsおよびUnixでwavファイルを再生するためのサポートがあります-これにMacが含まれているかどうかはわかりません。ただし、私が知る限り、wavファイルのみをサポートしています。mp3やoggなどの他の一般的な形式はサポートしていません。

2
Dave Kirby

Pythonでサウンドを再生するsoxの簡単なpythonラッパーをリリースしました。 Python 2.6以降、sox(ほとんどのアーキテクチャで簡単にバイナリを入手できます)およびラッパー( https://github.com/standarddeviant/sound4python が必要なため、インストールは非常に簡単です。 =)。 soxがない場合は、ここにアクセスしてください: http://sourceforge.net/projects/sox/files/sox/

次の方法でオーディオを再生します。

from sound4python import sound
import random
a = []
for idx in xrange(1*16000):
    a.append(random.randint(-16384,16384))
sound(a)

オーディオの再生に実際に関与する部分はこれらのみです。

from sound4python import sound
...
sound(a)    
2
Dave C

Linuxユーザーの場合、低レベルのpcmデータ操作が必要な場合は、 alsaaudio モジュールを試してください。パッケージ内にもplaywav.pyの例があります。

1
GBY