Skip to main content

Stem Separation

Unlock the potential of any track—even mono recordings—with AudioShake’s advanced stem separation API. Separate dialogue, music, and effects for film and TV projects, or isolate individual instruments from music tracks. This powerful technology supports a wide range of applications, including sync licensing, localization, immersive mixes, AR/VR, gaming, fitness, user-generated content, karaoke, and more. Whether you're processing entire catalogs or extracting clean audio for localization, AudioShake’s award-winning stem separation is driving the next generation of interactive audio. See more uses of AudioShake’s AI stems here.

1. File Upload

Before creating a job, you must upload a file. The response contains the ID of the uploaded file, which you can use to create a job request to generate a stem.

Further documentation on uploading files can be found here

2. Create Job

Once you have the asset ID, you can create a job request to generate a stem using the /jobs endpoint. The endpoint accepts a JSON request with the file ID and the stem type you want to generate.

In this example, the Authorization header contains a JWT token for Bearer Authentication, which is used to authenticate the request. The Content-Type header specifies that the request payload is in JSON format. The request payload contains the assetId, format, and stemName parameters, which specify the details of the stem to be generated.

curl -X 'POST' \
'https://groovy.audioshake.ai/job/' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"metadata": {
"format": "wav",
"name": "vocals"
},
"callbackUrl": "https://example.com/webhook/vocals",
"assetId": "abc123"
}'
InputDescription
formatFormat of the output file. All format options are available in output format
nameThe model name the job will utilize for separation. For a comprehensive list of all model names, please reference Models.
callbackUrlA webhook URL where multiple updates about the job status will be sent
assetIdThe id of the asset you obtained through uploading the file

Use Cases

You can choose from a variety of stem model names.

Dialogue, Music & Effects, Music Removal Use Cases

Dialogue, Music & Effects Job Specification

You can reference the Dialogue, Music & Effects table for model names for this use case.

Instrument Stem Separation

Instrument Job Specification

You can reference the Instrument Stem Separation table for model names for this use case.

Job Response

Upon successful initiation, the server will reply with an HTTP status code of 200, indicating that everything is OK. The response will include a 'job' object, which contains details about the job that has been started.You can use the provided job ID in two ways:

  1. Wait for a callback from AudioShake, which will be sent upon completion or status update of the job.
  2. Periodically check the status of the job by polling using the job id.
{
job: {
id: "clmgndrvo001neumu6nr7gt9i",
clientId: "<YOUR CLIENT ID>",
requestId: "clmgndrvo001neumu6nr7gt9i",
metadata: {
format: "wav",
name: "vocals"
},
callbackUrl: "https://example.com/webhook/vocals",
assetId: "abc123"
},
}
ElementDescription
idThe unique id assigned to the job; this can be used to get information about the job later
clientIdYour client id
requestIdThe id of the api request
formatThe given format of the output file
nameThe given data model

3. Get Job

After you have created a job request, you can retrieve the results by making a GET request to the /jobs/{job_id} endpoint, where job_id is the ID of the job that you created. Here is an example of a curl command that retrieves the results of a job request:

curl -X 'GET' \
'https://groovy.audioshake.ai/job/JOB_ID' \
-H 'accept: application/json' \
-H 'Authorization: Bearer EXAMPLE'

Here's an example of what the response looks like. More information can also be found in job data model examples:

{
job: {
id: "clmgndrvo001neumu6nr7gt9i",
clientId: "<YOUR CLIENT ID>",
createdAt: "2023-09-12T18:29:50.072Z",
startedAt: "2023-09-12T18:29:50.135Z",
updatedAt: "2023-09-12T18:30:28.155Z",
requestId: "clmgndrvo001neumu6nr7gt9i",
licenseId: "<YOUR LICENSE ID>",
metadata: {
format: "mp3",
name: "vocals",
},
callbackUrl: "<YOUR CALLBACK URL>",
status: "completed",
statusInfo: {},
sourceAsset: {
name: "<Your-File.mp3>",
id: "clmgn7nkg50527f0mulbhwi6z8",
fileType: "audio/mpeg",
format: "mp3",
link: "<LINK TO FILE>",
},
outputAssets: [
{
name: "vocals.mp3",
id: "clmgnel9q50619f0mud8lhjlwq",
fileType: "audio/mpeg",
format: "mp3",
link: "<LINK TO GENERATED FILE>",
},
],
},
}