SayIt 1.0.6
dotnet add package SayIt --version 1.0.6
NuGet\Install-Package SayIt -Version 1.0.6
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="SayIt" Version="1.0.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SayIt" Version="1.0.6" />
<PackageReference Include="SayIt" />
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 SayIt --version 1.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SayIt, 1.0.6"
#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 SayIt@1.0.6
#: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=SayIt&version=1.0.6
#tool nuget:?package=SayIt&version=1.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SayIt
Zero-dependency .NET text-to-speech SDK powered by Microsoft Edge's free online voices. No API keys, no registration, no external dependencies.
dotnet add package SayIt
🚀 Quick Start
using SayIt;
// One line — text to file
await SayIt.SaveAsync("你好世界", "hello.mp3");
// Text to audio stream
await using var audio = await SayIt.StreamAsync("Hello world");
// Specify voice
await SayIt.SaveAsync("Bonjour", "greeting.mp3",
new SayItConfig().WithVoice("fr-FR-DeniseNeural"));
✨ Features
- Zero configuration — no API keys, no sign-up, no account
- Zero external dependencies — only uses
System.Net.WebSocketsandSystem.Text.Json - 400+ neural voices across 100+ languages
- Cross-platform — .NET Standard 2.1
- Streaming — output to file, stream, or pipe
- Streaming input — feed text as
IAsyncEnumerable<string>(e.g. LLM tokens) - Adjustable — control rate, pitch, volume, output format
📖 API
⚡ Static API (one-liners)
| Method | Description |
|---|---|
SayIt.SaveAsync(text, path, config?, ct?) |
Synthesize text to audio file |
SayIt.StreamAsync(text, config?, ct?) |
Synthesize text to audio Stream |
SayIt.StreamAsync(IAsyncEnumerable<string>, config?, ct?) |
Stream text chunks → audio stream |
SayIt.ListVoicesAsync(ct?) |
List all available voices |
🔧 Instance API (reusable config)
var speaker = new SayItSpeaker(
new SayItConfig()
.WithVoice("en-US-JennyNeural")
.WithRate("+20%")
.WithPitch("-2st"));
await speaker.SaveAsync("Hello", "hello.mp3");
await speaker.SaveAsync("World", "world.mp3");
await speaker.StreamToAsync("Hi", httpResponse.Body);
await foreach (var chunk in speaker.StreamChunksAsync("Hi"))
// process chunk
⚙️ Configuration
var config = new SayItConfig()
.WithVoice("zh-CN-XiaoxiaoNeural") // Voice name
.WithRate("+30%") // Speech rate
.WithPitch("-4st") // Voice pitch
.WithVolume("150%") // Volume
.WithFormat(OutputFormat.Webm_24Khz_16Bit_Opus)
.WithTimeout(60); // Timeout in seconds
🎵 Output Formats
OutputFormat.Mp3_24Khz_96Kbps(default)OutputFormat.Mp3_24Khz_48KbpsOutputFormat.Mp3_48Khz_96KbpsOutputFormat.Webm_24Khz_16Bit_OpusOutputFormat.Pcm_16Khz_16Bit/Pcm_24Khz_16Bit/Pcm_48Khz_16BitOutputFormat.Wav_16Khz_16Bit/Wav_24Khz_16Bit/Wav_48Khz_16Bit
📁 Samples
| Sample | Description |
|---|---|
SayIt.Samples.File |
Basic text → file |
SayIt.Samples.Stream |
Text → audio stream |
SayIt.Samples.StreamingInput |
IAsyncEnumerable<string> → audio |
SayIt.Samples.VoiceList |
Query and filter voices |
SayIt.Samples.AdvancedConfig |
Rate/pitch/volume presets |
SayIt.Samples.Batch |
Concurrent batch synthesis |
SayIt.Samples.Playback |
Play audio with NAudio (external) |
🔍 How It Works
SayIt uses the same WebSocket API that powers Microsoft Edge's "Read Aloud" feature.
It connects to speech.platform.bing.com with an Edge-emulated User-Agent, sends SSML,
and receives MP3 audio chunks in real time. No Azure subscription or API key required.
License
| 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- System.Text.Json (>= 8.0.5)
- System.Threading.Tasks.Extensions (>= 4.5.4)
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.0.6 | 74 | 5/15/2026 |