用python播放声音文件(mp3、wav、m4a等)

用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/】

三、使用中遇到大坑:文件无法解除占用!

这个模块有非常大的问题,如果想要重新播放、删除或移动就会提示拒绝访问。而且做这个模块的大佬们貌似弃坑了。

我在源码的基础上增加了stop功能解决了占用问题,但是只更改了windows系统这部分的源码。mac和linux不想改了,太累了!有需要朋友可以下载下来参考我的方法修改,功能其实很简单。

代码地址如下:
https://download.csdn.net/download/dorlolo/11155532

转载于:此处

posted @ 2022-08-01 18:22  thicker  阅读(7139)  评论(0编辑  收藏  举报