SpeechSynthesizer.SpeakAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
以非同步方式從字串、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)
以非同步方式讀出 Prompt 物件的內容。
public:
void SpeakAsync(System::Speech::Synthesis::Prompt ^ prompt);
public void SpeakAsync (System.Speech.Synthesis.Prompt prompt);
member this.SpeakAsync : System.Speech.Synthesis.Prompt -> unit
Public Sub SpeakAsync (prompt As Prompt)
參數
- prompt
- Prompt
要讀出的內容。
範例
下列範例會 Prompt 從字串建立 物件,並將 物件當做引數傳遞至 SpeakAsync 方法。
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) 例外狀況。
適用於
SpeakAsync(PromptBuilder)
以非同步方式讀出 PromptBuilder 物件的內容。
public:
System::Speech::Synthesis::Prompt ^ SpeakAsync(System::Speech::Synthesis::PromptBuilder ^ promptBuilder);
public System.Speech.Synthesis.Prompt SpeakAsync (System.Speech.Synthesis.PromptBuilder promptBuilder);
member this.SpeakAsync : System.Speech.Synthesis.PromptBuilder -> System.Speech.Synthesis.Prompt
Public Function SpeakAsync (promptBuilder As PromptBuilder) As Prompt
參數
- promptBuilder
- PromptBuilder
要讀出的內容。
傳回
物件,包含要讀出的內容。
範例
下列範例會 PromptBuilder 從字串建立 物件,並將 物件當做引數傳遞至 SpeakAsync 方法。
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 。
適用於
SpeakAsync(String)
以非同步方式讀出字串的內容。
public:
System::Speech::Synthesis::Prompt ^ SpeakAsync(System::String ^ textToSpeak);
public System.Speech.Synthesis.Prompt SpeakAsync (string textToSpeak);
member this.SpeakAsync : string -> System.Speech.Synthesis.Prompt
Public Function SpeakAsync (textToSpeak As String) As Prompt
參數
- textToSpeak
- String
要讀出的文字。
傳回
物件,包含要讀出的內容。
範例
如下列範例所示, SpeakAsync 方法提供以非同步方式產生語音輸出的最簡單方法。
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) 例外狀況。