微软 SAPI.SpVoice C# 使用方法 + 实例
网上找了好多资料也没找到多少 支持返回当前朗读的位置 用到了C#的回调函数然后为了方便使用 我多此一举的封装了下没什么技术含量 大牛直接飞过[csharp]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);/// <summary>/// 朗读文本/// </summary>/// <param name="str">要朗读的文本</param>/// <param name="CallBack">回调地址</param>/// <returns>返回bool</returns>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);}/// <summary>/// 回调函数线程子程序/// </summary>/// <param name="callBack"></param>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);}/// <summary>/// 获取语音库/// </summary>/// <returns>List<string></returns>public List<string> getDescription(){List<string> list = new List<string>();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;}/// <summary>/// 设置当前使用语音库/// </summary>/// <returns>bool</returns>public bool setDescription(string name){List<string> list = new List<string>();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;}/// <summary>/// 设置语速/// </summary>/// <param name="n"></param>public void setRate(int n){voice补充:软件开发 , C# ,
上一个:C#采集器示例含翻页功能
下一个:c#套接字