ElBruno.Speech.Audio 1.4.1

dotnet add package ElBruno.Speech.Audio --version 1.4.1
                    
NuGet\Install-Package ElBruno.Speech.Audio -Version 1.4.1
                    
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="ElBruno.Speech.Audio" Version="1.4.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ElBruno.Speech.Audio" Version="1.4.1" />
                    
Directory.Packages.props
<PackageReference Include="ElBruno.Speech.Audio" />
                    
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 ElBruno.Speech.Audio --version 1.4.1
                    
#r "nuget: ElBruno.Speech.Audio, 1.4.1"
                    
#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 ElBruno.Speech.Audio@1.4.1
                    
#: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=ElBruno.Speech.Audio&version=1.4.1
                    
Install as a Cake Addin
#tool nuget:?package=ElBruno.Speech.Audio&version=1.4.1
                    
Install as a Cake Tool

ElBruno.Speech

ElBruno.Speech Banner

NuGet NuGet Downloads Build Status License: MIT .NET GitHub stars Twitter Follow

Local-first speech runtime for .NET — VAD → STT → LLM → TTS 🎙️

A reusable, local-first speech runtime for .NET 8 and .NET 10. Built on Microsoft.Extensions.AI provider boundaries — works with local models (Whisper, VibeVoice, Qwen-TTS, Ollama) and cloud providers (Azure OpenAI, OpenAI) without changing orchestration code.

Audio input
    ↓
Audio normalization · resampling · framing · buffering
    ↓
Voice Activity Detection (Silero VAD)
    ↓
Turn detection · utterance assembly
    ↓
ISpeechToTextClient
    ↓
IChatClient
    ↓
Streaming text segmentation
    ↓
ITextToSpeechClient
    ↓
Audio output

What's New

Date Version Highlights
2026-08-02 1.1.0 BlazorComponentsElBruno.Speech.BlazorComponents Razor Class Library with six ready-to-use speech pipeline UI components
2026-08-02 1.0.0 First stable release — production pipeline, 70+ tests, OpenTelemetry, CLI tool, and Aspire sample
2026-07-30 0.6.0 Dependency updates — MEAI 10.8.1, ONNX Runtime 1.28.0, and Extensions 10.0.10
2026-07-21 0.5.4 Production hardening — STT timeout and error isolation per pipeline stage
2026-07-05 0.5.3 MEAI IRealtimeClient adapterSpeechPipelineRealtimeAdapter wrapping the pipeline as an IRealtimeClient

Packages

Package NuGet Downloads Description
ElBruno.Speech.Abstractions NuGet Downloads Audio types, VAD contracts, session interfaces, error types
ElBruno.Speech.Audio NuGet Downloads WAV I/O, PCM conversion, resampling, framing, ring buffers
ElBruno.Speech.Vad.Silero NuGet Downloads Silero VAD via ONNX Runtime — streaming voice activity detection
ElBruno.Speech.Pipeline NuGet Downloads VAD → STT → LLM → TTS orchestration, bounded channels, barge-in
ElBruno.Speech.AspNetCore NuGet Downloads WebSocket endpoint, session registry, health checks
ElBruno.Speech.NAudio NuGet Downloads Windows microphone and speaker via NAudio
ElBruno.Speech.OpenTelemetry NuGet Downloads Activities, metrics, Aspire-compatible instrumentation
ElBruno.Speech.Cli NuGet Downloads elbrunospeech dotnet tool
ElBruno.Speech.BlazorComponents NuGet Downloads Blazor Server RCL — 6 ready-to-use speech pipeline UI components

Installation

dotnet add package ElBruno.Speech.Pipeline
dotnet add package ElBruno.Speech.Vad.Silero

Install the CLI tool globally:

dotnet tool install -g ElBruno.Speech.Cli
elbrunospeech --help

Quick Start

// Register providers
services.AddWhisper(o => o.Model = KnownWhisperModels.WhisperBaseEn);
services.AddLocalLLMs(o => o.Model = KnownModels.Phi35MiniInstruct);
services.AddVibeVoiceTTS(o => o.SampleRate = 24_000);
services.AddSileroVad(o => o.MinimumSilenceDuration = TimeSpan.FromMilliseconds(500));

// Build the pipeline
services.AddSpeechPipeline(builder =>
{
    builder
        .UseVoiceActivityDetector<SileroVoiceActivityDetector>()
        .UseSpeechToText(sp => sp.GetRequiredService<ISpeechToTextClient>())
        .UseChatClient(sp => sp.GetRequiredService<IChatClient>())
        .UseTextToSpeech(sp => sp.GetRequiredService<ITextToSpeechClient>())
        .UseSentenceChunking(o =>
        {
            o.MinimumCharacters = 24;
            o.MaximumCharacters = 220;
            o.FlushTimeout = TimeSpan.FromMilliseconds(350);
        })
        .UseBargeIn(o => o.CancelOnSpeechStart = true);
});

// Use it
var pipeline = sp.GetRequiredService<ISpeechPipeline>();
await using var session = await pipeline.CreateSessionAsync();

await session.WriteAudioAsync(frame);
await foreach (var update in session.GetUpdatesAsync())
{
    // SpeechStartedUpdate, FinalTranscriptUpdate, AssistantAudioChunkUpdate, ...
}

CLI Tool

elbrunospeech devices                        # list audio input/output devices
elbrunospeech transcribe recording.wav       # transcribe a WAV file
elbrunospeech vad recording.wav             # run voice activity detection
elbrunospeech talk "Hello world" out.wav    # synthesize text to WAV

Observability

builder.Services.AddOpenTelemetry()
    .AddSpeechPipelineTelemetry();           // meter: ElBruno.Speech, source: ElBruno.Speech
// Aspire automatically configures OTLP export via OTEL_EXPORTER_OTLP_ENDPOINT

Samples

Sample Description
FileToSpeech WAV file → transcript → answer → WAV output
LocalVoiceAgent Microphone → VAD → Whisper → LLM → VibeVoice → speaker (barge-in)
WebSocketVoiceAgent ASP.NET Core WebSocket endpoint + browser client
AspireVoiceAgent Full Aspire AppHost with tracing, metrics, and dashboard


Requirements

  • .NET 8.0 or .NET 10.0
  • Windows, Linux, or macOS
  • NAudio package requires Windows (microphone/speaker I/O)

Building from Source

git clone https://github.com/elbruno/ElBruno.Speech.git
cd ElBruno.Speech
dotnet restore
dotnet build
dotnet test --filter "Category!=Integration"

📄 License

MIT — see LICENSE.


👋 About the Author

Hi! I'm ElBruno 🧡, a passionate developer and content creator exploring AI, .NET, and modern development practices.

Made with ❤️ by ElBruno

If you like this project, consider following my work across platforms:

  • 📻 Podcast: No Tienen Nombre — Spanish-language episodes on AI, development, and tech culture
  • 💻 Blog: ElBruno.com — Deep dives on embeddings, RAG, .NET, and local AI
  • 📺 YouTube: youtube.com/elbruno — Demos, tutorials, and live coding
  • 🔗 LinkedIn: @elbruno — Professional updates and insights
  • 𝕏 Twitter: @elbruno — Quick tips, releases, and tech news

🙏 Acknowledgments

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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 (4)

Showing the top 4 NuGet packages that depend on ElBruno.Speech.Audio:

Package Downloads
ElBruno.Speech.Pipeline

Speech pipeline orchestration for ElBruno.Speech — VAD → STT → LLM → TTS with bounded channels, barge-in, and session management.

ElBruno.Speech.Vad.Silero

Silero VAD provider for ElBruno.Speech — ONNX Runtime inference, stateful streaming voice activity detection.

ElBruno.Speech.AspNetCore

ASP.NET Core integration for ElBruno.Speech — WebSocket endpoint, session registry, health checks, and protocol handling.

ElBruno.Speech.NAudio

Windows audio I/O for ElBruno.Speech via NAudio — microphone input, speaker output, and device enumeration.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.4.1 195 8/25/2026
1.4.0 199 8/19/2026
1.3.0 189 8/16/2026
1.2.0 209 8/4/2026
1.1.0 220 8/2/2026
1.0.0 201 8/2/2026
0.6.0 207 7/30/2026
0.5.4 216 7/21/2026
0.5.3 221 7/5/2026
0.5.2 204 7/3/2026
0.5.1 214 7/3/2026
0.5.0 218 7/3/2026