{"id":30858881,"url":"https://github.com/mrroxandi/veloxvox","last_synced_at":"2026-01-20T16:42:03.123Z","repository":{"id":309839559,"uuid":"1037196486","full_name":"MrRoxandi/VeloxVox","owner":"MrRoxandi","description":"VeloxVox is a high-performance, modern audio playback and Text-To-Speech (TTS) engine for .NET on Windows","archived":false,"fork":false,"pushed_at":"2025-08-14T03:12:59.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-14T05:28:46.346Z","etag":null,"topics":["audio","audio-library","csharp","dotnet","libvlc","playback","sound","text-to-speech","tts","vlc","windows"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MrRoxandi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-13T07:56:27.000Z","updated_at":"2025-08-14T03:13:02.000Z","dependencies_parsed_at":"2025-08-14T05:38:59.238Z","dependency_job_id":null,"html_url":"https://github.com/MrRoxandi/VeloxVox","commit_stats":null,"previous_names":["mrroxandi/veloxvox"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MrRoxandi/VeloxVox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrRoxandi%2FVeloxVox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrRoxandi%2FVeloxVox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrRoxandi%2FVeloxVox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrRoxandi%2FVeloxVox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrRoxandi","download_url":"https://codeload.github.com/MrRoxandi/VeloxVox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrRoxandi%2FVeloxVox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274051961,"owners_count":25214030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-library","csharp","dotnet","libvlc","playback","sound","text-to-speech","tts","vlc","windows"],"created_at":"2025-09-07T14:55:11.357Z","updated_at":"2026-01-20T16:42:03.097Z","avatar_url":"https://github.com/MrRoxandi.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VeloxVox\n\n[![NuGet version](https://img.shields.io/nuget/v/VeloxVox.svg?style=for-the-badge)](https://www.nuget.org/packages/VeloxVox/)\n[![.NET](https://img.shields.io/badge/.NET-8.0-blueviolet?style=for-the-badge)](https://dotnet.microsoft.com/download/dotnet/8.0)\n[![Platform](https://img.shields.io/badge/Platform-Windows-blue.svg?style=for-the-badge)](https://docs.microsoft.com/en-us/windows/apps/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://github.com/MrRoxandi/VeloxVox?tab=MIT-1-ov-file)\n\n**VeloxVox** is a high-performance, modern audio playback and Text-To-Speech (TTS) engine for .NET on Windows. Built on the robust foundations of **LibVLCSharp** and **System.Speech**, it's designed for speed, responsiveness, and a simple, intuitive API. Whether you're adding voice notifications to a desktop app or building a complex audio queuing system, VeloxVox provides a solid and extensible solution.\n\n## Features\n\n- 🚀 **High Performance**: Asynchronous-first design with a background processing queue ensures your application's UI remains responsive, even during audio synthesis or playback.\n- 🗣️ **High-Quality TTS**: Integrated Text-To-Speech powered by the native `System.Speech` synthesizer, with easy options to control voice, rate, and volume.\n- 🎶 **Versatile Playback**: Leverages the power of LibVLC to play a vast range of audio formats from local files, network streams, and URLs. All in a headless mode with no visible UI.\n- 🔌 **Pluggable Architecture**: Easily replace the default audio player or TTS engine with your own implementation by conforming to simple interfaces (`IAudioPlayer`, `ITtsEngine`).\n- ✨ **Fluent Configuration**: A clean, fluent builder API (`VeloxVoxBuilder`) for setting up your audio engine exactly how you need it.\n- 🔔 **Rich Events**: Subscribe to events for key playback states like `QueueItemStarted`, `QueueItemCompleted`, and `QueueItemFailed` to build interactive experiences.\n\n## Installation\n\nInstall the package from NuGet Package Manager or via the .NET CLI:\n\n```sh\ndotnet add package VeloxVox\n```\n\n\u003e **Note:** VeloxVox targets Windows and relies on `System.Speech` and native VLC libraries.\n\n## Quick Start\n\nThe easiest way to start is by using the `VeloxVoxBuilder`. This example creates an engine and says \"Hello, World!\".\n\n```csharp\nusing VeloxVox;\n\n// In your async Main method or an event handler\npublic static async Task Main(string[] args)\n{\n    Console.WriteLine(\"Initializing VeloxVox...\");\n\n    // 1. Build the engine. `await using` ensures it's properly disposed.\n    await using var engine = await new VeloxVoxBuilder().BuildAsync();\n\n    // 2. Enqueue text to be spoken.\n    await engine.EnqueueTtsAsync(\"Hello, VeloxVox! Playback is starting now.\");\n\n    Console.WriteLine(\"TTS enqueued. Press any key to exit.\");\n    Console.ReadKey(); // Keep the app alive to hear the sound.\n}\n```\n\n## Enqueuing Different Audio Sources\n\nVeloxVox manages a queue, allowing you to add audio from multiple sources sequentially.\n\n```csharp\nawait using var engine = await new VeloxVoxBuilder().BuildAsync();\n\n// 1. Enqueue Text-To-Speech with custom options\nawait engine.EnqueueTtsAsync(\n    \"First, we play this message with a faster voice.\",\n    new() { Rate = 3 } // Rate can be from -10 to 10\n);\n\n// 2. Enqueue an audio file from the internet\nengine.EnqueueUrl(\"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3\");\n\n// 3. Enqueue a local file\nstring localFilePath = @\"C:\\path\\to\\your\\audio.wav\";\nif (File.Exists(localFilePath))\n{\n    engine.EnqueueFile(localFilePath);\n}\n\nConsole.WriteLine(\"Audio queue is populated. Playback will proceed in order.\");\nConsole.ReadKey();\n```\n\n## Using with Dependency Injection\n\nVeloxVox is fully compatible with DI containers. This is the recommended approach for larger applications.\n\n### 1. Register VeloxVox Services\n\nIn your `Program.cs` or `Startup.cs`:\n\n```csharp\nusing Microsoft.Extensions.DependencyInjection;\nusing VeloxVox;\nusing VeloxVox.Abstractions; // For ILogger if you use it\n\n// ...\nvar services = new ServiceCollection();\n\n// 1. Build the engine once and register it as a singleton.\n// This is important as it manages a single audio output.\nvar veloxVoxEngine = await new VeloxVoxBuilder().BuildAsync();\nservices.AddSingleton(veloxVoxEngine);\n\n// 2. Register your services that will use the engine\nservices.AddTransient\u003cMyAudioNotificationService\u003e();\n\nvar serviceProvider = services.BuildServiceProvider();\n\n// Remember to dispose the engine when the application shuts down\n// If using a host builder, this can be handled in application stopping events.\n// await serviceProvider.GetRequiredService\u003cVeloxVoxEngine\u003e().DisposeAsync();\n```\n\n### 2. Inject `VeloxVoxEngine` into Your Services\n\n```csharp\npublic class MyAudioNotificationService\n{\n    private readonly VeloxVoxEngine _audioEngine;\n\n    public MyAudioNotificationService(VeloxVoxEngine audioEngine)\n    {\n        _audioEngine = audioEngine;\n    }\n\n    public async Task NotifyUser(string message)\n    {\n        _audioEngine.ClearQueue(); // Clear any previous notifications\n        await _audioEngine.EnqueueTtsAsync($\"Attention! {message}\");\n    }\n}\n```\n\n## Configuration In-Depth\n\nThe `VeloxVoxBuilder` gives you full control over the engine's components.\n\n```csharp\n// Example of swapping out backends\nvar myCustomPlayer = new MyCustomAudioPlayer();\nvar myCustomTts = new MyCloudBasedTtsEngine();\n\nawait using var engine = await new VeloxVoxBuilder()\n    .WithAudioPlayer(myCustomPlayer) // Provide your own IAudioPlayer backend\n    .WithTtsEngine(myCustomTts)      // Provide your own ITtsEngine backend\n    .BuildAsync();\n```\n\n## Handling Events\n\nYou can build a rich, interactive UI by subscribing to the engine's events.\n\n```csharp\nengine.QueueItemStarted += (sender, args) =\u003e\n{\n    Console.WriteLine($\"[EVENT] Now Playing: {args.Item.SourcePath}\");\n};\n\nengine.QueueItemCompleted += (sender, args) =\u003e\n{\n    Console.WriteLine($\"[EVENT] Finished: {args.Item.SourcePath} (Reason: {args.Reason})\");\n};\n\nengine.QueueEmpty += (sender, args) =\u003e\n{\n    Console.WriteLine($\"[EVENT] The playback queue is now empty.\");\n};\n```\n\n## Contributing\n\nContributions are welcome! If you find a bug, have a feature request, or want to improve the code, please feel free to open an issue or submit a pull request.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE.txt) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrroxandi%2Fveloxvox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrroxandi%2Fveloxvox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrroxandi%2Fveloxvox/lists"}