/phase-gradient-vocoder

Challenge of implementation of a paper "Phase Vocoder Done Right"

Primary LanguageRustMIT LicenseMIT

phase-gradient-vocoder

Introduction

Implementation of audio signal time-stretch and pitch-shift with phase gradient vocoder(“Phase Vocoder Done Right”)

Enviroment

  • 5.10.102.1-microsoft-standard-WSL2 x86_64 GNU/Linux
  • rustup 1.25.1 (bb60b1e89 2022-07-12)
  • rustc 1.65.0 (897e37553 2022-11-02)

Support format

  • Waveform Audio File
    • read
      • compression code
        • Linear PCM
        • MS-ADPCM
        • IBM CSVD
    • write
      • channel
        • 1 channel

Commands

  • arguments

    • required
      -m, --mode <MODE>
          weather its time-stretch or pitch-shift [possible values: time-stretch, pitch-shift]
      -r, --ratio <RATIO>
          factor ratio
      
    • optional
      -i, --i <I>
          input wave file path
      -o, --o <O>
          output wave file path
      -b, --buffer <BUFFER>
          frame size that should be power of two
      
  • example

    • time stretch
      cargo run --release -- --mode time-stretch --ratio 0.8
    • pitch shift
      cargo run --release -- --mode pitch-shift --ratio 1.3

Must know

I set goals for reading and implementing easily not for usefulness, efficiency and fastness about current implementation.
So, please avoid long input wave file because of it will occur huge memory allocation.

Links

Licence