Novolis Docs
novolis-audio / getting-started.md

Getting started

dotnetaudiottsminiaudionovolis

Game SFX

<PackageReference Include="Novolis.Audio" Version="2026.1.*" />

Sources: nuget.org + GitHub Packages (Novolis.*).

using Novolis.Audio;
using Novolis.Audio.Runtime;

using var engine = new MiniaudioAudioEngine();
if (!engine.Start())
    throw new InvalidOperationException("Audio device failed to start.");

var clip = engine.LoadSound("assets/click.wav");
engine.Play(clip);

Headless / CI

using var engine = new NullAudioEngine();
engine.Start();

Voice / TTS

<PackageReference Include="Novolis.Audio.Voice" Version="2026.1.*" />

Optional archetypes:

<PackageReference Include="Novolis.Audio.Voice.Profiles" Version="2026.1.*" />
using Novolis.Audio.Voice;
using Novolis.Audio.Voice.Profiles;

var builder = VoiceArchetypeApplicator.Apply(
    new VoiceServiceBuilder(),
    VoiceArchetypeCatalog.ExcitableFemale);
IVoiceService voice = builder.BuildService();

await voice.SpeakAsync("Tower, SAS one two three is ready for departure.");

For ATC phraseology + radio DSP, copy the delivery pattern from novolis-dogfooding (Novolis.Dogfooding.Voice) or compose your own effect chain with Novolis.Audio.Effects.

Models

Download a Piper English model and set:

$env:NOVOLIS_VOICE_MODEL_DIR = "C:\models\vits-piper-en_US-amy-low"

See voice-models.md.

DI

services.AddNovolisVoice();       // Sherpa + NAudio
services.AddNovolisAtcVoice(VoiceArchetypeCatalog.ExcitableFemale);  // archetype + ATC delivery

Headless voice tests

var voice = new VoiceServiceBuilder()
    .UseNullSynthesizer()
    .UseNullPlayback()
    .BuildService();

Maintainer setup

git clone https://github.com/Novolis-Platform/novolis-audio.git
cd novolis-audio
dotnet run --project codegen/Novolis.Audio.Pipeline -- run maintainer
dotnet build Novolis.Audio.slnx -c Release

Native shim: novolis_audio (miniaudio) built under codegen/native/novolis-audio-platform/. Windows novolis_audio.dll is checked in under src/Novolis.Audio.Native/runtimes/win-x64/native/ for CI.