次の方法で共有


SpeechSynthesizer クラス

定義

テキスト読み上げ (TTS) サービス用にインストールされている音声合成エンジン (音声) の機能へのアクセスを提供します。

public ref class SpeechSynthesizer sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class SpeechSynthesizer final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class SpeechSynthesizer final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class SpeechSynthesizer : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class SpeechSynthesizer : System.IDisposable
function SpeechSynthesizer()
Public NotInheritable Class SpeechSynthesizer
Implements IDisposable
継承
Object Platform::Object IInspectable SpeechSynthesizer
属性
実装

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

次の例は、基本的なテキスト文字列から音声オーディオ ストリームを生成する方法を示しています。

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

この例では、SSML 文字列から音声オーディオ ストリームを生成する方法を示します。これには、音声出力のピッチ、読み上げ速度、ボリュームを制御するいくつかのモジュレーション要素が含まれています。

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

注釈

システムにインストールされている Microsoft 署名付き音声のみを使用して音声を生成できます。

Windows には、さまざまな言語に使用できるさまざまな Microsoft 署名付き音声が含まれています。 各音声は、特定の国/地域で話されているように、1 つの言語で合成された音声を生成します。

既定では、新しい SpeechSynthesizer オブジェクトは現在のシステム音声を使用します ( DefaultVoice を呼び出して、既定の音声が何であるかを確認します)。

ユーザーのシステムにインストールされている他の音声合成 (テキスト読み上げ) 音声のいずれかを指定するには、 Voice メソッドを使用します (システムにインストールされている 音声 を確認するには、 AllVoices を呼び出します)。

言語を指定しない場合は、[言語] コントロール パネルで選択した言語に最も近い音声が読み込まれます。

SpeechSynthesizer オブジェクトを使用して、次の手順を実行します。

バージョン履歴

Windows のバージョン SDK バージョン 追加された値
1703 15063 オプション
1709 16299 TrySetDefaultVoiceAsync

コンストラクター

SpeechSynthesizer()

SpeechSynthesizer オブジェクトの新しいインスタンスを初期化します。

プロパティ

AllVoices

インストールされているすべての音声合成エンジン (音声) のコレクションを取得します。

DefaultVoice

既定の音声合成エンジン (音声) を取得します。

Options

SpeechSynthesizer オブジェクトで設定できるオプションのコレクションへの参照を取得します。

Voice

音声合成エンジン (音声) を取得または設定します。

メソッド

Close()

SpeechSynthesizer を閉じ、システム リソースを解放します。

Dispose()

アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

SynthesizeSsmlToStreamAsync(String)

音声 合成マークアップ言語 (SSML) バージョン 1.1 の文字列から音声出力を非同期的に生成および制御します。

SynthesizeTextToStreamAsync(String)

文字列から音声出力を非同期的に生成します。

TrySetDefaultVoiceAsync(VoiceInformation)

IoT デバイスでの音声合成に使用される音声の設定を非同期的に試みます。

注意

このメソッドは 、埋め込みモードでのみ使用できます。

適用対象

こちらもご覧ください