SpeechSynthesizer SpeechSynthesizer SpeechSynthesizer SpeechSynthesizer SpeechSynthesizer Class

Definition

Provides access to the functionality of an installed speech synthesis engine (voice).

Windows includes Microsoft-signed voices that can be used for a variety of languages. Each voice generates synthesized speech in a single language, as spoken in a specific country/region.

Only Microsoft-signed voices installed on the system can be used to generate speech. If no language is specified, the voice that most closely matches the language selected by the user in the Language control panel is loaded.

public : sealed class SpeechSynthesizer : IClosable, ISpeechSynthesizer, ISpeechSynthesizer2
struct winrt::Windows::Media::SpeechSynthesis::SpeechSynthesizer : IClosable, ISpeechSynthesizer, ISpeechSynthesizer2
public sealed class SpeechSynthesizer : IDisposable, ISpeechSynthesizer, ISpeechSynthesizer2
Public NotInheritable Class SpeechSynthesizer Implements IDisposable, ISpeechSynthesizer, ISpeechSynthesizer2
var speechSynthesizer = new speechSynthesizer();
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Examples

Your UWP app can use a SpeechSynthesizer object to create an audio stream and output speech based on a plain text string.


// The object for controlling and playing audio.
var audio = new Audio();

// The object for controlling the speech synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.
synth.synthesizeTextToStreamAsync("hello World").then(function (markersStream) {

    // Convert the stream to a URL Blob.
    var blob = MSApp.createBlobFromRandomAccessStream(markersStream.ContentType, markersStream);

    // Send the Blob to the audio object.
    audio.src = URL.createObjectURL(blob, { oneTimeOnly: true });
    audio.play();
});
// The media object for controlling and playing audio.
MediaElement mediaElement = this.media;

// The object for controlling the speech synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.
SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync("Hello World");

// Send the stream to the media object.
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();
// The object for controlling the speech synthesis engine (voice).
synth = ref new SpeechSynthesizer();
// The media object for controlling and playing audio.
media = ref new MediaElement();
// The string to speak.
String^ text = "Hello World";

// Generate the audio stream from plain text.
task<SpeechSynthesisStream ^> speakTask = create_task(synth->SynthesizeTextToStreamAsync(text));
speakTask.then([this, text](SpeechSynthesisStream ^speechStream)
{
	// Send the stream to the media object.
	// media === MediaElement XAML object.
	media->SetSource(speechStream, speechStream->ContentType);
	media->AutoPlay = true;
	media->Play();
});

// The string to speak with SSML customizations.
var Ssml = "<speak version='1.0' " +
    "xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" +
    "Hello <prosody contour='(0%,+80Hz) (10%,+80%) (40%,+80Hz)'>World</prosody> " + 
    "<break time='500ms'/>" +
    "Goodbye <prosody rate='slow' contour='(0%,+20Hz) (10%,+30%) (40%,+10Hz)'>World</prosody>" +
    "</speak>";

// The object for controlling and playing audio.
var audio = new Audio();

// The object for controlling the speech synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.
synth.synthesizeSsmlToStreamAsync(Ssml).then(function(synthesisStream){

    // Convert the stream to a URL Blob.
    var blob = MSApp.createBlobFromRandomAccessStream(synthesisStream.ContentType, synthesisStream);

    // Send the Blob to the audio object.
    audio.src = URL.createObjectURL(blob, { oneTimeOnly: true });
    audio.play();
});
// The string to speak with SSML customizations.
string Ssml =
    @"<speak version='1.0' " +
    "xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>" +
    "Hello <prosody contour='(0%,+80Hz) (10%,+80%) (40%,+80Hz)'>World</prosody> " + 
    "<break time='500ms'/>" +
    "Goodbye <prosody rate='slow' contour='(0%,+20Hz) (10%,+30%) (40%,+10Hz)'>World</prosody>" +
    "</speak>";

// The media object for controlling and playing audio.
MediaElement mediaElement = this.media;

// The object for controlling the speech synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

// Generate the audio stream from plain text.
SpeechSynthesisStream stream = await synth.synthesizeSsmlToStreamAsync(Ssml);

// Send the stream to the media object.
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();
// The object for controlling the speech synthesis engine (voice).
synth = ref new SpeechSynthesizer();
// The media object for controlling and playing audio.
media = ref new MediaElement();
// The string to speak.
String^ ssml =
	"<speak version='1.0' "
	"xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>"
	"Hello <prosody contour='(0%,+80Hz) (10%,+80%) (40%,+80Hz)'>World</prosody>"
	"<break time='500ms' /> "
	"Goodbye <prosody rate='slow' contour='(0%,+20Hz) (10%,+30%) (40%,+10Hz)'>World</prosody>"
	"</speak>";

// Generate the audio stream from SSML.
task<SpeechSynthesisStream ^> speakTask = create_task(synth->SynthesizeSsmlToStreamAsync(ssml));
speakTask.then([this, ssml](SpeechSynthesisStream ^speechStream)
{
	// Send the stream to the media object.
	// media === MediaElement XAML object.
	media->SetSource(speechStream, speechStream->ContentType);
	media->AutoPlay = true;
	media->Play();
});

Constructors

SpeechSynthesizer() SpeechSynthesizer() SpeechSynthesizer() SpeechSynthesizer() SpeechSynthesizer()

Initializes a new instance of a SpeechSynthesizer object.

Properties

AllVoices AllVoices AllVoices AllVoices AllVoices

Gets a collection of all installed speech synthesis engines (voices).

DefaultVoice DefaultVoice DefaultVoice DefaultVoice DefaultVoice

Gets the default speech synthesis engine (voice).

Options Options Options Options Options

Gets a reference to the collection of options that can be set on the SpeechSynthesizer object.

Voice Voice Voice Voice Voice

Gets or sets the speech synthesis engine (voice).

Methods

Close() Close() Close() Close() Close()

Closes the SpeechSynthesizer and releases system resources.

Dispose() Dispose() Dispose() Dispose() Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

SynthesizeSsmlToStreamAsync(String) SynthesizeSsmlToStreamAsync(String) SynthesizeSsmlToStreamAsync(String) SynthesizeSsmlToStreamAsync(String) SynthesizeSsmlToStreamAsync(String)

Asynchronously generate speech output from a string containing Speech Synthesis Markup Language (SSML).

SynthesizeTextToStreamAsync(String) SynthesizeTextToStreamAsync(String) SynthesizeTextToStreamAsync(String) SynthesizeTextToStreamAsync(String) SynthesizeTextToStreamAsync(String)

Asynchronously generate speech output from a string.

TrySetDefaultVoiceAsync(VoiceInformation) TrySetDefaultVoiceAsync(VoiceInformation) TrySetDefaultVoiceAsync(VoiceInformation) TrySetDefaultVoiceAsync(VoiceInformation) TrySetDefaultVoiceAsync(VoiceInformation)

Asynchronously attempts to set the voice used for speech synthesis on an IoT device.

Note

This method is available only in Embedded mode.

See Also