Autotone
A vocal pitch correction web application (like Autotune)
Install / Use
/learn @alexcrist/AutotoneREADME
Autotone
A vocal pitch correction web application (like Autotune): https://alexcrist.github.io/autotone/
This project works using CREPE's pitch detection model and Stephan Bernsee's approach to Fourier-transform based pitch shifting:
- CREPE: A Convolutional REpresentation for Pitch Estimation -- pre-trained model (ICASSP 2018)
- Pitch Shifting Using The Fourier Transform by Stephan Bernsee
🤖 How it works
To perform vocal pitch correction, the input audio goes through two stages: pitch detection and pitch shifting.
To detect pitches, one of CREPE's pre-trained models is run using TensorFlowJS. To pitch shift, WebAssembly is used to run a C library that performs Fourier-based pitch shifting according to Stephan Bernsee's blog post above. Additionally, the audio processing algorithms are run in the background on web workers to prevent the browser from becoming unresponsive.
💻 Development
Dependencies
- Node v14.18.2
- NPM v6.14.15
- Emscripten v3.1.29
Developing
- Clone this repo
- Init the
crepesubmodule withgit submodule init - Build the C pitch-shifting library to WebAssembly by entering the
tunerdirectory and runningmake - Install the web dependencies by entering the
reactdirectory and runningnpm install - Start the development server by entering the
reactdirectory and runningnpm start - View the app at
http://localhost:8080
Deploying
Deploy the app to GitHub Pages using scripts/deploy.sh
📚 Technologies used
- TensorFlow.js
- WebAssembly (Emscripten)
- Web audio API
- Web workers
- React
- Webpack
🔭 Future work
- Allow user to set pitch detection over-sampling factor
- This will involve moving audio window/buffer building logic out of BufferNode/Processor and into Autotoner
- Allow user to upload audio (instead of just microphone)
- Implement high quality audio resampler
- Allow stereo (currently just mono)
- Add more types of scales
- Allow user to pitch correct according to a separate target audio or MIDI input
Related Skills
bluebubbles
329.7kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
329.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
329.7kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
81.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
