SM Soundboard MAUI
Open source

Soundboard MAUI SDK-first. Stream speech, not files.

Cross-platform .NET MAUI desktop client and standalone SDK for the Sound Board voice engine. Real-time audio streaming over WebSocket, engine-agnostic design.

Install

dotnet add package Soundboard.Client

Speak

await client.SpeakAsync(request, progress);

Stream

new Progress<AudioChunk>(c => Play(c.PcmData))

Core Features

The SDK is the product. The MAUI app is a reference client.

SDK-First Design

Soundboard.Client is a standalone .NET 8+ library with zero UI dependencies. Use it in console apps, WPF, ASP.NET, or MAUI.

Real-Time Streaming

Audio arrives chunk-by-chunk over WebSocket via IProgress<AudioChunk>. No waiting for full synthesis.

Engine-Agnostic

The SDK speaks a documented API contract. Swap engines without changing your code.

Multi-Target

Ships for net8.0, net9.0, and net10.0. Reference it from any modern .NET project.

Structured Logging

Built-in ILogger support for diagnostics without pulling in a logging framework.

Reference Clients

A MAUI desktop app and CLI tool show real integration patterns you can copy.

Quick Start

Install & speak

dotnet add package Soundboard.Client

// Speak in five lines
var client = new SoundboardClient();
var presets = await client.GetPresetsAsync();
var voices = await client.GetVoicesAsync();

await client.SpeakAsync(
    new SpeakRequest("Hello!", presets[0], voices[0]),
    new Progress(c => Play(c.PcmData)));

Configuration

var client = new SoundboardClient(
    new SoundboardClientOptions
    {
        BaseUrl = "http://my-engine:9000",
        HttpTimeout = TimeSpan.FromSeconds(15),
        WebSocketConnectTimeout = TimeSpan.FromSeconds(10),
        WebSocketReceiveTimeout = TimeSpan.FromSeconds(60)
    });

SDK Surface

Method
Description
GetHealthAsync()
Engine health check — version info and readiness status
GetPresetsAsync()
List available preset identifiers (narrator, conversational, etc.)
GetVoicesAsync()
List available voice identifiers
SpeakAsync(request, progress)
Stream synthesized speech via IProgress<AudioChunk>
StopAsync()
Send a stop command to the engine

NuGet Packages

Package
Description
Soundboard.Client
Front-door SDK — streaming TTS client for any compatible engine. Pure C#, zero UI deps.
Soundboard.Maui.Audio
NAudio-based PCM16 streaming playback adapter for Windows. Buffering, thread-safe, state tracking.

Architecture

Control plane over HTTP. Data plane over WebSocket. Engine lives in a separate repository.

Soundboard.Client

The product — pure C# SDK, net8.0+. Handles connection lifecycle, JSON framing, base64 decoding, graceful WebSocket close.

Soundboard.Maui.Audio

NAudio PCM16 playback adapter for Windows. Provides IAudioPlayer with buffering and thread-safe start/stop/flush.

Reference Clients

MAUI desktop app (net10.0) and console CLI (net8.0) demonstrate real SDK integration patterns.

Documentation

Document
Purpose
getting-started-sdk.md
SDK integration guide
streaming-model.md
How audio streaming works
api-contract.md
Engine-SDK wire protocol
api.md
SDK API reference (v1.0 stability)
error-model.md
Failure modes and handling
compatibility.md
SDK-engine compatibility matrix