Thanks to visit codestin.com
Credit goes to github.com

Skip to content

该项目提供了 [Bungee](https://github.com/bungee-audio-stretch/bungee) C++ 库的 Python 绑定,允许您在 Python 中轻松实现高质量的实时音频时间拉伸和变调。

License

Notifications You must be signed in to change notification settings

longredzhong/bungee-python

Repository files navigation

Bungee Python Bindings

当前版本 Version: 0.2.0

🆕 0.2.0 更新日志 / Changelog:

  • 修复了上一版本的初始延迟导致的结果偏移的问题。
  • Fixed the initial latency/offset issue in previous versions.
  • 建议所有用户升级到 0.2.0 版本。

PyPI version License: MPL 2.0

该项目提供了 Bungee C++ 库的 Python 绑定,允许您在 Python 中轻松实现高质量的实时音频时间拉伸和变调。

This project provides Python bindings for the Bungee C++ library, enabling high-quality real-time audio time-stretching and pitch-shifting in Python.


特性 Features

  • 高质量的音频时间拉伸和变调
    High-quality audio time-stretching and pitch-shifting
  • 支持实时处理,低延迟
    Real-time processing with low latency
  • 允许连续改变播放速度和音高,支持平滑搓碟和变速播放
    Continuous speed/pitch change, smooth scratching, and variable playback
  • 基于频域相位声码器算法
    Frequency-domain phase vocoder algorithm
  • 使用现代 C++ 编写,代码清晰健壮
    Modern C++ implementation, robust and clean code
  • 采用 MPL-2.0 宽松许可证
    Licensed under MPL-2.0

安装 Installation

您可以通过 pip 从 PyPI 安装 bungee-python:

You can install bungee-python from PyPI via pip:

pip install bungee-python

使用示例 Example

下面是一个简单的示例,演示如何使用 bungee-python 将音频速度减慢一半:

Here is a simple example showing how to slow down audio by half using bungee-python:

import numpy as np
from bungee_python import bungee

sample_rate = 44100
channels = 1
duration_seconds = 5
frequency = 440

t = np.linspace(0., duration_seconds, int(sample_rate * duration_seconds))
input_audio = 0.5 * np.sin(2. * np.pi * frequency * t)
input_audio = input_audio.astype(np.float32)
input_audio = input_audio[:, np.newaxis]  # (frames, channels)

stretcher = bungee.Bungee(sample_rate=sample_rate, channels=channels)
stretcher.set_speed(0.5)  # 慢放 slow down
stretcher.set_pitch(1.0)  # 音高不变 keep pitch

output_audio = stretcher.process(input_audio)
print(f"Output shape: {output_audio.shape}")

从源码构建 Build from Source

  1. 克隆仓库 (包括子模块) / Clone repository (with submodules):

    git clone --recurse-submodules https://github.com/longredzhong/bungee-python.git
    cd bungee-python
  2. 安装构建依赖 / Install build dependencies:

    • C++ 编译器 (支持 C++17) / C++17 compiler
    • CMake (>= 3.15)
    • Ninja (推荐 recommended)
    • Python (>= 3.8) 和开发头文件 / Python dev headers
  3. 运行构建脚本 / Run build script:

    ./scripts/build.sh

    编译后的 Python 扩展模块会位于 build 目录中。
    The built Python extension module will be in the build directory.

  4. 安装或测试 / Install or test:

    可以用 pip install . 在本地安装。
    You can install locally with pip install ..


依赖 Dependencies

  • 运行时 Runtime:
    • Python (>= 3.8)
    • NumPy
  • 构建时 Build:
    • bungee-core (as submodule)
      • Eigen
      • KissFFT
    • pybind11 (as submodule)
    • CMake (>= 3.15)
    • C++17 compiler
    • Ninja (optional)

许可证 License

本项目采用 MPL-2.0 许可证,与 bungee-core 保持一致。
This project is licensed under MPL-2.0, same as bungee-core.


致谢 Acknowledgements


About

该项目提供了 [Bungee](https://github.com/bungee-audio-stretch/bungee) C++ 库的 Python 绑定,允许您在 Python 中轻松实现高质量的实时音频时间拉伸和变调。

Resources

License

Stars

Watchers

Forks

Packages

No packages published