失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python playsound安装_ python音频库:Windows下pydub安装配置 过程出现的问题及常用API ...

python playsound安装_ python音频库:Windows下pydub安装配置 过程出现的问题及常用API ...

时间:2021-05-20 20:26:50

相关推荐

python playsound安装_ python音频库:Windows下pydub安装配置 过程出现的问题及常用API ...

< python音频库:Windows下pydub安装配置、过程出现的问题及常用API >

背景

刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现。其中倒放与播放部分使用了pydub这个音频库,十分快捷方便,但是它完整一套的配置让我还是踩了几个坑。特将其配置过程记录于此,方便大家。

Windows10系统

安装Pydub

Anaconda:打开Anaconda prompt,activate切换至工作环境下,键入pip install pydub

Pycharm:setting下project,将pydub安装进pip环境

安装FFmpeg(或选择libav)

下载FFmpeg

< FFmpeg官网 > :找到对应的系统版本下载。

将压缩包解压到任意目录。

将安装安装目录下的bin文件夹添加到系统的Path环境变量中。

如果添加环境变量成功后,打开cmd,键入ffmpeg -version,就可以看到版本信息。

下载FFmpeg包

除了按完成以上下载之外,还需要在python中导入FFmpeg包

同上Pydub包导入 - pip install FFmpeg

安装Pyaudio

可以仅使用纯Pydub打开或保存WAV文件。为了打开或保存非WAV文件——比如MP3——你需要ffmepg或是libav。而如果需要播放音频,则需要安装以下包:

simpleaudio

pyaudio

ffplay (通常随ffmpeg安装)

avplay ((通常随libav安装)

官网是强烈推荐安装simpleaudio,而我选择的是pyaudio,因为之后程序的其他部分还需要用到,所以就直接选择了pyaudio。

包安装同上Pydub - pip install pyaudio

至此安装配置工作完成,可试验以下代码看是否能运行。

from pydub import AudioSegment

from pydub.playback import play

sound = AudioSegment.from_file("0.mp3", "mp3")

play(sound)

问题:[Errno 13] Permission denied

安装了pydub和ffmpeg,但是缺少播放音频的包,安装后不再显示。

问题 [WinError 2] 系统找不到指定的文件

安装了ffmpeg其中的一项,还缺少另外一项,安装后不再显示。

常用API

打开一个XXX类型文件:

mp4_version = AudioSegment.from_file("never_gonna_give_you_up.mp3", "mp3")

wma_version = AudioSegment.from_file("never_gonna_give_you_up.wav", "wav")

aac_version = AudioSegment.from_file("never_gonna_give_you_up.mp4", "mp4")

对音频段切片

# pydub做任何操作的时间尺度都是毫秒

ten_seconds = 10 * 1000

first_10_seconds = song[:ten_seconds]

last_5_seconds = song[-5000:]

连接音频段

without_the_middle = beginning + end

让开头更响和让结束更弱

# 声音增益6dB

beginning = first_10_seconds + 6

# 声音减弱3dB

end = last_5_seconds - 3

重复

# 将片段重复两遍

do_it_over = with_style * 2

倒放

# 读取想要倒放的音频文件

ted = AudioSegment.from_file("ted.mp3")

# 将音频倒放赋给变量 backwards

backwards = ted.reverse()

保存结果 / 音频格式转换

awesome.export("mashup.mp3", format="mp3")

批量处理音频

from pydub import AudioSegment

# i 从 0 到 9 取值

for i in range(10):

# 按顺序读取 00i.m4a 文件

temp = AudioSegment.from_file(f"00{i}.m4a")

# 将 00i.m4a 转换为 答案00i.mp3

temp.export(f"答案00{i}.mp3")

# 将音频倒放

backplay = temp.reverse()

# 将倒放音频存为 音谜00i.mp3

backplay.export(f"音谜00{i}.mp3")

# 打印个 done 提示完成

print("done")

举个例子:

from glob import glob

from pydub import AudioSegment

playlist_songs = [AudioSegment.from_mp3(mp3_file) for mp3_file in glob("*.mp3")]

first_song = playlist_songs.pop(0)

# 让我们只包含第一首歌的前30秒 (切片以毫秒为单位)

beginning_of_song = first_song[:30*1000]

playlist = beginning_of_song

for song in playlist_songs:

# 我们不想让结尾听起来像是突然停止,所以我们给它加上10秒的淡化

playlist = playlist.append(song, crossfade=(10 * 1000))

# 让我们给最后一首歌的结尾加上淡出

playlist = playlist.fade_out(30)

# 唔……我还想知道它有多长( len(audio_segment)返回值同样是以毫秒计的 )

playlist_length = len(playlist) / (1000*60)

# 现在保存下来!

out_f = open("%s_minute_playlist.mp3" % playlist_length, 'wb')

playlist.export(out_f, format='mp3')

文章来源: ,作者:黄龙士,版权归原作者所有,如需转载,请联系作者。

原文链接:/ymjun/p/12150811.html

如果觉得《python playsound安装_ python音频库:Windows下pydub安装配置 过程出现的问题及常用API ...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。