1、使用DotNetSpeech.dll。
/// <summary>
///
朗讀
/// </summary>
/// <param name="text"> 要朗讀的文本 </param>
private void Read( string text)
{
SpVoice sv = new SpVoice();
sv.Rate = 0 ; // 設置朗讀速度
SpeechVoiceSpeakFlags SSF = SpeechVoiceSpeakFlags.SVSFlagsAsync;
sv.Speak(text, SSF);
}
/// <summary>
/// 生成聲音文件
/// </summary>
/// <param name="text"> 要朗讀的文本 </param>
/// <param name="filePath"> 生成聲音文件的路徑 </param>
/// <param name="fileName"> 生成聲音文件的名稱 </param>
private void CreateFile( string text, string filePath, string fileName)
{
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
SpVoice sv = new SpVoice();
SpeechVoiceSpeakFlags SVSF = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpeechStreamFileMode SSFM = SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream SFS = new SpFileStream();
SFS.Open(filePath+fileName, SSFM, false );
sv.AudioOutputStream = SFS;
sv.Speak(text, SVSF);
sv.WaitUntilDone(System.Threading.Timeout.Infinite);
SFS.Close();
}
/// </summary>
/// <param name="text"> 要朗讀的文本 </param>
private void Read( string text)
{
SpVoice sv = new SpVoice();
sv.Rate = 0 ; // 設置朗讀速度
SpeechVoiceSpeakFlags SSF = SpeechVoiceSpeakFlags.SVSFlagsAsync;
sv.Speak(text, SSF);
}
/// <summary>
/// 生成聲音文件
/// </summary>
/// <param name="text"> 要朗讀的文本 </param>
/// <param name="filePath"> 生成聲音文件的路徑 </param>
/// <param name="fileName"> 生成聲音文件的名稱 </param>
private void CreateFile( string text, string filePath, string fileName)
{
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
SpVoice sv = new SpVoice();
SpeechVoiceSpeakFlags SVSF = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpeechStreamFileMode SSFM = SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream SFS = new SpFileStream();
SFS.Open(filePath+fileName, SSFM, false );
sv.AudioOutputStream = SFS;
sv.Speak(text, SVSF);
sv.WaitUntilDone(System.Threading.Timeout.Infinite);
SFS.Close();
}
2、 使用System.Speech
SpeechSynthesizer ss = new SpeechSynthesizer();// 播放
if (ss != null )
{
ss.Dispose();
ss.SpeakAsync( " 朗讀的文本 " );
}
// 暫停
if (ss.State == SynthesizerState.Speaking)
{
ss.Pause();
}
// 繼續
if (reader.State == SynthesizerState.Paused)
{
ss.Resume();
}
// 停止
if (ss != null )
{
ss.Dispose();
}