ElBruno.Speech.Stt.Parakeet 1.6.0-preview.2

This is a prerelease version of ElBruno.Speech.Stt.Parakeet.
dotnet add package ElBruno.Speech.Stt.Parakeet --version 1.6.0-preview.2
                    
NuGet\Install-Package ElBruno.Speech.Stt.Parakeet -Version 1.6.0-preview.2
                    
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.Stt.Parakeet" Version="1.6.0-preview.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ElBruno.Speech.Stt.Parakeet" Version="1.6.0-preview.2" />
                    
Directory.Packages.props
<PackageReference Include="ElBruno.Speech.Stt.Parakeet" />
                    
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.Stt.Parakeet --version 1.6.0-preview.2
                    
#r "nuget: ElBruno.Speech.Stt.Parakeet, 1.6.0-preview.2"
                    
#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.Stt.Parakeet@1.6.0-preview.2
                    
#: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.Stt.Parakeet&version=1.6.0-preview.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ElBruno.Speech.Stt.Parakeet&version=1.6.0-preview.2&prerelease
                    
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 BlazorComponents — ElBruno.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 adapter — SpeechPipelineRealtimeAdapter 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.Stt.Parakeet NuGet Downloads Experimental opt-in multilingual Parakeet TDT v3 local STT, available since 1.6.0-preview.1
ElBruno.Speech.Stt.Whisper Source only; pending 1.6.0-preview.2 release Not released Experimental opt-in multilingual Whisper large-v3 local CPU STT; not yet on NuGet
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, ...
}

Experimental multilingual Parakeet STT

An opt-in local Parakeet TDT v3 provider is available in 1.6.0-preview.1 as ElBruno.Speech.Stt.Parakeet, using the verified elbruno ONNX model bundle. It supports Spanish and other model languages without changing Whisper defaults. Native token-start metadata is preserved; word/segment intervals and language ID are explicitly unavailable. See usage, requirements, and evaluation limits.

Opt-in Whisper large-v3

ElBruno.Speech.Stt.Whisper is currently source-only, pending the unpublished 1.6.0-preview.2 release. It adds a separate local whisper.cpp CPU provider without replacing the existing ElBruno.Whisper package or changing defaults. It uses a pinned, explicitly downloaded multilingual large-v3 model. See setup, native requirements, and limitations and the fixed-reference FLEURS comparison.

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
ParakeetTranscribe Local WAV → Parakeet transcript and native token-start JSON (opt-in)
WhisperTranscribe Local WAV → opt-in Whisper large-v3 transcript and unreviewed native segment JSON
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"

Speech test fixtures

Reusable Spanish/English speech fixtures, CC BY 4.0 licensing, offline validation, and opt-in model evaluation are documented in Speech test fixtures.

Working with Copilot and Squad

Normal Copilot sessions can work on this repository without loading Squad. Squad is optional: select the Squad custom agent in your client or run copilot --agent squad to use its team orchestration and safety rules. The coordinator integrity check runs only in that custom agent.

If a normal session reports that the Squad coordinator is missing or truncated, update your checkout to include the instruction-scope fix and start a new Copilot session so it reloads .github/copilot-instructions.md. Existing sessions can retain the old instructions. If you select Squad and its loaded instructions are incomplete, stop orchestration and restart with the complete custom agent; do not add a canary to bypass the check.


📄 License

MIT — see LICENSE.

The FLEURS audio and reference transcripts under tests/fixtures/speech are separately licensed CC BY 4.0. See their attribution and license notices.


👋 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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.6.0-preview.2 36 10/22/2026
1.6.0-preview.1 34 10/22/2026

Adds an opt-in local Whisper large-v3 CPU STT provider alongside the existing opt-in Parakeet provider. Existing Whisper and pipeline defaults are unchanged. Includes local-only FLEURS comparison evidence; no reviewed word timestamps or podcast accuracy claim. Whisper weights are not bundled; native runtime and model licensing/requirements apply.