An internal PySide6 research prototype for local AI-audio production. AudioGen explored how voice design, dialogue direction, SFX, music, experimental voice QA, and multi-track assembly could be connected in one coherent workflow.
The system was tested in original productions. It is not currently offered as a download or for sale; this page documents the experiment, its results, and its technical limits.
A 16-line audio drama scene: Viktor, a tired NY detective, calls Laura from the streets of Manhattan. Two voices, a telephone filter on her side, rain and city atmosphere, slow jazz vinyl bleeding through her apartment, and a final outro of his footsteps walking off.
The scene served as a controlled end-to-end test: generate assets, select takes, process dialogue, and arrange every element inside AudioGen. It tested a complete workflow against a concrete result rather than only demonstrating a UI.
The prototype connected seven previously separate production stages. The question was whether fewer tool changes could enable faster iteration without handing creative decisions about takes, timing, and mix to the AI.
The first experiment: derive a reusable synthetic speaker identity from a written description.
Qwen3-TTS turns a prose description ("A weathered American male voice in his early forties, deep baritone with a slight gravel from too many late nights…") plus a 25–30 second sample text into a custom voice that gets saved into the Voice Library with language, gender and bucket. The library on the right shows speakers organized by project — TheBlackVeil, Charlie_Project, NOIR CALL — and you assign saved voices straight to the Script tab's Speaker 1 / Speaker 2 slots.

Voice Designer — generating "Laura" from a prose description, ready to assign to Speaker 2 in the Script tab.
Qwen3-TTS generate_voice_design converts a written voice description into a unique speaker identity — no reference recording required.
~25–30 second sample text confirms the voice on diverse vowels and consonants before saving — phonetic spread is what makes a clone hold up under variation.
Speakers saved by language (EN/DE), gender (Male/Female) and project bucket. The same Voice Library shows up in the Script tab, FX Studio and Composer.
Seed, language hint, model, and settings are stored together. This supports controlled comparisons within the same environment; model or hardware changes can still alter the result.
The prototype breaks multi-speaker scripts into individual, reviewable takes while keeping speakers, variants, and approvals together.
Direction controls such as [soft], [firm], [urgent], or [whisper] were tested per line. Their effect depends on the selected voice engine. The robust part of the experiment was the approval workflow: accept or regenerate individual takes without touching the rest of the session.

Script tab — NOIR CALL loaded with both speakers assigned, mood pills above the text, per-line approval queue below.
Several local TTS backends were tested behind one engine layer. Lazy loading and unloading reduce GPU-memory pressure, but increase dependency and distribution complexity.
Inline tags keep performance intent visible in the script. They are an experimental control, not a guarantee: support and effect vary by model.
Walks through the script line by line. Approve, regenerate with a new seed, or re-mood any single line without touching the rest of the session.
Where supported by an engine, cues such as [whispers], [sigh], or [chuckle] can be tested. The final performance remains a human selection decision.
VCS was an experimental triage layer: measurements were intended to prioritize suspicious takes, not replace human judgment.
Neural TTS can miss: a clipped word, a dropped syllable, a sudden pitch swing, or a voice drifting from its reference timbre. AudioGen's Voice-Quality-Scoring combined several technical measurements into a 0–100 score and flagged unusual takes. The score was a search signal for human review, not objective proof of performance or audio quality.
Every line in the per-line approval queue carries its VCS number. Re-generations are compared against the previous best, and the spectrogram + outlier views make the failure mode visible instead of guessed.
| Metric | What it measures | Weight | Target |
|---|---|---|---|
| Speaker Similarity | Cosine similarity to the target voice in speaker-embedding space (Resemblyzer) | 30% | ≥ 0.80 |
| Transcription (WER) | Whisper re-transcribes the take; word-error-rate against the intended line | 25% | ≤ 5% |
| Prosody / Pitch | F0-contour stability — penalizes toneless drops and unnatural jumps | 15% | natural range |
| Clipping / Level | True-peak and RMS check for overload and under-level takes | 10% | ≤ -1 dBTP |
| Silence / Trailing | Detects clipped tails, long gaps and dead air | 10% | < 400 ms |
| Artifact / Noise | SNR and spectral-anomaly detection for glitches and background hiss | 10% | high SNR |
| VCS Composite | Experimental weighted sum — one 0–100 signal per take | 100% | < 85 review |




VCS makes failure modes visible — score, outlier ranking and spectrogram comparison instead of guessing.
Six weighted metrics produce a 0–100 signal per line. Values below the experimental threshold are highlighted; no take is approved by the score alone.
Speaker embeddings can surface potential drift from the reference timbre. Whether a take works dramatically still requires a human ear.
Each take is re-transcribed and diffed against its intended line. Dropped, swapped or hallucinated words surface as a WER spike, not as a surprise in the final mix.
The ranking prioritizes suspicious candidates and shortens the first search pass. Complete creative and technical approval remains human work.
MMAudio for short concrete sound effects, AudioLDM2 in the same pipeline for longer atmosphere loops.
Phone pickup, taxi pass on wet asphalt, footsteps: short, concrete one-shots were tested with MMAudio. Rain on rooftops, distant traffic, and room tone were created as longer loops with AudioLDM2. In testing, prompts focused on one clear element were more reliable than overloaded descriptions. Generated clips save into the SFX Library with category tags such as Ambience, Foley, Impact, or UI and can be placed directly on Composer tracks.

SFX Studio — generating a tavern atmosphere clip with MMAudio, ready to save as a categorized library entry.
Used in the prototype for short, concrete one-shots such as phone_pickup, taxi_pass_wet, or vinyl_crackle. The starting configuration was 4–8 seconds, 25 steps, and guidance 4.5.
Sister engine in the same view for longer atmosphere loops — rain on rooftops, distant traffic, room tone. Hybrid-stack with MMAudio for layered scenes.
Single-element prompts outperform stacked ones. "Wet asphalt, tire swoosh" yields clean output; "rain AND traffic AND horn AND footsteps" produces mud.
SFX saved with category tags (Ambience, Foley, Impact, UI) and per-project buckets. Same library is drag-droppable from the Composer's SFX panel.
ACE-Step was tested as a local Diffusers pipeline so generated music could enter the same session and Composer workflow directly.
Six modes: Generate a fresh track, Extend an existing one, Add Intro / Add Outro, Repaint a drag-selected region without touching the rest, or Cover an existing track in a different genre. Style presets ("Lo-Fi Cafe", "Cinematic Build", etc.) prefill prompt + parameters with proven defaults that you edit on top. The lyrics field is optional — leave blank for instrumental, add [verse] / [chorus] / [bridge] tags for sung output.

Music Studio — generating a lo-fi hip-hop loop with vinyl crackle, BPM 80, C minor. Preset "Lo-Fi Cafe" prefilled the defaults; the rest is overridden on top.
ACE-Step was integrated as a local Diffusers pipeline without requiring ComfyUI. bf16 and partial offload were used to make music generation practical on the available 16 GB test GPU.
Generate · Extend · Add Intro · Add Outro · Repaint a drag-selected region · Cover an existing track in a new genre.
Curated prompt + parameter pairs you start from and edit on top — "Lo-Fi Cafe", "Cinematic Build", "8-bit Action Theme" and more. Faster than building prompts from scratch.
One-click handoff from a saved Music Studio track straight into FX Studio's Music tab for mastering — no file management in between.
Per-speaker and per-line effect chains for the whole conversation.
Pick a session from the dropdown, see every line organized by speaker on the left, build an effect chain on the right. Apply a chain to an entire speaker (Laura gets the Telephone-Filter — High-Pass 300 Hz, Low-Pass 3400 Hz, slight saturation, compressor, gain trim — for the whole call) or override one specific line for emphasis. The Compare button A/Bs original vs. processed; Export FX Combined writes the rendered version back as a session-bound artifact.

FX Studio — Laura selected, Lo-Fi (telephone) preset loaded, chain ready to apply across all 7 of her lines.
Apply an effect chain to every line of one speaker at once. Telephone-filter on the partner in a phone-call scene, broadcast polish on the narrator, no per-line manual work.
Single line needs an emphasis push? presence_boost at 2 kHz on just that line. The tree shows * markers where overrides live, so you see at a glance what's customized.
Curated chains: Voice Polish (Subtle), Voice Polish (Broadcast), Lo-Fi (telephone), Whisper Close-Mic, Radio. Save your own with one click.
Click Compare to flip between original and processed in place — same waveform window, no separate player to manage.
Same FX Studio shell, Music tab. Mastering chains, Demucs stem separation and remix-back — non-destructive.
Mastering chains use a separate preset category. “Music Master Streaming (-14 LUFS · Spotify/Apple)” was the tested starting point, combining high-pass filtering, presence processing, compression, limiting, and LUFS normalization. Below the music library, Separate Stems uses Demucs to split tracks into drums, bass, vocals, and other. The stems become children of the master track and can enter the Composer as four parallel lanes with independent volume, FX, and mute control, or be remixed into a new master.

FX Studio Music tab — Jazz_1940_Intro split into 4 Demucs stems (bass / drums / other / vocals), Music Master Streaming chain (6 effects) applied.
The prototype separates music tracks into drums, bass, vocals, and other. Stems appear as children of the master in the library and can be processed independently.
Eight presets including streaming (-14 LUFS Spotify/Apple), cinematic (-16 LUFS), broadcast and lo-fi character chains. Pick one, tweak the chain, save your own.
One button drops all four stems onto the Composer timeline as parallel tracks — mute the drums, duck just the vocals under voice lines, layer effects per stem.
After per-stem edits, remix back into a single mastered file. The original stays in the library; the remix becomes a new entry — non-destructive workflow.
Where everything comes together. Voice sessions, SFX, music and stems on one timeline — with auto-sync, snap and crossfade.
Voice sessions auto-sync from the Script tab as two parallel speaker tracks with proper gaps between lines. SFX clips drag from the library onto their own lanes. Music sits on a dedicated lane (or four lanes if you dropped stems). Per-track color, type icon, drag-handle rename, individual volume. Auto-snap to clip edges, BPM beats and markers. Auto-crossfade on overlapping music / SFX / ambience clips. Multi-select with Alt+Drag, ripple-edit with Alt+Shift+Drag. Two export targets: a single WAV / MP3 of the audio mix, or an MP4 with the audio plus audio-reactive visuals (spectrum bars, waveform pulse) overlaid on a still cover image.

Composer — NOIR CALL session laid out across voice lanes (Viktor / Laura), SFX track (footsteps, taxi), music lane with the vinyl loop. Video FX panel on the right configures audio-reactive overlays for MP4 export.
Picks up the latest Script session, builds two voice tracks with proper gaps, drops every line as a clip in order. Zero manual timeline assembly for dialogue.
Clip edges, markers and BPM beats all snap automatically. Disable per-operation by holding Shift while dragging.
Overlapping music / SFX / ambience clips crossfade automatically — manual fade-curves only when you want to override them.
Alt+Drag for multi-select, Alt+Shift+Drag for ripple. Move one clip and downstream clips slide with it — like DaVinci, but for audio drama.
Per-track color (12 presets + custom), type icon (mic / music / speaker / wave), inline rename via drag handle, individual volume + mute / solo.
Drop named markers on the timeline for chapter points, cue points and edit anchors. Snap targets and visual reference during playback.
WAV (24-bit, source sample rate) or MP3 (variable bitrate). Master-bus FX applied, peak limiter at -1 dB, LUFS-normalized to the selected target.
MP4 with the audio mix plus audio-reactive overlays — spectrum bars, waveform pulse, configurable resolution / FPS / brightness / glow — layered over a still cover image.
The exported master can be re-scored by VCS one last time, so the final mix ships with a measured number rather than a hopeful one.
AudioGen evolved with the models under test. The June 2026 snapshot shows both substantial integration work and the cost of maintaining a broad local model stack.
PySide6 and Qt 6 provide the desktop interface. Python remained practical for direct access to the PyTorch ecosystem, while several large views eventually became difficult-to-maintain monoliths.
Incompatible model stacks for OmniVoice, Higgs Audio, and Stable Audio were isolated in separate environments and processes. This protects the main app from conflicts, but increases installation and support cost.
OmniVoice, Higgs Audio, and Qwen-based voice-design paths were tested behind shared workflows. Take management, approval, and replaceability mattered more than any single model.
Whisper round-trip transcription, speaker embeddings, and F0, level, and spectral analysis feed the VCS signal. The approach prioritizes review cases but does not replace human approval.
ACE-Step, Stable Audio, and MMAudio were integrated as local generators. The research also showed how quickly model changes create drift in documentation, dependencies, and license review.
NumPy, SciPy, and librosa support analysis and effect chains; Demucs separates music into stems. Open edge cases around stereo linking, NaN/Inf values, and GPU lifecycle show why tests would be essential for a product.
Project-scoped libraries keep voices, takes, SFX, music, and FX artifacts together. Scripts and generated media remain on the user's machine in the tested local workflow.
The complete development setup spans several environments and many gigabytes of model weights. Installer, updates, hardware checks, and third-party licensing emerged as product problems of their own.
The prototype answered the workflow question and produced a real production result. Without tests, a validated installer, and a narrower product focus, it is deliberately not presented as a finished commercial product.
A coherent local workflow can materially simplify iteration on dialogue-heavy scenes. The most valuable part was not the number of generators, but the connection between script, takes, approval, basic quality screening, and timeline. NOIR CALL is the concrete evidence.
An all-in-one model zoo quickly creates more maintenance, distribution, and licensing work than product value. The conclusion is therefore not a sales promise: if the research continues, it should become a much smaller narrative-audio workflow with replaceable engines and human approval at its center.