< python音频库:Windows下pydub安装配置、过程出现的问题及常用API >
< python音频库:Windows下pydub安装配置、过程出现的问题及常用API >
背景
刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现。其中倒放与播放部分使用了pydub这个音频库,十分快捷方便,但是它完整一套的配置让我还是踩了几个坑。特将其配置过程记录于此,方便大家。
Windows10系统附带我做的倒放挑战程序:< BackwardsToChallenge倒放挑战小程序 >
安装Pydub
Anaconda:打开Anaconda prompt,activate切换至工作环境下,键入pip install pydubPycharm: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。而如果需要播放音频,则需要安装以下包:simpleaudiopyaudioffplay(通常随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')
< python音频库:Windows下pydub安装配置、过程出现的问题及常用API >的更多相关文章
- Windows 下如何安装配置Snort视频教程
Windows 下如何安装配置Snort视频教程: 第一步: http://www.tudou.com/programs/view/UUbIQCng360/ 第二部: http://www.tudou ...
- [转载]Apache在windows下的安装配置
Apache在windows下的安装配置 转载自:http://blog.sina.com.cn/s/blog_536f16b00100cfat.html 1 Apache的下载 Apache ...
- Windows下Redis安装配置和使用注意事项
Windows下Redis安装配置和使用注意事项 一:下载 下载地址: https://github.com/microsoftarchive/redis/releases 文件介绍: 本文以3.2. ...
- windows下如何安装配置mysql-5.7-m14-winx64(zip格式的安装)
win7 64位下如何安装配置mysql-5.7.4-m14-winx64 1. mysql-5.7.4-m14-winx64.zip下载 官方网站下载地址:http://dev.mysql.co ...
- Windows下CVSNT安装配置
首先要说明:X64下安装此软件会报 “cvs [login aborted]: WIN-4H9CRJO1TRA\Administrator: Switch to user failed due to ...
- 【原创】Superset在windows下的安装配置
Superset是由Airbnb(知名在线房屋短租公司)开源BI数据分析与可视化平台(曾用名Caravel.Panoramix),该工具主要特点是可自助分析.自定义仪表盘.分析结果可视化(导出).用户 ...
- Clion+Cmake+Qt5+Qwt+msys2+MinGW在Windows下的安装配置使用教程
摘要: CLion, a cross-platform C/C++ IDE. 本文主要介绍基于Clion作为IDE, MinGW作为编译器,CMake作为项目构建工具,开发基于Qt5.qwt的C++图 ...
- windows下caffe安装配置、matlab接口
一.CommonSettings.props caffe下载后解压.源代码文件夹caffe-master,到该文件夹下的windows文件夹下,将CommonSettings.props.exampl ...
- Hadoop在Windows下的安装配置
由于本人近期近期一段时间 都在学习Hadoop,接触了比較多的理论,可是想要深入的去学习Hadoop整个平台,那就必须实战的训练,首先第一步,当然是先搭建好一个Hadoop平台为先.可是比較坑爹的是. ...
随机推荐
- 第三期 行为规划——10.用C++实现变道函数
在之前的测验中,我们设计了一个成本函数,高速公路上到达一个目标选择一条车道. 公式中,Δd是车道间的纵向距离,Δs是车辆到目标之间的距离. 在这个测验中,需要用c++实现代价函数,但是这里有一个变换, ...
- js实现方块的碰撞检测
文章地址:https://www.cnblogs.com/sandraryan/ 个人感觉.方块的碰撞检测比圆形麻烦~~ <!DOCTYPE html> <html lang=&qu ...
- 解决Pycharm中SystemError报错
报错描述- 代码逻辑大致是, 开启线程, 监听kafka生产者push的topic消息.- 问题出现在监听过程中, 线程在接收几条topic之后出现报错, 不再处理数据12报错代码Exception ...
- H3C 帧中继数据链路标识
- landi pos机
2015年3月:联迪商用获得2014-2015中国金融POS机市场年度成功企业奖: 2014年5月:联迪商用入选2013年福州市纳税百强企业: 2013年12月:联迪商用入选2013年度中国电子商务物 ...
- Django OMR QuerySet的特性/存在意义
QuerySet存在的意义主要在惰性机制和缓存两点 ---------->惰性机制: 所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个Quer ...
- 判断当前所使用python的版本和来源
import sys print(sys.prefix) print(sys.executable) 怎样判断当前py文件在什么版本的python环境下运行 import sys print(sys. ...
- java接口和抽象类的比较
相同点: 都位于继承的顶端,用于被其他实现或继承; 都不能实例化; 都包含抽象方法,其子类都必须覆写这些抽象方法; 区别: 抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口 ...
- Python3 dir() 函数
Python dir() 函数 描述 dir() 函数不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方法列表.如果参数包含方法__dir__(),该方法将被调用.如 ...
- win10系统激活 快捷方式
系统不定期就会提示激活,每次激活都是找各种工具折腾,今天捣鼓简单的脚本直接激活~~ 首先查看自己系统的版本,后面才能找到合适的激活码 win+R 启动程序 输入 winver 即可查看系统版本 2.查 ...