如何在Python中播放声音?
如何使用Python播放音频?使用 Python 脚本播放声音是一项简单的任务,因为该语言包含许多使用脚本播放或录制声音的模块。通过使用这些模块,你可以播放音频文件,例如 mp3、wav 和其他音频文件类型。你必须先安装声音模块,然后才能在脚本中使用该模块。本教程将展示如何安装不同类型的 Python 模块来播放声音以及python播放声音的方法。
python如何播放声音?使用 playsound 播放声音
该playsound模块是用于播放声音最简单的模块。该模块适用于 Python 2 和 Python 3,并且经过测试只能播放 wav 和 mp3 文件。它只包含一种名为playsound() 的方法,其中一个参数供 Linux 使用以获取音频文件名进行播放。
安装:
运行以下 pip3 命令以在 Python 3 中安装此模块:
$ pip3 install playsound
python播放声音示例:使用 playsound 播放 wav 和 mp3 文件
在以下脚本中,首先将 wav 文件名作为输入,然后使用playsound()方法播放该文件。接下来,将通过相同的方法输入和播放 mp3 文件名。
#!/usr/bin/env python3
# Import playsound module
from playsound import playsound
# Input an existing wav filename
wavFile = input("Enter a wav filename: ")
# Play the wav file
playsound(wavFile)
# Input an existing mp3 filename
mp3File = input("Enter a mp3 filename: ")
# Play the mp3 file
playsound(mp3File)
输出:
如果两个文件都存在,则声音文件将开始播放。
python播放声音的方法:使用 pydub 播放声音
所述pydub模块支持的Python 2和Python 3.该模块具有比Python声音模块其他许多有用的功能。pydub 模块支持不同类型的音频文件。该模块可用于分割任何音频文件的片段或将片段附加到音频文件。你还可以在声音之上添加一个简单的效果。这个模块直接依赖于另外两个模块,称为ffmpeg和libavcodec-extra。在安装pydub模块之前,必须先安装这些模块。
安装:
运行以下命令安装Python的pydub包:
$ sudo apt-get install ffmpeg libavcodec-extra
$ pip3 install pydub
示例 1:播放本地 wav 和 mp3 文件
该模块使用form_file()方法播放 wav 文件和form_mp3()方法播放 mp3 文件。这里使用play()方法播放 wav 和 mp3 文件:
#!/usr/bin/env python3
from pydub import AudioSegment
from pydub.playback import play
# Input an existing wav filename
wavFile = input("Enter a wav filename: ")
# load the file into pydub
sound = AudioSegment.from_file(wavFile)
print("Playing wav file...")
# play the file
play(sound)
# Input an existing mp3 filename
mp3File = input("Enter a mp3 filename: ")
# load the file into pydub
music = AudioSegment.from_mp3(mp3File)
print("Playing mp3 file...")
# play the file
play(music)
输出:
如果 wav 和 mp3 文件名都存在,则将播放声音,并显示以下输出:
示例 2:从 URL 下载和播放 wav 和 mp3 文件
如何使用Python播放音频?以下示例显示了从有效 URL 位置下载文件后如何播放任何 wav 或 mp3 文件。脚本中使用 urllib 模块来下载声音文件。python播放声音示例如下:
#!/usr/bin/env python3
# Import necessary modules
from pydub import AudioSegment
from pydub.playback import play
import urllib
# Set the wav filename
filename = "service-bell.wav"
# Download the wav file from url
print("downloading wav file....")
urllib.request.urlretrieve("http://soundbible.com/grab.php?id=2218&type=wav", filename)
# load the file into pydub
sound = AudioSegment.from_file(filename)
print("Playing wav file...")
# play the file
play(sound)
# Set the mp3 filename
filename = "birds.mp3"
# Download an mp3 file
print("downloading mp3 file....")
urllib.request.urlretrieve("http://soundbible.com/grab.php?id=2207&type=mp3", filename)
# load the file into pydub
birdsound = AudioSegment.from_mp3(filename)
print("Playing mp3 file...")
# Play the result
play(birdsound)
print("Finished.")
输出:
下载完成后会开始播放声音文件,会出现如下输出:
python如何播放声音?使用 tksnack 播放声音
该tksnack模块依赖于另一个模块,Tkinter的命名,激活TK脚本对象。 tksnack命令可以在初始化tk对象后使用。你必须为 Python 3安装tkinker和tksnack包。
安装:
$ sudo apt-get install python3-tk
$ sudo apt-get install python3-tksnack
示例:使用 tksnack 播放 wav 文件
在下面的脚本中,tkSnack模块使用tkinter对象初始化,next play()方法用于播放wav文件。在这里,blocking参数指定声音将异步播放。
#!/usr/bin/env python3
# Import necessasry modules
import tkinter
import tkSnack
import os
# Initialize tk object to use tksnack
root = tkinter.Tk()
tkSnack.initializeSnack(root)
#Define tksnack object
sound = tkSnack.Sound()
# Input an existing wav filename
wavFile = input("Enter a wav filename: ")
if os.path.exists(wavFile):
# Read the file
sound.read(wavFile)
# Play sound
sound.play(blocking=1)
else:
# Print the message if the file path does not exist
print ("Wav file does not exist.")
输出:
如果 wav 文件存在,声音将开始播放,并会出现以下输出:
python如何播放声音?使用 simpleaudio 播放声音
python播放声音的方法:该simpleaudio模块是包的Python 3,可以播放音频声音。该模块主要用于播放 wav 文件和 NumPy 数组。在使用此模块之前,你需要安装该软件包。这个声音包直接依赖于另一个名为libasound2-dev 的包。你需要先安装libasound2-dev包,然后才能安装simpleaudio包。
安装:
$ sudo apt-get install libasound2-dev
$ pip3 install simpleaudio
python播放声音示例:使用 simpleaudio 播放 wav 文件
如何使用Python播放音频?在以下脚本中,任何 wav 文件名都将作为输入。如果文件存在,则脚本将播放声音文件;否则,脚本将显示错误消息。
#!/usr/bin/env python3
# Import simpleaudio sound module
import simpleaudio as sa
# Input an existing wav file name
wavFile = input("Enter a wav filename: ")
# Play the sound if the wav file exists
try:
# Define object to play
w_object = sa.WaveObject.from_wave_file(wavFile)
# Define object to control the play
p_object = w_object.play()
print("Sound is playing...")
p_object.wait_done()
print("Finished.")
# Print error message if the file does not exist
except FileNotFoundError:
print("Wav File does not exists")
输出:
将播放声音文件,播放声音后会出现以下输出:
结论
python如何播放声音?本教程通过多个示例解释了四个 Python 模块播放声音的基本用途。声音播放任务仅在本教程中展示,但你可以使用 Python 脚本录制、编辑和不同的声音相关任务。