利用微软Text-To-Speech朗读文本

我超爱看小说,由于长时间盯着电脑眼睛疼,所以从网上下载了一款《读书狼》的软件。虽然达不到真人念书的水平,但是为了保护宝贵的眼睛,这也算是不错的了。然后自己想做一个类似的小工具。而且要是可以的话,可以在生产车间的序列码、注册编号等输入的时候加入语音检测,这样可以防止眼睛疲劳导致的错误。

首先,要安装Microsoft Speech SDK,可以从微软网站上下载,我安装的是SAPI 5.1。安装完毕以后,会附带chm格式的开发文档。

创建一个C# Winform程序,拖一个RichTextBox控件,添加两个启停按钮。界面可以自己做,我的界面如下所示:

设置朗读属性的界面如下:

 

在工程中添加应用:SpeechLib,具体方法是添加引用->COM->Microsoft Speech Object Library 5.0.

SpVoiceClass是朗读的函数,这个函数可以控制是同步朗读还是异步朗读,我在这里选择了是异步朗读。朗读的声音包括英文、中文、日文等,需要安装中文等语音库。这些也可以在微软的网站上找到。SpVoiceClass还可以控制是哪个声音朗读,朗读的语速、音量等属性。异步朗读还有一个问题就是当朗读完毕的时候控制按钮状态的恢复。另外说明:英文版的操作系统和中文版的操作系统中朗读声音的排序是不一样的,其他文章说0代表中文,请不要武断这么认为,在英文操作系统中,0是代表了英文,为了保险起见,可以读取系统中所有的语音列举到组合框以供选择。下面是主要的代码:

public partial class MainForm : Office2007Form 
{
bool bStop;    // 是否停止
bool bPause; // 是否暂停
private Preference ThePreference = new Preference();    // 配置类
SpVoiceClass SpeechInstance = new SpVoiceClass();    // 朗读类
public MainForm() 
{
this.ThePreference.Init();
InitializeComponent();
// 自定义事件-配置修改后立即更新
this.ThePreference.Invalidate += new Preference.InvalidateHandler(InvalidateSpeechCfg);
bStop = true;    // 初始停止
bPause = false;    // 初始没有暂停
}
private void MainForm_Load(object sender, EventArgs e)
{
// 配置语音、语速和音量
this.SpeechInstance.Voice = this.SpeechInstance.GetVoices(string.Empty, string.Empty).Item(this.ThePreference.SpeechConfig.Type);
this.SpeechInstance.Rate = this.ThePreference.SpeechConfig.Rate;
this.SpeechInstance.Volume = this.ThePreference.SpeechConfig.Volume;
// 异步模式下,朗读完毕的事件处理
this.SpeechInstance.EndStream += new SpeechLib._ISpeechVoiceEvents_EndStreamEventHandler(FuncEndStream);
}
private void FuncEndStream(int i, object o)
{ 
bStop = true;
UpdateIcon_playpause();
}
/// <summary> 
/// 开始阅读和暂停的按钮 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
private void toolStripButton_play_pause_Click(object sender, EventArgs e)
{
if (bStop == true)
{
if (this.richTextBox.Lines.Length == 0)
{
bStop = true;
}
else
{
ReadTextInControl(this.richTextBox.Text);
if (bPause == true)    // 此处一定要有这个判断,因为从Pause状态直接调用Speak函数,不会朗读,除非Resume 
{
SpeechInstance.Resume();
bPause = false; 
}
bStop = false;
}
}
else
{
if (bPause == true)
{ 
bPause = false;
SpeechInstance.Resume();
}
else
{
bPause = true;
SpeechInstance.Pause();
}
bStop = true;
}
UpdateIcon_playpause();
}
private void UpdateIcon_playpause()
{
if (bStop == true)
{
this.toolStripButton_play_pause.Image = ReadFish.Properties.Resources.Play;
}
else
{
if (bPause == true)
{
this.toolStripButton_play_pause.Image = ReadFish.Properties.Resources.Play;
}
else
{
this.toolStripButton_play_pause.Image = ReadFish.Properties.Resources.Pause;
}
}
}
public void ReadTextInControl(string strRead)
{
SpeechInstance.Speak(strRead, SpeechVoiceSpeakFlags.SVSFlagsAsync);    // 异步朗读 
}
private void toolStripButton_stop_Click(object sender, EventArgs e)
{
if (bStop == false)
{
SpeechInstance.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);    // 结束朗读
bStop = true;
}
UpdateIcon_playpause();
}
private void InvalidateSpeechCfg(object sender, EventArgs e)
{
this.SpeechInstance.Voice = this.SpeechInstance.GetVoices(string.Empty, string.Empty).Item(this.ThePreference.SpeechConfig.Type);
this.SpeechInstance.Rate = this.ThePreference.SpeechConfig.Rate;
this.SpeechInstance.Volume = this.ThePreference.SpeechConfig.Volume;
}
}

下面是获取和设置语音列表的函数实现
        cb_type.Items.Clear();
SpeechLib.SpVoice voice = new SpeechLib.SpVoice();
int i = 0;
foreach (SpeechLib.ISpeechObjectToken t in voice.GetVoices(string.Empty, string.Empty))
{
cb_type.Items.Add(t.GetDescription(i++));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43763.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超实用Mac苹果电脑终端命令

苹果Mac电脑可以使用老式终端来运行无法从应用程序或菜单访问的简单命令&#xff0c;下面是macw总结了几条非常好用的终端命令&#xff0c;分享给大家。 终端应用程序存储在应用程序 > 实用程序下&#xff0c;但您可以随时通过按 CommandSpace 打开 Spotlight&#xff0c;搜…

抠图软件-神奇抠图

PS&#xff1a;方便抠客户给的素材图标等 windows 10系统自带画图 3D 抠图

图片自动抠图软件

今天急需要一个图做ppt背景&#xff0c;是学校的logo&#xff0c;奈何从度娘上度的都不是自己想要的&#xff0c;需要处理&#xff0c;使用了在线的ps&#xff0c;但是用起来也很麻烦&#xff0c;时间成本太大&#xff0c;魔棒工具无法使用&#xff0c;于是从度娘上搜到了一款自…

比PS更简单好用的自动抠图软件 一键抠图工具

这是一款非常容易使用超级简单的智能抠图工具&#xff0c;也可以叫做图片背景去除工具&#xff0c;实现了智能的前景与背景分割方式。请查看这个页面上的截图&#xff0c;这是天天软件的小编只用了1分钟抠出来的&#xff0c;抠图就是如此简单&#xff01;程序能够准确地覆盖你想…

可以一键抠图软件有哪些?一键抠图软件大分享

不知道大家有没有遇到过这样一种情况&#xff0c;当我们在外面游玩的时候&#xff0c;拍了很多图片&#xff0c;想要分享给朋友&#xff0c;却发现照片的背景杂乱不好看。重新回去那个地方拍已经不太可能了&#xff0c;遇到这种情况你会放弃这些照片吗&#xff1f;其实我们可以…

抠图用什么软件?分享几种好用的抠图方法

有什么好用的抠图软件呢&#xff1f;抠图可以让我们更好地控制图像的内容&#xff0c;使得图像更加精美和专业。例如在广告设计中&#xff0c;通常需要将产品从照片中分离出来&#xff0c;以便更好地突出产品特点。抠图可以让设计师更加灵活地使用产品照片&#xff0c;为产品的…

抠图用什么软件比较方便?来尝试一下这几款抠图工具

抠图用什么软件比较方便呢&#xff1f;在制作海报或广告时&#xff0c;我们通常需要将图片的背景去掉&#xff0c;以便更好地将主题突出。比如&#xff0c;如果你要制作一张广告海报&#xff0c;想让人们更关注你的产品&#xff0c;那么就需要把产品的图片从背景中分离出来&…

这几款抠图工具效果很好,朋友们不要错过

小伙伴们日常有抠图的需要吗&#xff1f;有时候我们想整蛊一下朋友&#xff0c;将他的人像抠下来&#xff0c;贴到另一张图片上&#xff0c;达到一种非常搞怪的效果&#xff0c;这时候&#xff0c;我们就需要借助抠图软件实现抠图。那你知道抠图软件哪个好用免费吗&#xff1f;…

方便好用的在线抠图工具,你值得一试

相信大家在遇到抠图时&#xff0c;总会被这几个问题难住&#xff1a; 1、 ps操作复杂&#xff0c;很多小白操作不熟练 。 2、一些软件需要下载安装&#xff0c;使用不方便。 3、有些在线工具不够智能&#xff0c;处理细节不够完善。 针对以上大家经常遇到的问题&#xff0c;今天…

抠图软件 要钱

抠图软件 添加链接描述 佐糖 1月 300张 49元 自动续费

电脑怎样抠图?这几个软件能轻松实现

我们时常可以看到别人将人像或物品抠下&#xff0c;放到另一张毫不相关的图片上&#xff0c;达成一种非常搞笑的效果。你是不是也手痒痒想要试一下&#xff1f;但是市面上抠图软件那么多&#xff0c;到底智能抠图软件哪个好呢&#xff1f;今天我和大家介绍3个我知道的支持抠图的…

有哪些好用抠图软件?这几种抠图工具简单又高效

有什么好用的抠图软件呢&#xff1f;通过抠图技术将不同的元素组合在一起&#xff0c;创造出独特的艺术效果。我们日常中也会经常需要进行照片抠图&#xff0c;如拍出的照片背景不满意&#xff0c;想要抠出图片中的人物放到新的背景中&#xff0c;这些都是需要进行抠图才能够完…

想要对图片进行抠图用什么软件好呢?看看这两款软件吧!

有小伙伴求助说&#xff0c;自己想要对图片进行抠图的操作&#xff0c;将图片中的人像抠出并更换背景&#xff0c;创作各式各样的“出游照”&#xff0c;以弥补自己未能远行游玩的遗憾&#xff0c;可又不知道使用哪些软件才能够帮助自己轻松地完成抠图的操作&#xff0c;那到底…

有哪些好用的人像抠图软件?这几种抠图方法非常实用

有哪些简单好用的人像抠图软件呢&#xff1f;当我们在制作海报、广告、杂志封面等需要将图片中的人像抠出来的情况下&#xff0c;另外&#xff0c;还有一些特效需要将人物与背景分离&#xff0c;比如将人物放置在另一个背景上&#xff0c;或者制作人物头像等。这些都是需要将图…

有哪些不花钱的抠图软件?快来一起看看吧

平时在生活中&#xff0c;相信很多小伙伴们都会拍很多照片&#xff0c;有些照片的原画可能看起来不是那么饱满或者其他问题的话通常需要使用工具来处理一下了。最近有个小伙伴问我有些人像照片想编辑抠图但是不知道有哪些使用的工具&#xff0c;那么有哪些不花钱的抠图软件呢&a…

有什么人像抠图软件?安利几个一键抠图软件

小伙伴们知道怎么对照片进行人像抠图吗&#xff1f;学会抠图能给我们带来许多便利。比如&#xff0c;突然需要电子证件照的时候&#xff0c;我们可以借助人像抠图工具&#xff0c;对日常照片中的人像进行抠图&#xff0c;再添加纯色背景&#xff0c;这样就大功告成啦。那么人像…

电脑照片抠图软件哪个好?来看看这两个简单好用的工具

在工作或生活中&#xff0c;我们经常会想把照片中的人像抠换到另一个背景中&#xff0c;以此来美化图片&#xff0c;让照片变得更好看。对于很多人来说&#xff0c;还有人不知道怎么办。其实这种情况&#xff0c;我们可以借用抠图软件来操作&#xff0c;那么你们知道电脑照片抠…

手机一键抠图软件哪个好?分享三个好用软件给你

当我们拍了一张照片&#xff0c;但是它的背景太乱了&#xff0c;不能很好地展示要拍摄的人或物&#xff0c;这个时候我们利用抠图软件&#xff0c;进行一键抠图换背景的操作&#xff0c;这样可以让我们再也不用担心拍照时背景不好看的苦恼啦&#xff01;接下来就让我来告诉你一…

图片抠图用什么软件?这五种抠图工具让你实现抠图自由

我们需要抠图的时候用什么软件呢&#xff1f;日常中我们需要抠图的情况非常多&#xff0c;例如想要制作海报、广告、宣传册等需要将照片中的某些元素单独提取出来&#xff1b;想要将照片中的背景替换成其他图案或颜色&#xff1b;想要制作各种合成图像等等。在这些情况下&#…

LangChain + Embedding + Chromdb,关联使用ChatGLM的本地搭建训练平台教程

一.介绍 OpenAI 在国内用户注册会遇到各种阻力&#xff0c;目前可行的方法是使用本地数据集的功能实现联网搜索并给出回答&#xff0c;提炼出TXT、WORD 文档里的内容。 现在主流的技术是基于强大的第三方开源库&#xff1a;LangChain 。 文档地址&#xff1a;&#x1f99c;…