unity中sapi语音朗读的简单用法
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这期内容当中小编将会给大家带来有关unity中sapi语音朗读的简单用法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。运行环境:win10, Unity5.6.2f
千家信息网最后更新 2025年01月20日unity中sapi语音朗读的简单用法
这期内容当中小编将会给大家带来有关unity中sapi语音朗读的简单用法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
运行环境:win10, Unity5.6.2f1/Unity2018.2.6f1(两个版本都试了,可以)
using SpeechLib;//... SpVoice voice = new SpVoice();
书接上文Unity中使用Windows的sapi进行语音朗读
上文例子中的代码只是最最简单的使用方法,实际用时是有问题的。
这样直接
voice.Speak(str);
如上简单粗暴的使用,会卡住当前Unity程序的主线程,在朗读完毕之前会一直卡,包括关闭Unity程序,也还是会一直读完内容
首先解决卡主线程的问题
自然就想到了开子线程
Thread t=new Thread(()=>{ voice.Speak(str);});t.Start();
这样让它朗读文字,的确不卡主线程了
但是,关闭Unity程序时,依然还是会一直读完内容
那好,在关闭时先让voice停止
private void OnApplicationQuit(){ voice.Pause();}
的确有用,关程序时,马上就不朗读了,但是,程序会卡住一会儿,才会关闭。
所以还是有问题
最终解决方案:
不需要开子线程
根据我的需求,不需要暂停,只要停止,那么不用voice.Pause()了
代码:
朗读停止
voice.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
执行上面语句,朗读即刻停止,在程序关闭时可调用上述语句,比如加在OnApplicationQuit()方法中。
2.不开子线程,使朗读不卡
voice.Speak(str, SpeechVoiceSpeakFlags.SVSFlagsAsync);
所以说voice.Speak方法,用两个参数的,第二个参数非常重要
SVSFPurgeBeforeSpeak
如果正在朗读,则停止,然后朗读当前的内容
SVSFlagsAsync
这个看名字就知道,异步,不会卡主线程。
这样一来,不用开子线程直接异步朗读,不卡主线程,而且可以随时停止,实测关闭Unity程序(发布出的Windows端程序)时也不会卡住,立即关闭
上述就是小编为大家分享的unity中sapi语音朗读的简单用法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
线程
程序
内容
语音
方法
还是
问题
上文
不用
两个
代码
参数
语句
分析
重要
粗暴
这样一来
一来
专业
中小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
明道视频软件开发
服务器密码怎么才安全
前端页面如何调用数据库
服务器出现一个英文密码
计算机网络技术编程大作业
怎样做好网络安全宣传
电脑端的软件开发
外国关于网络安全的法律
前海合众互联网科技有限公司
医疗保障局网络安全工作责任制
根域名服务器怎么组件
vue启动服务器命令
oracle数据库 采购
服务器走丢了还需要邀请码吗
服务器专业系统
网络技术应用题三年级
网络安全本科论文题目
食品安全数据库问题
当前主流服务器
信息管理与数据库技术课程心得
无锡服务器维修服务网点
放心软件开发
服务器磁盘阵列是什么
贴近生活的网络安全应急演练场景
服务器主板插显卡装不了驱动
云服务器镜像功能是什么意思
防止服务器崩掉的东西
预防网络安全的策略和技术
天龙八部卡级服务器名字
数据库+错误+1171