basic-pitch

basic-pitch

高效轻量的自动音乐转录工具

Basic Pitch是一个开源的自动音乐转录(AMT)Python库,由Spotify音频智能实验室开发。这款轻量级音乐识别工具支持多音高和跨乐器转录,性能可与大型AMT系统媲美。它能将音频转换为包含音高弯曲的MIDI文件,适用于各种乐器,尤其擅长单一乐器转录。Basic Pitch提供命令行和程序化接口,支持MIDI、WAV和CSV等多种输出格式,便于集成到各种音乐处理工作流程中。

Basic Pitch音乐转录MIDI生成多音高估计音频智能Github开源项目

基本音高标志

许可证 PyPI - Python 版本 支持的平台

Basic Pitch 是一个用于自动音乐转录(AMT)的 Python 库,它使用由 Spotify 音频智能实验室 开发的轻量级神经网络。它体积小、易于使用,可通过 pip install 安装,也可以通过其姊妹库使用 npm install 安装。

Basic Pitch 虽然简单,但远非"基础"!basic-pitch 高效易用,其多音高支持、跨乐器通用性和音符准确性可与更大型、更耗资源的 AMT 系统相媲美。

只需提供兼容的音频文件,basic-pitch 就能生成包含音高弯曲的 MIDI 文件。Basic pitch 不受乐器限制,支持复音乐器,因此您可以自由享受所有喜爱音乐的转录,无论使用何种乐器。Basic pitch 最适合一次处理一种乐器。

研究论文

该库与 Spotify 在 ICASSP 2022 上的发表同时发布。您可以在论文 A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation 中了解更多关于这项研究的信息。

如果您在学术研究中使用此库,请考虑引用它:

@inproceedings{2022_BittnerBRME_LightweightNoteTranscription_ICASSP, author= {Bittner, Rachel M. and Bosch, Juan Jos\'e and Rubinstein, David and Meseguer-Brocal, Gabriel and Ewert, Sebastian}, title= {A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation}, booktitle= {Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP)}, address= {Singapore}, year= 2022, }

请注意,我们已经在该论文的基础上改进了 Basic Pitch。因此,如果您在学术研究中使用 Basic Pitch 的输出,我们建议您引用所使用的代码版本。

演示

如果由于某种原因您还没有完全被启发,或者您只是对整体氛围之类的事情感到厌倦,那么请查看我们简洁的演示网站 basicpitch.io,在那里您可以使用我们的模型对您提供的任何音乐音频进行实验!

安装

basic-pitch 可通过 PyPI 获得。要安装当前版本:

pip install basic-pitch

要将 Basic Pitch 更新到最新版本,请在上述命令中添加 --upgrade

兼容环境:

  • MacOS、Windows 和 Ubuntu 操作系统
  • Python 版本 3.7、3.8、3.9、3.10、3.11
  • 对于 Mac M1 硬件,我们目前仅支持 Python 3.10 版本。否则,我们建议使用虚拟机。

模型运行时

Basic Pitch 提供原始 TensorFlow 模型以及转换为 CoreMLTensorFlowLiteONNX 的 TensorFlow 模型。默认情况下,Basic Pitch 不会将 TensorFlow 作为依赖项安装,除非您使用 Python>=3.11。相反,默认情况下,CoreML 将安装在 MacOS 上,TensorFlowLite 将安装在 Linux 上,ONNX 将安装在 Windows 上。如果您想与默认模型推理运行时一起安装 TensorFlow,可以通过 pip install basic-pitch[tf] 安装 TensorFlow。

使用

模型预测

模型运行时

默认情况下,Basic Pitch 将按以下顺序尝试加载模型:

  1. TensorFlow
  2. CoreML
  3. TensorFlowLite
  4. ONNX

此外,模块变量 ICASSP_2022_MODEL_PATH 将默认为列表中第一个可用的版本。

我们将在下面解释如何覆盖此优先级列表。由于所有其他模型序列化都是从 TensorFlow 转换而来,我们建议尽可能使用 TensorFlow。注意:Basic Pitch 默认不安装 TensorFlow,以节省用户安装和运行 Basic Pitch 的时间。

命令行工具

该库提供命令行工具界面。基本预测命令将生成 <input-audio-path> 处音频的 MIDI 文件转录,并将其保存到 <output-directory>

basic-pitch <output-directory> <input-audio-path>

例如:

basic-pitch /output/directory/path /input/audio/path

要一次处理多个音频文件:

basic-pitch <output-directory> <input-audio-path-1> <input-audio-path-2> <input-audio-path-3>

您可以选择在预测命令中附加以下任何标志,以将预测输出的其他格式保存到 <output-directory>

  • --sonify-midi 额外保存 MIDI 文件的 .wav 音频渲染。
  • --save-model-outputs 额外将原始模型输出保存为 NPZ 文件。
  • --save-note-events 额外将预测的音符事件保存为 CSV 文件。

如果您想使用非默认模型类型(例如,使用 CoreML 而不是 TF),请使用 --model-serialization 参数。CLI 将更改加载的模型为您首选的类型。

要了解更多参数控制,请运行:

basic-pitch --help

编程使用

predict()

basic-pitch 导入到您自己的 Python 代码中,并直接运行 predict 函数,提供 <input-audio-path> 并返回模型的预测结果:

from basic_pitch.inference import predict from basic_pitch import ICASSP_2022_MODEL_PATH model_output, midi_data, note_events = predict(<input-audio-path>)
  • <minimum-frequency><maximum-frequency>float 类型)设置模型返回的允许音符频率的最小和最大值,单位为 Hz。频率超出此范围的音高事件将从预测结果中排除。
  • model_output 是原始模型推理输出
  • midi_data 是从 model_output 转录的 MIDI 数据
  • note_events 是从 model_output 派生的音符事件列表

注意:如前所述,ICASSP_2022_MODEL_PATH 将默认为列表中首先支持的运行时:TensorFlow、CoreML、TensorFlowLite、ONNX。

在循环中使用 predict() 要在循环中进行预测,您需要自己加载模型,并将加载好的模型对象提供给predict()函数用于重复的预测调用,以避免冗余和缓慢的模型加载。

import tensorflow as tf from basic_pitch.inference import predict, Model from basic_pitch import ICASSP_2022_MODEL_PATH basic_pitch_model = Model(ICASSP_2022_MODEL_PATH)) for x in range(): ... model_output, midi_data, note_events = predict( <循环中的输入音频路径>, basic_pitch_model, ) ...

predict_and_save()

如果您希望basic-pitch协调生成和保存我们支持的各种输出文件类型,您可以使用predict_and_save而不是直接使用predict

from basic_pitch.inference import predict_and_save predict_and_save( <输入音频路径列表>, <输出目录>, <保存midi>, <合成midi>, <保存模型输出>, <保存音符>, )

其中:

  • <输入音频路径列表><输出目录>
    • basic-pitch读取和写入的目录路径。
  • <保存midi>
    • 布尔值,控制是否生成并保存MIDI文件到<输出目录>
  • <合成midi>
    • 布尔值,控制是否将MIDI文件渲染为WAV音频并保存到<输出目录>
  • <保存模型输出>
    • 布尔值,控制是否将原始模型输出作为NPZ文件保存到<输出目录>
  • <保存音符>
    • 布尔值,控制是否将预测的音符事件作为CSV文件保存到<输出目录>

模型输入

支持的音频编解码器

basic-pitch接受所有与其版本的librosa兼容的声音文件,包括:

  • .mp3
  • .ogg
  • .wav
  • .flac
  • .m4a

仅支持单声道音频

虽然您可以使用立体声音频作为模型的输入,但在预测时,输入的声道将被下混为单声道,然后进行分析和转录。

文件大小/音频长度

该模型可以处理任何大小或长度的音频,但处理较大/较长的音频文件可能受到机器可用磁盘空间的限制。要处理这些文件,我们建议流式处理音频文件,每次处理一个音频窗口。

采样率

输入音频可以是任何采样率,但在处理之前,所有音频都将被重新采样为22050 Hz。

VST

感谢DamRsn开发了这个可用的basic-pitch VST版本! - https://github.com/DamRsn/NeuralNote

贡献

欢迎对basic-pitch做出贡献!详情请参见CONTRIBUTING.md

版权和许可

basic-pitch版权所有 2022 Spotify AB。

本软件根据Apache License, Version 2.0("Apache许可证")授权。您可以选择任一许可证来管理您对本软件的使用,但前提是您接受Apache许可证的所有条款。

您可以在以下地址获取Apache许可证的副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据Apache许可证或GPL许可证分发的软件是基于"按原样"的基础提供的,不附带任何明示或暗示的担保或条件。请参阅Apache许可证以了解Apache许可证下的特定语言管理权限和限制。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多