110,534
社区成员
发帖
与我相关
我的任务
分享
using SpeechLib;
.........
private void btnSpeak_Click(object sender, System.EventArgs e)
{
//Create a TTS voice and speak.
try
{
SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice Voice = new SpVoice();
Voice.Speak(txtSpeakText.Text, SpFlags);
}
catch(Exception error)
{
MessageBox.Show("Speak error", "SimpleTTS", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DotNetSpeech;
namespace Strongsoft.Module.ThreeDimensional
{
/// <summary>
/// 文本发音
/// </summary>
public class Speach
{
private static Speach _Instance = null;
private SpVoiceClass voice = null;
private int _selectedindex;
/// <summary>
/// 音量
/// </summary>
public int Volume
{
get
{
return voice.Volume;
}
set
{
voice.Volume=value;
//voice.SetVolume((ushort)value);
}
}
/// <summary>
/// 语速
/// </summary>
public int Rate
{
get
{
return voice.Rate;
}
set
{
voice.Rate = value;
//voice.SetRate(value);
}
}
/// <summary>
/// 语音类型
/// </summary>
public int SelectIndex
{
get {
return _selectedindex;
}
set {
_selectedindex = value;
}
}
/// <summary>
/// 构造函数
/// </summary>
public Speach()
{
BuildSpeach();
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="selectedindex">发音类型</param>
public Speach(int selectedindex)
{
BuildSpeach();
_selectedindex = selectedindex;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="volume">音量</param>
/// <param name="rate">语速</param>
public Speach(int volume, int rate)
{
this.Volume = volume;
this.Rate = rate;
}
/// <summary>
/// 实列化
/// </summary>
/// <returns></returns>
public static Speach Instance()
{
if (_Instance == null)
_Instance = new Speach();
return _Instance;
}
/// <summary>
/// 初始化
/// </summary>
private void BuildSpeach()
{
if (voice == null)
{
_selectedindex = 0;
voice = new SpVoiceClass();
}
}
/// <summary>
/// 朗读文本
/// </summary>
/// <param name="strSpeack"></param>
public void Speak(string strSpeack)
{
try
{
voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(_selectedindex);
voice.Speak(strSpeack, SpeechVoiceSpeakFlags.SVSFlagsAsync);
}
catch (Exception err)
{
throw (new Exception("发生一个错误:" + err.Message));
}
}
/// <summary>
/// 继续
/// </summary>
public void Resume()
{
voice.Resume();
}
/// <summary>
/// 暂停
/// </summary>
public void Pause()
{
voice.Pause();
}
/// <summary>
/// 停止
/// </summary>
public void Stop()
{
voice.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
}
}
}
/// <summary>
/// 初始化语音
/// </summary>
private void IniSpeach()
{
speach = new Speach(SpeachIndex); 这里的Index就是你语音包的哪几个选项了
speach.Volume = 100;
speach.Rate = SpeachRate;
}