Skip to main content

Audacity Scripting - Python package for automating Audacity

Project description

audacity-scripting

PyPI

A Python package for automating Audacity tasks based on Audacity's Scripting Reference.

Requirements

  • Install Python 3.9+
  • Install Audacity 3.4.2+
  • Audacity - Enable mod-script-pipe
    • Run Audacity
    • Go into Edit > Preferences > Modules
    • Choose mod-script-pipe (which should show New) and change that to Enabled.
    • Restart Audacity
    • Check that it now does show Enabled.
    • This establishes that Audacity is finding mod-script pipe and that the version is compatible.

Installation

python -m pip install audacity-scripting

Features

  • Remove spaces between clips - Removes spaces in all tracks for a given project absolute path /path/to/my_project.aup3
  • Clean silence
  • Normalize audio
  • Prepare videos for voice-clone-finetuning-vits

Available Commands

Auto-generated by unfor19/replacer-action, see readme.yml

Usage: audacity_scripting [OPTIONS] COMMAND [ARGS]...

  No confirmation prompts

Options:
  -ci, --ci  Use this flag to avoid confirmation prompts
  --help     Show this message and exit.

Commands:
  clean-spaces  Alias: cs
  do-command    Alias: dc - Execute a raw command in Audacity
  testing       This is for testing purposes only

Getting Started

All the commands assume that the Audacity application is up and running; That is mandatory as we communicate with Audacity's pipe to execute all the commands.

NOTE: See the GitHub Actions Tests Workflow to check it in action.

Remove spaces between clips

This command copies the original file and removes spaces (gaps) between audio clips from the copied file.

audacity_scripting clean-spaces --path "/path/to/my_project.aup3"

Send a command to Audacity

Send a command to Audacity according to Audacity's Scripting Reference.

audacity_scripting do-command --command "Select: Track=0 Track=1"

Contributing

This section assumes you've completed the Requirements section.

Development Requirements

  • macOS

    • Install HomeBrew Package Manager
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      
    • Install required packages with HomeBrew
      brew install make
      
  • Windows

    • Install Chocolatey Package Manager

    • Install required packages with Choco

      IMPORTANT: Open a PowerShell window with elevated permissions (As Administrator)

      choco install -y make
      

From now on, we'll use make commands to develop and build this Python package locally.

  1. Fork this repository on GitHub

  2. Git clone your forked repository

  3. Add this repository as a "source" remote

    cd audacity-scripting
    
    git remote add source https://github.com/unfor19/audacity-scripting.git
    

    Check git remotes

    git remote -v
    

    Assuming you are willywonka, here's the desired output:

    origin https://github.com/willywonka/audacity-scripting.git (fetch)
    origin https://github.com/willywonka/audacity-scripting.git (push)
    source https://github.com/unfor19/audacity-scripting.git (fetch)
    source https://github.com/unfor19/audacity-scripting.git (push)
    
  4. Prepare .VENV directory - This step also installs the latest version of setuptools, pip wheel, and a specific version for twine==3.1.1*.

    make venv-prepare
    

    * Using the latest twine version fails in CI/CD, so using 3.1.1 for now

  5. IMPORTANT: The Makefile activates .VENV for any venv- target.

  6. Install this package's development requirements.txt in .VENV

    make venv-install
    
  7. Install this package in edit mode

    IMPORTANT: For any change in ./src/audacity_scripting/cli/, it's best to re-run this command to update the CLI commands; see Click Framework.

    make venv-install-edit
    

You can now start the development process!

Development Process

  1. Checkout to a new branch feature/my-awesome-feature
  2. (Optional) Add a new Python package and update ./requirements.txt accordingly
    make venv-install PACKAGE_NAME=click==8.1.7
    
    make venv-requirements-update
    
  3. Add tests on your feature in ./tests; all tests are based on the Python's unittest framework
  4. Run tests - This wrapper command kills existing Audacity instances, cleans up test outputs, starts Audacity, and then starts the tests.
    make wrapper-run-test
    
  5. Commit changes to your cloned fork
    git commit -am "added an awesome feature"
    
  6. Create a GitHub Pull Request from your fork to the source repository.

Syncing with the "source" code

You've already added source as a git remote, to sync from source to your current branch, execute this command:

git pull source main

Following that, you might need to handle some merge conflicts, but that's it; you're up-to-date with the latest version of the source code.

Known Issues

  • macOS prints Audacity's server logs (Server sending, Read failed on fifo, quitting, etc.) - documented in JOURNEY.md

References

Authors

Created and maintained by Meir Gabay

License

This project is licensed under the MIT License - see the LICENSE file for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audacity_scripting-9.9.9rc99.tar.gz (15.9 kB view hashes)

Uploaded Source

Built Distribution

audacity_scripting-9.9.9rc99-py3-none-any.whl (14.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page