SpeechSynthesizer SpeechSynthesizer SpeechSynthesizer SpeechSynthesizer SpeechSynthesizer Class

Definition

Provides access to the functionality of an installed speech synthesis engine (voice) for Text-to-speech (TTS) services.

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

The following example shows how to generate a speech audio stream from a basic 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();
});

This example shows how to generate a speech audio stream from an SSML string, which includes some modulation elements that control the pitch, speaking rate, and volume of the speech output.

// 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();
});

Remarks

Only Microsoft-signed voices installed on the system can be used to generate speech.

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

By default, a new SpeechSynthesizer object uses the current system voice (call DefaultVoice to find out what the default voice is).

To specify any of the other speech synthesis (text-to-speech) voices installed on the user's system, use the Voice method (to find out which voices are installed on the system, call AllVoices ).

If you don't specify a language, the voice that most closely corresponds to the language selected in the Language control panel is loaded.

Use a SpeechSynthesizer object to:

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 and control speech output from a Speech Synthesis Markup Language (SSML) Version 1.1 string.

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