AudioSeparator.Onnx.Demucs 0.2.0-beta.2

This is a prerelease version of AudioSeparator.Onnx.Demucs.
dotnet add package AudioSeparator.Onnx.Demucs --version 0.2.0-beta.2
                    
NuGet\Install-Package AudioSeparator.Onnx.Demucs -Version 0.2.0-beta.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AudioSeparator.Onnx.Demucs" Version="0.2.0-beta.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AudioSeparator.Onnx.Demucs" Version="0.2.0-beta.2" />
                    
Directory.Packages.props
<PackageReference Include="AudioSeparator.Onnx.Demucs" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AudioSeparator.Onnx.Demucs --version 0.2.0-beta.2
                    
#r "nuget: AudioSeparator.Onnx.Demucs, 0.2.0-beta.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AudioSeparator.Onnx.Demucs@0.2.0-beta.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AudioSeparator.Onnx.Demucs&version=0.2.0-beta.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=AudioSeparator.Onnx.Demucs&version=0.2.0-beta.2&prerelease
                    
Install as a Cake Tool

AudioSeparator.Onnx.Demucs

Demucs/htdemucs ONNX backend for AudioSeparator — separate audio into drums, bass, vocals, and other stems.

NuGet License: MIT .NET

Part of AudioSeparator — modular .NET audio stem separation.


Install

dotnet add package AudioSeparator.Onnx.Demucs
dotnet add package AudioSeparator.NAudio

Or swap NAudio for FFMPEG when you need broader format support:

dotnet add package AudioSeparator.FFMPEG

When to use this package

  • You want to separate audio stems using a Demucs or htdemucs ONNX model.
  • This is the recommended entry point for most applications.
  • Pair with NAudio (simple WAV/MP3) or FFMPEG (any format ffmpeg supports).

Core principle

The separator returns SeparationResult with separated stems. It does not write files. Call WriteToDirectoryAsync after RunAsync to save stems to disk.


Defaults

DemucsBuilder.Create(...) pre-configures htdemucs requirements:

Setting Default
Sample rate 44100 Hz
Stem names drums, bass, other, vocals

Override with .UseStemNames(...) or .WithRequirements(...) when needed.


Quick start

using AudioSeparator.NAudio;
using AudioSeparator.Onnx.Demucs;
using Microsoft.ML.OnnxRuntime;

var builder = DemucsBuilder.Create("htdemucs.onnx")
    .UseNAudio()
    .ConfigureSessionOptions(options =>
    {
        options.GraphOptimizationLevel = GraphOptimizationLevel.ORT_ENABLE_ALL;
        options.AppendExecutionProvider_CUDA(0); // optional GPU
    });

using var separator = builder.Build();
var session = await separator.CreateSession("input.wav");

foreach (var task in session.Tasks)
{
    task.SetProgressCallback((current, total) =>
        Console.WriteLine($"{task.Description}: {current}/{total}"));
}

var result = await session.RunAsync();
await result.WriteToDirectoryAsync("./Outputs");

foreach (var (name, _) in result.Stems)
{
    Console.WriteLine($"Wrote stem: {name}");
}

FFMPEG output (e.g. MP3 stems)

using AudioSeparator.FFMPEG;
using AudioSeparator.Onnx.Demucs;

var builder = DemucsBuilder.Create("htdemucs.onnx")
    .UseFFMPEG(options =>
    {
        options.OutputFormat = "mp3";
        options.OutputCodec = "libmp3lame";
    });

Session flow

Step Action Output
1 CreateSession(path) Probe + validation
2 Attach progress on session.Tasks UI feedback
3 RunAsync() SeparationResult
4 WriteToDirectoryAsync(dir) Files on disk

Key API

Type Role
DemucsBuilder.Create(modelPath) Fluent entry point with htdemucs defaults
DemucsBuilder Builder: UseStemNames, UseAudio, WithRequirements, ConfigureSessionOptions
DemucsSeparator IAudioSeparator implementation
DemucsContext ONNX runtime context for Demucs
DemucsInferenceSpecReader Reads htdemucs tensor layout from ONNX metadata
DemucsInferenceTask Chunked inference; output layout [batch, stems, channels, frames]

Inherited from OnnxSeparatorBuilder: .UseAudio(), .UseStemNames(), .WithRequirements(), .ConfigureSessionOptions().


Requirements

  • .NET 10
  • ONNX model file (e.g. htdemucs) — not included in this package
  • AudioSeparator.Onnx (transitive)
  • CUDA (optional) — GPU inference via ConfigureSessionOptions
  • ffmpeg/ffprobe (optional) — only if using FFMPEG extensions

Examples

Sample projects in the AudioSeparator repository:

  • Examples/AudioSeparator.Console — minimal console usage
  • Examples/AudioSeparator.Spectre — progress bars with Spectre.Console
  • Examples/AudioSeparator.Benchmark — performance benchmarking

Package NuGet Description
AudioSeparator.NAudio NAudio I/O WAV read/write
AudioSeparator.FFMPEG FFMPEG I/O Broad format support
AudioSeparator.Benchmark Benchmarking Performance reports
AudioSeparator.Abstractions Contracts Result types and extensions

Source: AudioSeparator.Onnx.Demucs on GitHub


License

MIT — see AudioSeparator repository.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0-beta.2 68 9/13/2026
0.2.0-beta.1 54 9/13/2026
0.2.0-beta 79 8/30/2026
0.1.0-beta 86 8/13/2026