Speech​Synthesizer Speech​Synthesizer Speech​Synthesizer Class

Definition

Some information relates to pre-released product which may be substantially modified before it’s commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Prerelease APIs are identified by a Prerelease label.

Prerelease. 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, ISpeechSynthesizer2public sealed class SpeechSynthesizer : IDisposable, ISpeechSynthesizer, ISpeechSynthesizer2Public NotInheritable Class SpeechSynthesizer Implements IDisposable, ISpeechSynthesizer, ISpeechSynthesizer2
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Examples

Your Windows Store 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()

Initializes a new instance of a SpeechSynthesizer object.

public : SpeechSynthesizer()public SpeechSynthesizer()Public Sub New()
Attributes
See Also

Properties

AllVoices AllVoices AllVoices

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

public : static IVectorView<VoiceInformation> AllVoices { get; }public static IReadOnlyList<VoiceInformation> AllVoices { get; }Public Static ReadOnly Property AllVoices As IReadOnlyList<VoiceInformation>
Value
IVectorView<VoiceInformation> IReadOnlyList<VoiceInformation> IReadOnlyList<VoiceInformation>

All installed voices.

Attributes
See Also

DefaultVoice DefaultVoice DefaultVoice

Gets the default speech synthesis engine (voice).

public : static VoiceInformation DefaultVoice { get; }public static VoiceInformation DefaultVoice { get; }Public Static ReadOnly Property DefaultVoice As VoiceInformation
Value
VoiceInformation VoiceInformation VoiceInformation

A voice based on language settings and installed voices.

Attributes
See Also

Options Options Options

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

public : SpeechSynthesizerOptions Options { get; }public SpeechSynthesizerOptions Options { get; }Public ReadOnly Property Options As SpeechSynthesizerOptions
Attributes
Additional features and requirements
Device family
Windows 10 Creators Update (introduced v10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v4)

Voice Voice Voice

Gets or sets the speech synthesis engine (voice).

public : VoiceInformation Voice { get; set; }public VoiceInformation Voice { get; set; }Public ReadWrite Property Voice As VoiceInformation
Value
VoiceInformation VoiceInformation VoiceInformation

A speech synthesis engine (voice). The default value is the system voice.

Attributes

Remarks

Only Microsoft-signed voices can be used by SpeechSynthesizer. Here is a list of Microsoft-signed voices provided with Windows.

VoiceGenderWindows 8Windows 8.1NameDisplay name
English USFemaleYYZiraMicrosoft Zira (en-US, female).
English USMaleYYDavidMicrosoft David (en-US, male)
English GBFemaleYYHazelMicrosoft Hazel (en-GB, female)
French FRFemaleYYHortenseMicrosoft Hortense (fr-FR , female)
German DEFemaleYYHeddaMicrosoft Hedda (de-DE, female)
Spanish ESFemaleYYHelenaMicrosoft Helena (es-ES, female)
Chinese PRCFemaleYYHuihuiMicrosoft Huihui (zh-CN, female)
Chinese TWFemaleYYHanhanMicrosoft Hanhan (zh-TW, female)
Japanese JAFemaleYYHarukaMicrosoft Haruka (ja-JP, female)
Korean KRFemaleYYHeamiMicrosoft Heami (ko-KR, female)
Spanish MXFemaleNYSabinaMicrosoft Sabina (es-MX, female)
Italian ITFemaleNYElsaMicrosoft Elsa (it-IT, female)
English INFemaleNYHeeraMicrosoft Heera (en-IN, female)
Russian RUFemaleNYIrinaMicrosoft Irina (ru-RU, female)
Chinese HKFemaleNYTracyMicrosoft Tracy (zh-HK, female)
Polish PLFemaleNYPaulinaMicrosoft Paulina (pl-PL, female)
Portuguese BRFemaleNYMariaMicrosoft Maria (pt-BR, female)
See Also

Methods

Close() Close() Close()

Closes the SpeechSynthesizer and releases system resources.

public : void Close()This member is not implemented in C#This member is not implemented in VB.Net
Attributes
See Also

Dispose() Dispose() Dispose()

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

This member is not implemented in C++void Dispose()Sub Dispose
Attributes

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

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

public : IAsyncOperation<SpeechSynthesisStream> SynthesizeSsmlToStreamAsync(PlatForm::String Ssml)public IAsyncOperation<SpeechSynthesisStream> SynthesizeSsmlToStreamAsync(String Ssml)Public Function SynthesizeSsmlToStreamAsync(Ssml As String) As IAsyncOperation( Of SpeechSynthesisStream )
Parameters
Ssml
PlatForm::String String String

The SSML-modified text to speak.

Returns
Attributes
See Also

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

Asynchronously generate speech output from a string.

public : IAsyncOperation<SpeechSynthesisStream> SynthesizeTextToStreamAsync(PlatForm::String text)public IAsyncOperation<SpeechSynthesisStream> SynthesizeTextToStreamAsync(String text)Public Function SynthesizeTextToStreamAsync(text As String) As IAsyncOperation( Of SpeechSynthesisStream )
Parameters
text
PlatForm::String String String

The text to speak.

Returns
Attributes
See Also

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

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

Note

This method is available only in Embedded mode.

public : static IAsyncOperation<PlatForm::Boolean> TrySetDefaultVoiceAsync(VoiceInformation voice)public static IAsyncOperation<bool> TrySetDefaultVoiceAsync(VoiceInformation voice)Public Static Function TrySetDefaultVoiceAsync(voice As VoiceInformation) As IAsyncOperation( Of bool )
Parameters
voice
VoiceInformation VoiceInformation VoiceInformation

One of the installed speech synthesis engines (voices).

Returns
IAsyncOperation<PlatForm::Boolean> IAsyncOperation<bool> IAsyncOperation<bool>

An asynchronous operation that returns true if the set operation was a success. Otherwise, returns false.

Attributes
Additional features and requirements
Device family
Windows 10 Insider Preview (introduced v10.0.16225.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v5)

Remarks

Your app must declare the systemManagement capability, which lets apps access basic system administration privileges including locale, timezone, shut down, and reboot.

The systemManagement capability must include the iot namespace when you declare it in your app's package manifest.

<Capabilities><iot:Capability Name="systemManagement"/></Capabilities>

Use Windows.Globalization.ApplicationLanguages.Languages to get the ranked list of current runtime language values preferred by the user.

See Also

See Also