![]() |
VOOZH | about |
dotnet add package ElBruno.Realtime.SileroVad --version 0.10.0
NuGet\Install-Package ElBruno.Realtime.SileroVad -Version 0.10.0
<PackageReference Include="ElBruno.Realtime.SileroVad" Version="0.10.0" />
<PackageVersion Include="ElBruno.Realtime.SileroVad" Version="0.10.0" />Directory.Packages.props
<PackageReference Include="ElBruno.Realtime.SileroVad" />Project file
paket add ElBruno.Realtime.SileroVad --version 0.10.0
#r "nuget: ElBruno.Realtime.SileroVad, 0.10.0"
#:package ElBruno.Realtime.SileroVad@0.10.0
#addin nuget:?package=ElBruno.Realtime.SileroVad&version=0.10.0Install as a Cake Addin
#tool nuget:?package=ElBruno.Realtime.SileroVad&version=0.10.0Install as a Cake Tool
๐ NuGet
๐ NuGet Downloads
๐ Build Status
๐ GitHub stars
๐ Twitter Follow
A pluggable real-time audio conversation framework for .NET, following Microsoft.Extensions.AI patterns. Build voice-powered apps with local STT, TTS, VAD, and any LLM โ all running on your machine, no cloud required.
This project is built on two core Microsoft frameworks for AI and conversation management:
IChatClient) and speech-to-text (ISpeechToTextClient), enabling pluggable LLM and STT providers throughout the pipeline.Together with industry-standard models (Whisper STT, Silero VAD, ONNX Runtime), these frameworks provide a production-ready foundation for real-time voice applications.
Microphone (Audio Input)
โ raw PCM audio
โผ
๐ Silero VAD โโโ Voice Activity Detection (~2 MB ONNX)
โ speech segments
โผ
๐๏ธ Whisper STT โโโ Speech-to-Text (~75 MB GGML)
โ transcribed text
โผ
๐ค Any IChatClient โโโ LLM Chat (Ollama / OpenAI / Azure)
โ response text
โผ
๐ฃ๏ธ Any TTS โโโ Text-to-Speech (pluggable)
โ WAV audio
โผ
Speaker (Audio Output)
All models download automatically on first use. The LLM is pluggable via IChatClient โ use Ollama, OpenAI, Azure, or any provider.
ISpeechToTextClient and follows M.E.AI patterns throughoutAddPersonaPlexRealtime() + fluent builderIAsyncEnumerable for real-time processingdotnet add package ElBruno.Realtime # Core abstractions + pipeline
dotnet add package ElBruno.Realtime.Whisper # Local STT (Whisper.net)
dotnet add package ElBruno.Realtime.SileroVad # Local VAD (Silero)
using ElBruno.Realtime;
using ElBruno.Realtime.Whisper;
using ElBruno.Realtime.SileroVad;
using Microsoft.Extensions.AI;
// 1. Configure the pipeline (models auto-download on first use)
builder.Services.AddPersonaPlexRealtime(opts =>
{
opts.DefaultSystemPrompt = "You are a helpful voice assistant.";
})
.UseWhisperStt("whisper-tiny.en") // 75MB, or "whisper-base.en" for accuracy
.UseSileroVad(); // Voice activity detection
// .UseYourTts() โ plug in any ITextToSpeechClient
// 2. Register your LLM (any IChatClient provider)
builder.Services.AddChatClient(new OllamaChatClient(
new Uri("http://localhost:11434"), "phi4-mini"));
// 3. Use the pipeline
var conversation = app.Services.GetRequiredService<IRealtimeConversationClient>();
// One-shot turn
using var audio = File.OpenRead("question.wav");
var turn = await conversation.ProcessTurnAsync(audio);
Console.WriteLine($"User: {turn.UserText}");
Console.WriteLine($"AI: {turn.ResponseText}");
// Streaming full-duplex
await foreach (var evt in conversation.ConverseAsync(microphoneStream))
{
if (evt.Kind == ConversationEventKind.ResponseTextChunk)
Console.Write(evt.ResponseText);
}
| Package | Description |
|---|---|
ElBruno.Realtime |
Core: ITextToSpeechClient, IVoiceActivityDetector, IRealtimeConversationClient, pipeline orchestration, DI |
ElBruno.Realtime.Whisper |
ISpeechToTextClient (M.E.AI) via Whisper.net โ auto-downloads GGML models |
ElBruno.Realtime.SileroVad |
IVoiceActivityDetector via Silero VAD v5 ONNX โ configurable thresholds |
| Sample | Description |
|---|---|
| Realtime console app | |
| ASP.NET Core API with SignalR | |
| Blazor + .NET Aspire with voice chat + voice-controlled side-scroller game | |
| Real-time microphone conversation with Whisper STT + Ollama LLM |
# Prerequisites: Ollama running with phi4-mini
ollama pull phi4-mini
ollama serve
# Run the console sample
cd src/samples/scenario-01-console
dotnet run
All models are cached in %LOCALAPPDATA%/ElBruno/Realtime/ and shared across apps:
| Model | Size | Purpose | Auto-Download |
|---|---|---|---|
| Silero VAD v5 | ~2 MB | Voice activity detection | โ Yes |
| Whisper tiny.en | ~75 MB | Speech-to-text (fast) | โ Yes |
| Whisper base.en | ~142 MB | Speech-to-text (accurate) | โ Yes |
| Phi4-Mini (Ollama) | ~2.7 GB | LLM chat | โ Manual: ollama pull phi4-mini |
| Document | Description |
|---|---|
| How each model is used in the pipeline | |
| Three-layer architecture, data flow, M.E.AI integration | |
| NuGet publishing guide |
git clone https://github.com/elbruno/ElBruno.Realtime.git
cd ElBruno.Realtime
dotnet build
dotnet test
IChatClient provider) for the LLMContributions are welcome! Here's how to get started:
git checkout -b feature/my-featuredotnet builddotnet testPlease open an issue first for major changes or new features to discuss the approach.
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:
This project is licensed under the MIT License โ see the file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.10.0 | 114 | 5/5/2026 |
| 0.6.0 | 151 | 2/28/2026 |
| 0.5.2 | 120 | 2/27/2026 |
| 0.5.1 | 114 | 2/27/2026 |
| 0.1.1-preview | 90 | 5/5/2026 |