用python播放聲音文件(mp3、wav、m4a等)
前段時間在搞一個基於python的語音助手,其中需要用到python播放音頻的功能,要在windows上和樹莓派上運行,但是在網上找了好久,都沒有找到合適的解決方案(pygame 和 PyAudio勉強能用,但是效果不理想)。無奈只能想辦法Google一下,找到了一篇比較基礎的文章,詳細的介紹了怎樣用一些庫來實現播放音頻的功能,簡單實用。爲了方便以後使用,我把文章簡要的翻譯記錄如下:
原文地址:https://pythonbasics.org/python-play-sound/
【文章大意】
用python播放聲音文件很簡單,下面介紹一些可以播放聲音的第三方庫,這些解決方案都是跨平臺的,可以在windows、Mac和Linux上使用。
這些方法主要的不同點在於簡單程度和支持的文件類型上,他們都支持python3環境。在編程的時候,要確保.py文件和聲音文件在一個目錄下,或者在代碼中指定聲音文件的絕對地址。
方法一:playsound module
playsound module是一個可以跨平臺使用的庫,不需要其他依賴的庫,直接利用pip或者IDE的庫管理功能安裝就行。
from playsound import playsound
playsound(‘test.mp3’)
只需要上面兩行代碼就可以聽到聲音啦。可以用來播放mp3和wav文件等。
方法二:pydub
可以通過pip安裝,pydub還能調用底層的PyAudio和ffmpeg庫。
from pydub import AudioSebment
from pydub.playback import play
song = AudioSegment.from_wav(‘test.wav’)
play(song)
方法三:snack sound kit
這個比較強大,可以播放wav、AU、AIFF、MP3、CSL、SD、SMP和NIST/Sphere類型的文件,但是這個庫已經好久沒有更新維護了。
可以通過 apt install python3-tksnack 安裝,老的版本名字爲 python-tksnack。
這個庫需要Tkinker做支撐,也就是說要使用它得先安裝Tkinter。
from Tkinker import *
import tkSnack
root = Tk()
tkSnack.installzeSnack(root)
snd = tkSnack.Sound()
snd.read(‘test.mp3’)
snd.play(blocking = 1)
方法四:本地播放器
可以使用電腦或樹莓派自身的播放器軟件播放音頻文件,在windows上只要指定默認的播放器即可,在Linux等上面可以通過終端安裝播放軟件,比如mpg123.
import os
file = ‘test.mp3’
os.system(‘mpg123’+ file)
【時間倉促,代碼還沒來得及一一測試,感興趣的可以看下原文https://pythonbasics.org/python-play-sound/】