1.生成声音文件
DotNetSpeech.SpeechVoiceSpeakFlags SSF = DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync;
DotNetSpeech.SpVoice vo = new SpVoiceClass(); System.Windows.Forms.SaveFileDialog SFD = new System.Windows.Forms.SaveFileDialog(); SFD.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav"; SFD.Title = "Save to a wav file"; SFD.FilterIndex = 2; SFD.RestoreDirectory = true; if(SFD.ShowDialog()==System.Windows.Forms.DialogResult.OK) { DotNetSpeech.SpeechStreamFileMode SSFM = DotNetSpeech.SpeechStreamFileMode.SSFMCreateForWrite; DotNetSpeech.SpFileStream SFS = new DotNetSpeech.SpFileStreamClass(); SFS.Open(SFD.FileName,SSFM,false); vo.AudioOutputStream = SFS; vo.Speak(this.textBox1.Text,SSF); vo.WaitUntilDone(System.Threading.Timeout.Infinite); SFS.Close();2.朗读
DotNetSpeech.SpeechVoiceSpeakFlags SSF = DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync;
DotNetSpeech.SpVoice vo = new SpVoiceClass(); vo.Speak(this.textBox1.Text,SSF);
3.
/// /// 朗读/// /// 要朗读的文本private void Read(string text){ SpVoice sv = new SpVoice(); sv.Rate = 0;//设置朗读速度 SpeechVoiceSpeakFlags SSF = SpeechVoiceSpeakFlags.SVSFlagsAsync; sv.Speak(text, SSF);}/// /// 生成声音文件/// /// 要朗读的文本/// 生成声音文件的路径/// 生成声音文件的名称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.SpeechSpeechSynthesizer 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();}
4.
using System;using System.Collections.Generic;using System.Text;using DotNetSpeech;using System.Threading;using System.IO;namespace SpVoiceDemo{ class SpVoiceUtil { SpVoice voice = new DotNetSpeech.SpVoiceClass(); public delegate void CallBack(bool b,int InputWordPosition, int InputWordLength); ////// 朗读文本 /// /// 要朗读的文本 /// 回调地址 ///返回bool public bool Speak(string str, CallBack CallBack) { int n = voice.Speak(str, SpeechVoiceSpeakFlags.SVSFlagsAsync); Thread thread = new Thread(new ParameterizedThreadStart(Call)); thread.IsBackground = true; thread.Start((Object)CallBack); return !(n!=1); } ////// 回调函数线程子程序 /// /// private void Call(Object callBack) { int InputWordLength = 0; //局部_朗读长度 int InputWordPosition = 0; //局部_朗读位置 CallBack CallBack = (CallBack)callBack; while ((int)voice.Status.RunningState != 1) { if (InputWordPosition != voice.Status.InputWordPosition || InputWordLength != voice.Status.InputWordLength) { InputWordPosition = voice.Status.InputWordPosition; InputWordLength = voice.Status.InputWordLength; //回调 CallBack(false, InputWordPosition, InputWordLength); } } CallBack(true, InputWordPosition, InputWordLength); } ////// 获取语音库 /// ///List public ListgetDescription() { List list = new List (); DotNetSpeech.ISpeechObjectTokens obj = voice.GetVoices(); int count = obj.Count;//获取语音库总数 for (int i = 0; i < count; i++) { string desc = obj.Item(i).GetDescription(); //遍历语音库 list.Add(desc); } return list; } /// /// 设置当前使用语音库 /// ///bool public bool setDescription(string name) { Listlist = new List (); DotNetSpeech.ISpeechObjectTokens obj = voice.GetVoices(); int count = obj.Count;//获取语音库总数 bool result = false; for (int i = 0; i < count; i++) { string desc = obj.Item(i).GetDescription(); //遍历语音库 if (desc.Equals(name)) { voice.Voice = obj.Item(i); result = true; } } return result; } /// /// 设置语速 /// /// public void setRate(int n) { voice.Rate = n; } ////// 设置声音大小 /// /// public void setVolume(int n) { voice.Volume = n; } ////// 暂停 /// public void Pause() { voice.Pause(); } ////// 继续 /// public void Resume() { voice.Resume(); } ////// 停止 /// public void Stop() { voice.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak); } ////// 输出WAV /// /// 保存路径 /// 要转换的文本内容 ///public bool WreiteToWAV(string path,string str,SpeechAudioFormatType SpAudioType) { SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite; SpFileStream SpFileStream = new SpFileStream(); SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync; SpAudioFormat SpAudio = new DotNetSpeech.SpAudioFormat(); SpAudio.Type = SpAudioType; SpFileStream.Format = SpAudio; SpFileStream.Open(path, SpFileMode, false); voice.AudioOutputStream = SpFileStream; voice.Speak(str, SpFlags); voice.WaitUntilDone(Timeout.Infinite); SpFileStream.Close(); return File.Exists(path); } }}