Lyo.Tts
1.0.9
dotnet add package Lyo.Tts --version 1.0.9
NuGet\Install-Package Lyo.Tts -Version 1.0.9
<PackageReference Include="Lyo.Tts" Version="1.0.9" />
<PackageVersion Include="Lyo.Tts" Version="1.0.9" />
<PackageReference Include="Lyo.Tts" />
paket add Lyo.Tts --version 1.0.9
#r "nuget: Lyo.Tts, 1.0.9"
#:package Lyo.Tts@1.0.9
#addin nuget:?package=Lyo.Tts&version=1.0.9
#tool nuget:?package=Lyo.Tts&version=1.0.9
Lyo.Tts
Contracts and shared TTS behavior: provider-agnostic interfaces, a non-generic facade, and a base service with bulk synthesis, metrics, and lifecycle events.
Target frameworks: netstandard2.0;net10.0
Contracts
| Interface | Methods |
|---|---|
ITtsService |
Non-generic facade. Task<TtsSynthesisResult> SynthesizeAsync(string text, string? voiceId = null, CancellationToken ct = default). |
ITtsService<TRequest> where TRequest : TtsRequest |
Typed methods: string overload, fully typed request, write-to-file, write-to-stream, bulk, TestConnectionAsync. |
ITtsService is intentionally tiny. Host code that only needs string-in, audio-bytes-out depends on
it without caring which provider is registered. Provider packages ship a small *TtsAppService adapter
(holding the typed service) and register ITtsService via that adapter alongside ITtsService<TRequest>.
Provider DI matrix
| Provider package | ITtsService<TRequest> |
ITtsService (non-generic) |
App-service adapter | DI entry points |
|---|---|---|---|---|
Lyo.Tts.AwsPolly |
ITtsService<AwsPollyTtsRequest> |
(via AwsPollyTtsAppService) |
AwsPollyTtsAppService |
AddAwsPollyTtsService(Action<AwsPollyOptions>), AddAwsPollyTtsServiceFromConfiguration(IConfiguration, string?), AddAmazonPollyFromConfiguration(IConfiguration, string?) |
Lyo.Tts.Typecast |
ITtsService<TypecastTtsRequest> |
(via TypecastTtsAppService) |
TypecastTtsAppService |
AddTypecastTtsService(Action<TypecastOptions>?), AddTypecastTtsServiceFromConfiguration(IConfiguration, string?) (requires TypecastClient to be registered first) |
Lyo.Tts.WindowsSpeech |
ITtsService<WindowsTtsRequest> |
No WindowsSpeechTtsAppService ships yet |
(none) | AddWindowsSpeechTtsService(Action<TtsServiceOptions>?), AddWindowsSpeechTtsService(TtsServiceOptions) |
AwsPolly and Typecast register both ITtsService<TRequest> and the non-generic ITtsService. The
non-generic interface is backed by the *TtsAppService adapter so the same singleton handles both calls.
WindowsSpeech currently registers only the typed interface. Code that depends on the non-generic
ITtsService will not resolve when WindowsSpeech is the only TTS provider registered.
Request types
AwsPollyTtsRequest. Polly voice, engine, sample rate, output format, and related fields.TypecastTtsRequest. Model id, voice id, language, format, prosody.WindowsTtsRequest. Voice id,Volume,SpeechRate, optionalOutputFormat(WAV output is enforced by SAPI regardless).
Base class (TtsServiceBase<TRequest>)
Task<TtsResult<TRequest>> SynthesizeAsync(string text, string? voiceId = null, CancellationToken ct = default)Task<TtsResult<TRequest>> SynthesizeCoreAsync(TRequest request, CancellationToken ct = default)Task<bool> TestConnectionAsync(CancellationToken ct = default)
Error codes (TtsErrorCodes)
| Constant | Value |
|---|---|
SynthesizeFailed |
TTS_SYNTHESIZE_FAILED |
OperationCancelled |
TTS_OPERATION_CANCELLED |
FileWriteFailed |
TTS_FILE_WRITE_FAILED |
StreamWriteFailed |
TTS_STREAM_WRITE_FAILED |
Default metric keys (Lyo.Tts.Constants.Metrics)
| Constant key | Metric | Kind |
|---|---|---|
SynthesizeDuration |
tts.synthesize.duration |
Timer |
SynthesizeSuccess |
tts.synthesize.success |
Counter |
SynthesizeFailure |
tts.synthesize.failure |
Counter |
BulkSynthesizeDuration |
tts.bulk.synthesize.duration |
Timer |
BulkSynthesizeTotal |
tts.bulk.synthesize.total |
Counter |
BulkSynthesizeSuccess |
tts.bulk.synthesize.success |
Counter |
BulkSynthesizeFailure |
tts.bulk.synthesize.failure |
Counter |
BulkSynthesizeLastDurationMs |
tts.bulk.synthesize.last_duration_ms |
Gauge |
Providers typically remap these to a namespaced prefix (tts.awspolly.*, tts.typecast.*,
tts.windowsspeech.*).
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Exceptions(direct, lyo)Lyo.Metrics(direct, lyo)Lyo.Tts.Models(direct, lyo)Microsoft.Extensions.Logging.Abstractions10.0.5(direct, microsoft)Lyo.Common(transitive, lyo)Lyo.Result(transitive, lyo)Microsoft.Extensions.DependencyInjection.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 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. |
| .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.Exceptions (>= 1.0.9)
- Lyo.Metrics (>= 1.0.9)
- Lyo.Tts.Models (>= 1.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
-
net10.0
- Lyo.Exceptions (>= 1.0.9)
- Lyo.Metrics (>= 1.0.9)
- Lyo.Tts.Models (>= 1.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Lyo.Tts:
| Package | Downloads |
|---|---|
|
Lyo.Tts.AwsPolly
AWS Polly Text-to-Speech service implementation for converting text to speech using Amazon Polly. |
|
|
Lyo.Tts.Typecast
Typecast Text-to-Speech service implementation for converting text to speech using Typecast API. |
|
|
Lyo.Tts.WindowsSpeech
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.