111

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

4

10 に答える 10

119

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 )

于 2008-11-22T18:43:24.250 に答える
31

Snack Sound Toolkitは、wav、au、およびmp3ファイルを再生できます。

s = Sound() 
s.read('sound.wav') 
s.play()
于 2008-11-21T01:11:05.450 に答える
30

これはばかげているように思えますが、いつでも Windows (または好みの OS) を使用してサウンドを管理できます。

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

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

于 2013-07-31T18:53:10.837 に答える
18

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

import pyglet

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

pyglet.app.run()
于 2008-11-21T22:13:55.777 に答える
8

play() コマンドが 10 秒程度の遅延を追加した後、動作します。

import pygame

import time

pygame.init()

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

pygame.mixer.music.play()

time.sleep(10)

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

于 2011-09-29T05:42:59.457 に答える
6

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 )
于 2008-11-20T23:45:33.937 に答える
3

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

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

しかし、それは私のコンピューターのどちらにもありません。また、この件に関するヘルプは限られています。編集: pygame サウンドが機能しない理由がわかりました。ほとんどのサウンドが正しくロードされていません。ロード時の「長さ」属性は ~0.0002 です。おそらく、mygame 以外のものを使用してそれらをロードすると、より一般的にモーキングされます。

上記の例を使用して、ファイルへの相対パスと完全パスの両方を使用します。

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

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

于 2009-12-05T12:52:49.377 に答える
2

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

于 2009-12-05T14:53:21.387 に答える
2

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)    
于 2013-03-10T14:35:44.150 に答える
1

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

于 2013-04-02T15:46:35.533 に答える