Project Icon

pedalboard

功能强大的Python音频处理和效果器库

Pedalboard是一个功能丰富的Python音频处理库,支持多种音频格式的读写和效果器应用。内置常见音频效果如合唱、混响等,同时支持加载VST3和Audio Unit插件。该库具有优秀的线程安全性、内存管理和处理速度,可与TensorFlow等深度学习框架集成。Pedalboard在Spotify的数据增强和AI功能开发中得到应用,是音频处理领域的高效工具。

Pedalboard标志

许可证: GPL v3 文档 PyPI - Python版本 支持的平台 Apple Silicon支持macOS和Linux(Docker) PyPI - Wheel 测试徽章 覆盖率徽章 PyPI - 下载量 DOI GitHub仓库星标

pedalboard是一个用于处理音频的Python库:读取、写入、渲染、添加效果等。它支持大多数流行的音频文件格式和许多常见的音频效果,还允许使用VST3®Audio Unit格式加载第三方软件乐器和效果。

pedalboardSpotify的音频智能实验室开发,旨在使Python和TensorFlow能够使用专业级音频效果。在Spotify内部,pedalboard用于数据增强以改进机器学习模型,并帮助驱动Spotify的AI DJAI语音翻译等功能。pedalboard还有助于内容创作过程,无需使用数字音频工作站就可以为音频添加效果。

文档

特性

  • 内置音频I/O实用工具(pedalboard.io)
    • 在所有平台上无需依赖即可支持读写AIFF、FLAC、MP3、OGG和WAV文件
    • 根据平台提供对AAC、AC3、WMA等格式的额外读取支持
    • 支持内存使用为O(1)的音频文件和流的实时重采样
    • 通过AudioStream实现实时音频效果
  • 内置支持多种基本音频转换,包括:
    • 吉他风格效果: Chorus, Distortion, Phaser, Clipping
    • 响度和动态范围效果: Compressor, Gain, Limiter
    • 均衡器和滤波器: HighpassFilter, LadderFilter, LowpassFilter
    • 空间效果: Convolution, Delay, Reverb
    • 音高效果: PitchShift
    • 有损压缩: GSMFullRateCompressor, MP3Compressor
    • 质量降低: Resample, Bitcrush
  • 在macOS、Windows和Linux上支持VST3®乐器和效果插件(pedalboard.load_plugin)
  • 在macOS上支持Audio Units乐器和效果
  • 强大的线程安全性、内存使用和速度保证
    • 释放Python的全局解释器锁(GIL)以允许使用多个CPU核心
      • 无需使用multiprocessing!
    • 即使只使用一个线程:
      • 对于单一转换,处理音频的速度比pySoX300倍,比SoxBindings快2-5倍(通过iCorv)
      • 在许多情况下,读取音频文件的速度比librosa.load4倍
  • 经过测试与TensorFlow兼容 - 可用于tf.data管道!

安装

pedalboard可通过PyPI获得(通过平台Wheels):

pip install pedalboard  # 就这么简单!不需要其他依赖项。

如果您是Python新手,请遵循INSTALLATION.md获取详细指南。

兼容性

pedalboard经过彻底测试,支持Python 3.6、3.7、3.8、3.9、3.10、3.11和3.12,以及对PyPy 3.7、3.8和3.9的实验性支持。

  • Linux
    • 在Spotify的生产用例中经过大量测试
    • 在GitHub上自动测试VST
    • x86_64(Intel/AMD)和aarch64(ARM/Apple Silicon)构建manylinuxmusllinux平台wheels
    • 大多数Linux VST需要相对现代的Linux安装(glibc > 2.27)
  • macOS
    • 手动测试VST和Audio Units
    • 在GitHub上自动测试VST
    • Intel和Apple Silicon都有可用的平台wheels
    • 兼容广泛的VST和Audio Units
  • Windows
    • 在GitHub上自动测试VST
    • amd64(x86-64, Intel/AMD)提供平台wheels

示例

注意: 如果您更喜欢观看视频而不是阅读示例或文档,请在YouTube上观看在Python中处理音频(feat. Pedalboard)

快速入门

from pedalboard import Pedalboard, Chorus, Reverb
from pedalboard.io import AudioFile

# 创建一个Pedalboard对象,包含多个音频插件:
board = Pedalboard([Chorus(), Reverb(room_size=0.25)])

# 像打开普通文件一样打开音频文件进行读取:
with AudioFile('some-file.wav') as f:
  
  # 打开一个音频文件进行写入:
  with AudioFile('output.wav', 'w', f.samplerate, f.num_channels) as o:
  
    # 每次读取一秒的音频,直到文件结束:
    while f.tell() < f.frames:
      chunk = f.read(f.samplerate)
      
      # 将音频通过我们的pedalboard处理:
      effected = board(chunk, f.samplerate, reset=False)
      
      # 将输出写入我们的输出文件:
      o.write(effected)

注意: 有关如何通过Pedalboard插件处理音频的更多信息,包括reset参数的工作原理, 请参阅 pedalboard.Plugin.process的文档

制作吉他风格的效果器板

# 不要使用import *!(这只是为了使这个例子更小)
from pedalboard import *
from pedalboard.io import AudioFile

# 读取整个文件,重采样到我们想要的采样率:
samplerate = 44100.0
with AudioFile('guitar-input.wav').resampled_to(samplerate) as f:
  audio = f.read(f.frames)

# 制作一个听起来相当有趣的吉他效果器板:
board = Pedalboard([
    Compressor(threshold_db=-50, ratio=25),
    Gain(gain_db=30),
    Chorus(),
    LadderFilter(mode=LadderFilter.Mode.HPF12, cutoff_hz=900),
    Phaser(),
    Convolution("./guitar_amp.wav", 1.0),
    Reverb(room_size=0.25),
])

# Pedalboard对象的行为类似列表,所以你可以添加插件:
board.append(Compressor(threshold_db=-25, ratio=10))
board.append(Gain(gain_db=10))
board.append(Limiter())

# ...或者轻松更改参数:
board[0].threshold_db = -40

# 将音频通过这个效果器板运行!
effected = board(audio, samplerate)

# 将音频写回为wav文件:
with AudioFile('processed-output.wav', 'w', samplerate, effected.shape[0]) as f:
  f.write(effected)

使用VST3®或Audio Unit乐器和效果插件

from pedalboard import Pedalboard, Reverb, load_plugin
from pedalboard.io import AudioFile
from mido import Message # 不是Pedalboard的一部分,但很方便!

# 从磁盘上的已知路径加载VST3或Audio Unit插件:
instrument = load_plugin("./VSTs/Magical8BitPlug2.vst3")
effect = load_plugin("./VSTs/RoughRider3.vst3")

print(effect.parameters.keys())
# dict_keys([
#   'sc_hpf_hz', 'input_lvl_db', 'sensitivity_db',
#   'ratio', 'attack_ms', 'release_ms', 'makeup_db',
#   'mix', 'output_lvl_db', 'sc_active',
#   'full_bandwidth', 'bypass', 'program',
# ])

# 将"ratio"参数设置为15
effect.ratio = 15

# 通过向乐器传递MIDI来渲染一些音频:
sample_rate = 44100
audio = instrument(
  [Message("note_on", note=60), Message("note_off", note=60, time=5)],
  duration=5, # 秒
  sample_rate=sample_rate,
)

# 将效果应用于此音频:
effected = effect(audio, sample_rate)

# ...或将效果放入与其他插件的链中:
board = Pedalboard([effect, Reverb()])
# ...并使用相同的VST实例运行该效果器板!
effected = board(audio, sample_rate)

创建并行效果链

这个示例通过在同一音频上并行运行多个Pedalboards来创建延迟音高转换效果。Pedalboard对象本身就是Plugin对象,所以你可以根据需要嵌套它们:

from pedalboard import Pedalboard, Compressor, Delay, Distortion, Gain, PitchShift, Reverb, Mix

passthrough = Gain(gain_db=0)

delay_and_pitch_shift = Pedalboard([
  Delay(delay_seconds=0.25, mix=1.0),
  PitchShift(semitones=7),
  Gain(gain_db=-3),
])

delay_longer_and_more_pitch_shift = Pedalboard([
  Delay(delay_seconds=0.5, mix=1.0),
  PitchShift(semitones=12),
  Gain(gain_db=-6),
])

board = Pedalboard([
  # 在链的前端放置一个压缩器:
  Compressor(),
  # 使用Mix插件同时运行所有这些踏板:
  Mix([
    passthrough,
    delay_and_pitch_shift,
    delay_longer_and_more_pitch_shift,
  ]),
  # 在最终混音上添加混响:
  Reverb()
])

在实时音频上运行Pedalboard

在macOS或Windows上,Pedalboard支持通过 AudioStream对象 流式传输实时音频,允许通过在Python中添加效果来实时操作音频。

from pedalboard import Pedalboard, Chorus, Compressor, Delay, Gain, Reverb, Phaser
from pedalboard.io import AudioStream

# 打开一个音频流:
with AudioStream(
  input_device_name="Apogee Jam+",  # 吉他接口
  output_device_name="MacBook Pro Speakers"
) as stream:
  # 音频现在正通过这个踏板流经你的扬声器!
  stream.plugins = Pedalboard([
      Compressor(threshold_db=-50, ratio=25),
      Gain(gain_db=30),
      Chorus(),
      Phaser(),
      Convolution("./guitar_amp.wav", 1.0),
      Reverb(room_size=0.25),
  ])
  input("按回车键停止流式传输...")

# 实时AudioStream现已关闭,音频已停止。

tf.data管道中使用Pedalboard

import tensorflow as tf 

sr = 48000 

# 在这里放入你喜欢的任何插件:
plugins = pedalboard.Pedalboard([pedalboard.Gain(), pedalboard.Reverb()]) 

# 创建一个包含随机噪声的数据集:
# 注意:对于实际训练,这里是你想要以某种方式加载音频的地方:
ds = tf.data.Dataset.from_tensor_slices([np.random.rand(sr)])

# 将我们的Pedalboard实例应用到tf.data管道:
ds = ds.map(lambda audio: tf.numpy_function(plugins.process, [audio, sr], tf.float32)) 

# 在这个音频上创建并训练一个(虚拟)ML模型:
model = tf.keras.models.Sequential([tf.keras.layers.InputLayer(input_shape=(sr,)), tf.keras.layers.Dense(1)])
model.compile(loss="mse") 
model.fit(ds.map(lambda effected: (effected, 1)).batch(1), epochs=10)

更多示例,请参见:

贡献

欢迎对pedalboard做出贡献!详情请见CONTRIBUTING.md

引用

要在学术著作中引用pedalboard,请使用其在Zenodo上的条目DOI 7817838

通过BibTeX引用:

@software{sobot_peter_2023_7817838,
  author       = {Sobot, Peter},
  title        = {Pedalboard},
  month        = jul,
  year         = 2021,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.7817838},
  url          = {https://doi.org/10.5281/zenodo.7817838}
}

许可证

pedalboard版权所有2021-2024 Spotify AB。

pedalboard根据GNU通用公共许可证v3授权。pedalboard包含一些静态编译的库,它们带有以下许可证:

VST是Steinberg Media Technologies GmbH的注册商标。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号