unity中sapi语音朗读的简单用法
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关unity中sapi语音朗读的简单用法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。运行环境:win10, Unity5.6.2f
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
中关村互联网科技集团
新华互联网科技学校
互联网科技行业发展
碳银互联网科技
亿策互联网科技
小马过河互联网科技
广州互联网络科技有限公司
天扬科技互联网广告
互联网科技中介
彤创互联网科技有限公司
语蝶互联网科技有限公司
阿大互联网科技有限公司
呼和浩特新华互联网科技学院
互联网科技人工智能实验室
科技互联网海报
电子商务与互联网科技的关系
抖集互联网科技技术咨询
上海万顺科技互联网有限公司招聘
互联网领先科技活动
美国五大互联网科技公司市值多少
精品咖啡豆
互联网科技企业
金融科技与互联网金融
融势互联网科技
小米互联网科技园设置
互联网科技教育视频
互联网科技革命什么开始
互联网科技如何创业
广州富喜互联网络科技
山东蛋芒互联网科技有限公司