Skip to content

jonaylor89/cyberpunk

Repository files navigation

Cyberpunk

Audio Processing Server

GitHub GitHub Workflow Status

Run on Google Cloud

Quick Start

docker run -p 8080:8080 -e PORT=8080 ghcr.io/jonaylor89/cyberpunk:main

Original audio:

https://raw.githubusercontent.com/jonaylor89/cyberpunk/main/testdata/celtic_pt2.mp3

Try out the following audio URLs:

http://localhost:8080/unsafe/https://raw.githubusercontent.com/jonaylor89/cyberpunk/main/testdata/celtic_pt2.mp3
http://localhost:8080/unsafe/https://raw.githubusercontent.com/jonaylor89/cyberpunk/main/testdata/celtic_pt2.mp3?reverse=true
http://localhost:8080/unsafe/https://raw.githubusercontent.com/jonaylor89/cyberpunk/main/testdata/celtic_pt2.mp3?slice=0:10000
http://localhost:8080/unsafe/https://raw.githubusercontent.com/jonaylor89/cyberpunk/main/testdata/celtic_pt2.mp3?reverse=true&repeat=1&slice=1000:5000

Cyberpunk Endpoint

Cyberpunk endpoint is a series of URL parts which defines the audio operations, followed by the audio URI:

/HASH|unsafe/AUDIO?slice&concat&fade_in&fade_out&repeat&reverse&filters=NAME(ARGS)
  • HASH is the URL Signature hash, or unsafe if unsafe mode is used
  • slice
  • concat
  • fade_in
  • fade_out
  • repeat
  • reverse
  • AUDIO is the audio URI

Cyberpunk provides utilities for previewing and generating Cyberpunk endpoint URI, including the cyberpunk_path function and the /params endpoint:

GET /params

Prepending /params to the existing endpoint returns the endpoint attributes in JSON form, useful for preview:

curl "http://localhost:8000/unsafe/celtic_p2.mp3?reverse=true&repeat=1&slice=1000:5000"

{
  "audio": "celtic_pt2.mp3",
  "hash": "unsafe",
  "reverse": true,
  "repeat": 1,
  "slice": {
      "start": 1000,
      "end": 5000,
  }
}

Features

  • Audio Streaming

  • Change encodings (e.g. mp3 -> wav)

  • Audio slicing

  • Change Volume

  • Concat Audio

  • Repeat Audio

  • Reverse Audio

  • Crossfade

  • Fade in/out

  • Audio Quality

  • Audio Tagging

  • Audio Thumbnails

  • Mastering Music

  • Sound/Vocal Isolation

  • Cool ML Stuff

  • File Caching

Storage Options

  • Local
  • Cloud (e.g. S3)
  • Blockchain (Audius)

Environment

To see a complete list of configurable environment variables, check out .env

Docker Compose Example

Cyberpunk with file system, using mounted volume:

version: "3"
services:
  cyberpunk:
    image: jonaylor/cyberpunk:main
    volumes:
      - ./:/mnt/data
    environment:
      PORT: 8080
      AUDIO_PATH: "local"
      FILE_STORAGE_BASE_DIR: /mnt/data/testdata/ # enable file storage by specifying base dir
    ports:
      - "8080:8080"

Cyberpunk with AWS S3:

version: "3"
services:
  cyberpunk:
    image: jonaylor/cyberpunk:main
    environment:
      PORT: 8080
      CYBERPUNK_SECRET: mysecret # secret key for URL signature
      AWS_ACCESS_KEY_ID: ...
      AWS_SECRET_ACCESS_KEY: ...
      AWS_REGION: ...

      AUDIO_PATH: "s3"

      S3_LOADER_BUCKET: mybucket # enable S3 loader by specifying bucket
      S3_LOADER_BASE_DIR: audio # optional

      S3_STORAGE_BUCKET: mybucket # enable S3 storage by specifying bucket
      S3_STORAGE_BASE_DIR: audio # optional

      S3_RESULT_STORAGE_BUCKET: mybucket # enable S3 result storage by specifying bucket
      S3_RESULT_STORAGE_BASE_DIR: audio/result # optional
    ports:
      - "8080:8080"