首页 > 编程语言 >c#winform 文字阅读工具,可以暂停 可以继续 可以从光标处开始阅读

c#winform 文字阅读工具,可以暂停 可以继续 可以从光标处开始阅读

时间:2023-06-01 15:35:12浏览次数:49  
标签:endIndex synthesizer c# text textBoxX1 startIndex 阅读 voice winform

c#winform 文字阅读工具

支持暂停

支持继续

支持从光标处开始

具体源码可以与我沟通

 

            //string text1 = textBoxX1.Text;
            //SpVoice voice = new SpVoice();
            //voice.Voice = voice.GetVoices().Item(0);
            ////音量  
            //voice.Volume = 100;
            ////语速  
            //voice.Rate = 2;
            ////朗读内容  
            //voice.Speak(text1);

  具体核心代码如下

 string text = textBoxX1.Text;
            synthesizer = new SpeechSynthesizer();
            synthesizer.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Teen);
            synthesizer.Volume = 100;
            synthesizer.Rate = 2;
            startIndex = textBoxX1.SelectionStart;
            isPaused = false;
            await Task.Run(() =>
            {
                while (startIndex < text.Length)
                {
                    if (isPaused)
                    {
                        while (isPaused)
                        {
                            Task.Delay(100).Wait();
                        }
                    }
                    int endIndex = text.IndexOf(' ', startIndex);
                    if (endIndex == -1)
                    {
                        endIndex = text.Length;
                    }
                    string word = text.Substring(startIndex, endIndex - startIndex);
                    startIndex = endIndex + 1;
                    //textBoxX1.Invoke(new Action(() =>
                    //{
                    //    textBoxX1.Select(startIndex - word.Length - 1, word.Length);
                    //    textBoxX1.SelectionColor = Color.Red;
                    //}));
                    synthesizer.Speak(word);
                }
            });

 

标签:endIndex,synthesizer,c#,text,textBoxX1,startIndex,阅读,voice,winform
From: https://www.cnblogs.com/cxyyn/p/17449166.html

相关文章

  • 【活动回顾】Databend 数据库表达式框架设计与实现 @GOTC
    5月28日,“全球开源技术峰会GOTC2023”圆满落幕。在本次会上,Databend数据库的优化器研发工程师骆迪安作为嘉宾中的一员,在rust专题专区分会场进行了一次主题为《Rust实现的先进SQL Parser与高效表达式执行框架—Databend数据库表达式框架设计与实现》的演讲。演......
  • ipmitool配置机器的BMC管理IP
     1、确定操作对象#ipmitoolmcinfo输出中”DeviceRevision"是命令的操作对象2、设置BMCIP#ipmitool-Iopenlanset1ipsrcstatic#ipmitool-Iopenlanset1ipaddr192.168.1.11#ipmitool-Iopenlanset1netmask255.255.255.0#ipmitool-Iopenlan......
  • WPF 监听TextBlock 的Text改变事件
    privatestaticSystem.ComponentModel.DependencyPropertyDescriptordescriptor=System.ComponentModel.DependencyPropertyDescriptor.FromProperty(TextBlock.TextProperty,typeof(TextBlock));descriptor.AddValueChanged(tb,TbTextChanged);priva......
  • Git整理 git cherry-pick的使用
    gitcherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用gitcherry-pick了。用法gitcherry-pi......
  • 线上应用故障排查之一:高CPU占用
    线上应用故障排查之一:高CPU占用一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过psaux|grepPID命令,可......
  • conda pip
    pipinstall库包名-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleonnxpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleonnxruntime pipinstall-rrequirements.txtnumpy==1.23......
  • C++中的map用法学习
    map是STL的一个关联容器,它提供一对一的hash。第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的......
  • 机器学习模型优化:variance bias
    bias(偏差:指同一个点的训练数据的预测值与正确值间的偏离程度)variance(方差:指同一个点的训练数据的预测值的离散程度) 一般情况下,模型需要在bias和variance之间取得一个平衡。bias小的模型,variance一般大;variance小的模型,bias一般大。更好的理解bias和variance的关系能够帮助我们......
  • .net core Abp定时任务实现
     publicclassUseTimeJob:Job//重点是继承Job {publicreadonlyIUserCourseJobTimeService_userCourseJobTimeService;publicreadonlyIOrganizationAppService_organizationAppService;privatereadonlyIOfflineCourseLiveRecordServic......
  • 07 Adapter 模式 - Class Adapter
    DesignPattern:Adapter模式-ClassAdapterAdapter模式的另一种作法是ClassAdapter模式,在这个模式下,Adapter直接继承Adaptee(要引进的新类别),以拥有当中的成员及方法,在C++中的话可以这么作: C++中可以多重继承,但在Java中不行,所以在Java中若要采用ClassAdapter,必须作点修改,一方......