Lyo.Tts.WindowsSpeech
1.0.0
See the version list below for details.
dotnet add package Lyo.Tts.WindowsSpeech --version 1.0.0
NuGet\Install-Package Lyo.Tts.WindowsSpeech -Version 1.0.0
<PackageReference Include="Lyo.Tts.WindowsSpeech" Version="1.0.0" />
<PackageVersion Include="Lyo.Tts.WindowsSpeech" Version="1.0.0" />
<PackageReference Include="Lyo.Tts.WindowsSpeech" />
paket add Lyo.Tts.WindowsSpeech --version 1.0.0
#r "nuget: Lyo.Tts.WindowsSpeech, 1.0.0"
#:package Lyo.Tts.WindowsSpeech@1.0.0
#addin nuget:?package=Lyo.Tts.WindowsSpeech&version=1.0.0
#tool nuget:?package=Lyo.Tts.WindowsSpeech&version=1.0.0
Lyo.Tts.WindowsSpeech
Windows Speech Synthesis Text-to-Speech service implementation for the Lyo framework using Windows built-in SAPI (Speech API).
Features
- Windows Native: Uses Windows built-in Speech Synthesis API (SAPI)
- Voice Selection: Support for selecting installed Windows voices
- Speech Rate Control: Adjustable speech rate (-10 to 10)
- Volume Control: Adjustable volume (0 to 100)
- Bulk Operations: Support for bulk text-to-speech synthesis
- Logging: Comprehensive logging support via Microsoft.Extensions.Logging
- Metrics: Optional metrics collection for monitoring TTS operations
- Thread-Safe: Safe for concurrent use
- Async Support: Full async/await support with cancellation token support
Examples
Subscribe to events
using Lyo.Tts;
using Lyo.Tts.Models;
using Lyo.Tts.WindowsSpeech;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.AddWindowsSpeechTtsService(options =>
{
options.DefaultVoiceId = "Microsoft Zira Desktop";
options.DefaultOutputFormat = AudioFormat.Wav;
options.MaxTextLength = 5000;
options.EnableMetrics = true;
});
await using var serviceProvider = services.BuildServiceProvider();
var ttsService = serviceProvider.GetRequiredService<ITtsService<WindowsTtsRequest>>();
var result = await ttsService.SynthesizeAsync("Hello, world!");
if (result.IsSuccess && result.AudioData is { Length: > 0 })
await File.WriteAllBytesAsync("output.wav", result.AudioData);
Using with an explicit options instance
services.AddWindowsSpeechTtsService(new TtsServiceOptions
{
DefaultVoiceId = "Microsoft Zira Desktop",
DefaultOutputFormat = AudioFormat.Wav,
MaxTextLength = 5000,
EnableMetrics = true,
});
List Available Voices
var ttsService = serviceProvider.GetRequiredService<ITtsService<WindowsTtsRequest>>();
var ok = await ttsService.TestConnectionAsync();
// TestConnectionAsync logs every installed SAPI voice via the registered ILogger.
Platform Support
Windows Only: This library only builds and runs on Windows platforms. It requires the System.Speech package which is Windows-specific.
Registered services
AddWindowsSpeechTtsService (Action<TtsServiceOptions>? or TtsServiceOptions) registers:
TtsServiceOptions(singleton).WindowsSpeechTtsService(singleton; subclass ofTtsServiceBase<WindowsTtsRequest>).ITtsService<WindowsTtsRequest>resolved from the singleton above.
It does not register the non-generic ITtsService — there is no WindowsSpeechTtsAppService
adapter in this package today, so callers that depend on ITtsService should depend on
ITtsService<WindowsTtsRequest> instead (or wire up their own adapter). The other Lyo TTS providers
(Lyo.Tts.AwsPolly, Lyo.Tts.Typecast)
register both interfaces because they ship an *TtsAppService adapter.
Requirements
- Windows operating system
- .NET Standard 2.0 or .NET 10.0
- System.Speech package (automatically included)
Notes
- This library will not build on non-Windows platforms
- The library uses Windows SAPI which is only available on Windows
- Audio output format is always WAV when using Windows Speech Synthesis
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Common— (direct, lyo)Lyo.Exceptions— (direct, lyo)Lyo.Tts— (direct, lyo)Lyo.Tts.Models— (direct, lyo)System.Speech10.0.5— (direct, microsoft, $([MSBuild]::IsOSPlatform('Windows')))Lyo.Metrics— (transitive, lyo)Lyo.Result— (transitive, lyo)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5— (transitive, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5— (transitive, microsoft)Microsoft.Extensions.Options.ConfigurationExtensions10.0.5— (transitive, microsoft)System.Memory4.6.3— (transitive, microsoft, netstandard2.0)System.Text.Json10.0.5— (transitive, microsoft, netstandard2.0)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Lyo.Common (>= 1.0.0)
- Lyo.Exceptions (>= 1.0.0)
- Lyo.Tts (>= 1.0.0)
- Lyo.Tts.Models (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.