SpeechSynthesizer.SpeakAsync 方法

定義

以非同步方式從字串、Prompt 物件或 PromptBuilder 物件產生語音輸出。

多載

SpeakAsync(Prompt)

以非同步方式讀出 Prompt 物件的內容。

SpeakAsync(PromptBuilder)

以非同步方式讀出 PromptBuilder 物件的內容。

SpeakAsync(String)

以非同步方式讀出字串的內容。

備註

方法 SpeakAsync 會以非同步方式產生語音。 方法會立即傳回,而不需要等候物件的內容 SpeakAsync 完成說話。 如果您的應用程式需要在說話時執行工作,例如醒目提示文字、繪製動畫、監視控制項或其他工作,請使用 SpeakAsync

在呼叫這個方法期間, SpeechSynthesizer 可以引發下列事件:

  • StateChanged. 當合成器的說話狀態變更時引發。

  • SpeakStarted. 合成器開始產生語音時引發。

  • PhonemeReached. 每次合成器到達字母或字母組合時引發,這些字母會構成語言中的不離散語音音效。

  • SpeakProgress. 每次合成器完成說出單字時引發。

  • VisemeReached. 每次說出輸出都需要變更口氣的位置,或用來產生語音的臉部神經。

  • BookmarkReached. 當合成器在提示中遇到書簽時引發。

  • VoiceChange. 當合成器的說話語音變更時引發。

  • SpeakCompleted. 合成器完成作業時引發 SpeakAsync

如果您的應用程式不需要在說話時執行工作,您可以使用 Speak 方法或 SpeakSsml 方法來同步產生語音。

SpeakAsync(Prompt)

來源:
SpeechSynthesizer.cs
來源:
SpeechSynthesizer.cs
來源:
SpeechSynthesizer.cs

以非同步方式讀出 Prompt 物件的內容。

C#
public void SpeakAsync(System.Speech.Synthesis.Prompt prompt);

參數

prompt
Prompt

要讀出的內容。

範例

下列範例會 Prompt 從字串建立 物件,並將 物件當做引數傳遞至 SpeakAsync 方法。

C#
using System;
using System.Speech.Synthesis;

namespace SampleSynthesis
{
  class Program
  {
    static void Main(string[] args)
    {

      // Initialize a new instance of the SpeechSynthesizer.
      SpeechSynthesizer synth = new SpeechSynthesizer();

      // Configure the audio output.
      synth.SetOutputToDefaultAudioDevice();

      // Create a prompt from a string.
      Prompt color = new Prompt("What is your favorite color?");

      // Speak the contents of the prompt asynchronously.
      synth.SpeakAsync(color);

      Console.WriteLine();
      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }
  }
}

備註

您可以使用 或 SpeakAsyncCancelAll 方法取消提示 SpeakAsyncCancel 的非同步說話。

若要以同步方式讀出 物件的內容 Prompt ,請使用 Speak

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用例外狀況,例如 ArgumentException 仍會同步擲回。 如需預存例外狀況,請參閱 擲回的 Speak(Prompt) 例外狀況。

適用於

.NET 10 (package-provided) 及其他版本
產品 版本
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

SpeakAsync(PromptBuilder)

來源:
SpeechSynthesizer.cs
來源:
SpeechSynthesizer.cs
來源:
SpeechSynthesizer.cs

以非同步方式讀出 PromptBuilder 物件的內容。

C#
public System.Speech.Synthesis.Prompt SpeakAsync(System.Speech.Synthesis.PromptBuilder promptBuilder);

參數

promptBuilder
PromptBuilder

要讀出的內容。

傳回

物件,包含要讀出的內容。

範例

下列範例會 PromptBuilder 從字串建立 物件,並將 物件當做引數傳遞至 SpeakAsync 方法。

C#
using System;
using System.Speech.Synthesis;

namespace SampleSynthesis
{
  class Program
  {
    static void Main(string[] args)
    {

      // Initialize a new instance of the SpeechSynthesizer.
      SpeechSynthesizer synth = new SpeechSynthesizer();

      // Configure the audio output.
      synth.SetOutputToDefaultAudioDevice();

      // Create a PromptBuilder object and append a text string.
      PromptBuilder song = new PromptBuilder();
      song.AppendText("Say the name of the song you want to hear");

      // Speak the contents of the prompt asynchronously.
      synth.SpeakAsync(song);

      Console.WriteLine();
      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }
  }
}

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用例外狀況,例如 ArgumentException 仍會同步擲回。 如需預存例外狀況,請參閱 擲回的 Speak(PromptBuilder) 例外狀況。

備註

若要以同步方式讀出 物件的內容 PromptBuilder ,請使用 Speak

適用於

.NET 10 (package-provided) 及其他版本
產品 版本
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

SpeakAsync(String)

來源:
SpeechSynthesizer.cs
來源:
SpeechSynthesizer.cs
來源:
SpeechSynthesizer.cs

以非同步方式讀出字串的內容。

C#
public System.Speech.Synthesis.Prompt SpeakAsync(string textToSpeak);

參數

textToSpeak
String

要讀出的文字。

傳回

物件,包含要讀出的內容。

範例

如下列範例所示, SpeakAsync 方法提供以非同步方式產生語音輸出的最簡單方法。

C#
using System;
using System.Speech.Synthesis;

namespace SampleSynthesis
{
  class Program
  {
    static void Main(string[] args)
    {

      // Initialize a new instance of the SpeechSynthesizer.
      SpeechSynthesizer synth = new SpeechSynthesizer();

      // Configure the audio output.
      synth.SetOutputToDefaultAudioDevice();

      // Speak a string asynchronously.
      synth.SpeakAsync("What is your favorite color?");

      Console.WriteLine();
      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }
  }
}

備註

若要以非同步方式讀出包含 SSML 標記的 SpeakSsmlAsync 字串,請使用 方法。 若要以同步方式讀出字串的內容,請使用 Speak 方法。 您可以使用 或 SpeakAsyncCancelAll 方法取消提示 SpeakAsyncCancel 的非同步說話。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用例外狀況,例如 ArgumentException 仍會同步擲回。 如需預存例外狀況,請參閱 擲回的 Speak(String) 例外狀況。

另請參閱

適用於

.NET 10 (package-provided) 及其他版本
產品 版本
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)