Pythonでサウンドファイル(.wav)を再生する最も簡単な方法は何ですか?最も簡単なのは、ほとんどのプラットフォームに依存せず、必要な依存関係が最も少ないことを意味します。 pygameは確かにオプションですが、音だけではやり過ぎのようです。
The Snack Sound Toolkit wav、au、mp3ファイルを再生できます。
s = Sound()
s.read('sound.wav')
s.play()
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 )
これはばかげているとはるかにフェッチされたようですが、あなたは常にあなたのためにサウンドを管理するためにWindows(またはあなたが好むどんなOS)を使用することができます!
import os
os.system("start C:/thepathyouwant/file")
シンプル、拡張機能なし、やや遅くてジャンキーですが、動作します。
これには間違いなく Pyglet を使用してください。それは一種の大きなパッケージですが、拡張モジュールのない純粋なpythonです。それは間違いなく展開が最も簡単です。また、優れた形式とコーデックのサポートも備えています。
import pyglet
music = pyglet.resource.media('music.mp3')
music.play()
pyglet.app.run()
Play()コマンドで約10秒程度の遅延を追加すると、動作します
import pygame
import time
pygame.init()
pygame.mixer.music.load("test.wav")
pygame.mixer.music.play()
time.sleep(10)
これは.mp3ファイルも再生します。
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 )
私は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秒の最初の部分のみを再生します...
wxPythonは、WindowsおよびUnixでwavファイルを再生するためのサポートがあります-これにMacが含まれているかどうかはわかりません。ただし、私が知る限り、wavファイルのみをサポートしています。mp3やoggなどの他の一般的な形式はサポートしていません。
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)
Linuxユーザーの場合、低レベルのpcmデータ操作が必要な場合は、 alsaaudio モジュールを試してください。パッケージ内にもplaywav.pyの例があります。