📜  在Python中播放声音

📅  最后修改于: 2022-05-13 01:55:18.536000             🧑  作者: Mango

在Python中播放声音

在本文中,我们将看到如何使用一些最流行的音频库在Python中播放声音。我们将了解播放声音的各种方法。

方法一:使用playsound模块

运行以下命令来安装软件包:

pip install playsound
  • playsound模块只包含一个名为playsound()的函数。
  • 它需要一个参数:包含我们必须播放的声音的文件的路径。它可以是本地文件URL
  • 有一个可选的第二个参数block ,默认情况下设置为True 。我们可以将它设置为False以使函数异步运行。
  • 它适用于WAVMP3文件。

示例:对于 WAV 格式

Python3
# import required module
from playsound import playsound
  
# for playing note.wav file
playsound('/path/note.wav')
print('playing sound using  playsound')


Python3
# import required module
from playsound import playsound
  
# for playing note.mp3 file
playsound('/path/note.mp3')
print('playing sound using  playsound')


Python3
# import required modules
from pydub import AudioSegment
from pydub.playback import play
  
# for playing wav file
song = AudioSegment.from_wav("note.wav")
print('playing sound using  pydub')
play(song)


Python3
# import required module
from pydub import AudioSegment
from pydub.playback import play
  
# for playing mp3 file
song = AudioSegment.from_mp3("note.mp3")
print('playing sound using  pydub')
play(song)


Python3
# import required modules
from Tkinter import *
import tkSnack
  
# initialize tk object to use tksnack
root = Tk()
tkSnack.initializeSnack(root)
  
# play sound
snd = tkSnack.Sound()
snd.read('note.wav')
print('playing sound using tkSnack')
snd.play(blocking=1)


Python3
# import required module
import os
  
# play sound
file = "note.wav"
print('playing sound using native player')
os.system("afplay " + file)


Python3
# import required module
import os
  
# play sound
file = "note.mp3"
print('playing sound using native player')
os.system("mpg123 " + file)


Python3
# import required module
import simpleaudio as sa
  
# define an object to play
wave_object = sa.WaveObject.from_wave_file('note.wav)
print('playing sound using simpleaudio')
  
# define an object to control the play
play_object = wave_object.play()
play_object.wait_done()


输出:

示例:对于 mp3 格式

蟒蛇3

# import required module
from playsound import playsound
  
# for playing note.mp3 file
playsound('/path/note.mp3')
print('playing sound using  playsound')

输出:

方法二:使用pydub模块

运行以下命令来安装软件包:

sudo apt-get install ffmpeg libavcodec-extra
pip install pydub

注意:您可以使用Python打开 WAV 文件。要打开 mp3,您需要 ffmpeg 或 libav

该模块使用from_wav()方法播放 wav 文件和from_mp3()方法播放 mp3 文件。 play()方法用于播放 wav 和 mp3 文件:

示例 1:对于 WAV 格式

蟒蛇3

# import required modules
from pydub import AudioSegment
from pydub.playback import play
  
# for playing wav file
song = AudioSegment.from_wav("note.wav")
print('playing sound using  pydub')
play(song)

输出:

示例 2:对于 mp3 格式

蟒蛇3

# import required module
from pydub import AudioSegment
from pydub.playback import play
  
# for playing mp3 file
song = AudioSegment.from_mp3("note.mp3")
print('playing sound using  pydub')
play(song)

输出:

方法 3:使用tksnack模块

tksnack模块依赖于名为tkinter的模块来激活Python脚本中的tk对象。您必须为Python安装tkinkertksnack包。运行以下命令来安装软件包:

sudo apt-get install python3-tk
sudo apt-get install python3-tksnack

play()方法用于播放音频文件。阻塞参数声明声音将异步播放。

例子:

蟒蛇3

# import required modules
from Tkinter import *
import tkSnack
  
# initialize tk object to use tksnack
root = Tk()
tkSnack.initializeSnack(root)
  
# play sound
snd = tkSnack.Sound()
snd.read('note.wav')
print('playing sound using tkSnack')
snd.play(blocking=1)

输出:

方法四:使用原生播放器

在这种方法中,我们在系统上本地播放声音。此方法使用安装在终端上的外部播放器播放音频文件。

示例 1:对于 Mac OS X

蟒蛇3

# import required module
import os
  
# play sound
file = "note.wav"
print('playing sound using native player')
os.system("afplay " + file)

输出:

示例 2:对于 Linux

蟒蛇3

# import required module
import os
  
# play sound
file = "note.mp3"
print('playing sound using native player')
os.system("mpg123 " + file)

输出

方法五:使用simpleaudio模块

这主要是为了播放WAV文件和NumPy 数组。运行以下命令来安装软件包:

$ sudo apt-get install libasound2-dev
$ pip3 install simpleaudio

play()方法用于播放音频文件。

例子:

蟒蛇3

# import required module
import simpleaudio as sa
  
# define an object to play
wave_object = sa.WaveObject.from_wave_file('note.wav)
print('playing sound using simpleaudio')
  
# define an object to control the play
play_object = wave_object.play()
play_object.wait_done()

输出: