1、这里主要使用到两个动态库:Interop.SpeechLib.dll、CustomMarshalers.dll,大家可以自行下载,或者在https://download.csdn.net/download/WenHuiJun_/87287758下载。

2、把dll放进项目中,编写代码即可。

不需要挂载在场景中:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using SpeechLib;public class VoiceManager
{public SpVoice voice = new SpVoice();//语音朗读声音bool isVoicePause = false;static VoiceManager _instance;public static VoiceManager Instance(){if(_instance==null)_instance=new VoiceManager();return _instance;}/// <summary>/// 获取语音库/// </summary>/// <returns>List<string></returns>public List<string> getDescription(){List<string> list = new List<string>();ISpeechObjectTokens obj = voice.GetVoices();int count = obj.Count;//获取语音库总数for (int i = 0; i < count; i++){string desc = obj.Item(i).GetDescription(); //遍历语音库list.Add(desc);}return list;}/// <summary>/// 设置当前使用语音库/// </summary>/// <returns>bool</returns>public int setDescription(string name = null){ISpeechObjectTokens obj = voice.GetVoices();//获取语音库总数int count = obj.Count;int index = 0;if (name == null)return 0;for (int i = 0; i < count; i++){//遍历语音库string desc = obj.Item(i).GetDescription();if (desc.Contains(name)){voice.Voice = obj.Item(i);index = i;}}return index;}/// <summary>/// 语音朗读按钮事件/// </summary>public void SpeakText(string str, string voiceName = null, int voiceRate = 1){if (!string.IsNullOrWhiteSpace(str)){if (getDescription().Count != 0){voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(setDescription(voiceName));//设置中文语音voice.Rate = voiceRate;//语音速度,范围-10到10,默认是0voice.Volume = 100;//语音音量,范围0到100,默认是100//voice.Speak(str, SpeechVoiceSpeakFlags.SVSFlagsAsync);//不开子线程,朗读不卡(朗读内容,如果正在朗读,则停止,然后朗读当前的内容,用的异步)voice.Speak(str, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak | SpeechVoiceSpeakFlags.SVSFlagsAsync);}}isVoicePause = false;}/// <summary>/// 暂停语音/// </summary>public void ToPauseVoice(){if (!isVoicePause){voice.Pause();isVoicePause = true;}}/// <summary>/// 继续播放语音/// </summary>public void ToResumeVoice(){if (isVoicePause){voice.Resume();isVoicePause = false;}}/// <summary>/// 关闭语音朗读/// </summary>public void StopSpeakText(){voice.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);}
}

需要挂载在场景中:

using SpeechLib;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class VoiceBtn : MonoBehaviour
{private Button voiceBtn;VoiceManager voiceManager;private void Start(){voiceManager = VoiceManager.Instance();voiceBtn = GetComponent<Button>();voiceBtn.onClick.AddListener(delegate{voiceManager. SpeakText("Hello");});}private void Update(){//if ((int)manager.voice.Status.RunningState == 1) //0:朗读暂停; 1:朗读完成; 2:正在朗读)//{//    //}}private void OnDisable(){voiceManager.StopSpeakText();}private void OnApplicationQuit(){voiceManager.StopSpeakText();}
}

3、需要增加角色,可以参考https://download.csdn.net/download/WenHuiJun_/87287758

Unity3D 使用Windows系统朗读文字相关推荐

  1. Java实现在windows系统下文字转语音并播报

    一.准备工作 1.因为调用的是windows64的自带的语音系统,所以我们需要下载语音驱动,一个以dll结尾的文件, 文件放到网盘里了 链接:https://pan.baidu.com/s/1KCNS ...

  2. Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行——怎么将Unix/Mac系统下的文件转换到Windows系统下

    先交代一下遇到的问题: 本人用的是Windows系统.在学习Triangle Mesh时,想将bunny.ply等经典的PLY文件导入程序中. 但是,文件被读入程序后,所有的内容变成了一行.从而,现成 ...

  3. 在Windows系统下如何将桌面图标下的文字隐藏

    在Windows系统下如何将桌面图标下的文字隐藏 第一步:你需要一台电脑(Windows系统的电脑哈!原谅我放屁哈!) 进入正题: 首先,win+R键打开运行窗口,输入"charmap&qu ...

  4. 【辅助驾驶】Python在Windows系统下实现TTS(文字转语音)

    一.目的 python语言,在Windows系统下实现语音转文字. 二.代码 通过win32com调用的windows的SAPI,所以本脚本只适应于windows平台 #coding:utf-8 im ...

  5. Windows 系统画图软件如何切换输入文字的方向

    Windows 系统画图软件怎样切换输入文字的方向 https://jingyan.baidu.com/article/ad310e80b7e7801848f49e5d.html 1.黑体(横向显示文 ...

  6. Windows系统中Word文档中文字后面的空格下的下划线不显示的解决办法

       笔者最近在做课程设计,需要写Word文档,在写文档的时候遇到了一堆bug,现在课程设计肝完了,终于有时间梳理梳理这些bug然后发布出来做个备忘录.    第一个bug是Windows系统中Wor ...

  7. 禁止windows系统创建快捷方式时添加文字“- 快捷方式”

    转载自如何禁止windows系统创建快捷方式时添加文字"- 快捷方式",仅作学习交流使用 如何禁止windows系统创建快捷方式时添加文字"- 快捷方式" 20 ...

  8. 计算机将文本朗读出来应用语音,如何实现电脑语音朗读文字?可以选择两种方法...

    眼睛长时间对着电脑会让人觉得疲劳,到了休息时间想要放松心情,看看小说,又担心影响视力,怎么办?很简单,我们可以直接选择"听书",除了借助语音朗读软件,还有其他方法,下面小编来为大家 ...

  9. 用1天快速上手org-mode(windows系统)

    Table of Contents 1. 选择Emacs的理由--Org-mode 1.1. 现状(基于本人现有软件的使用) 1.2. 理念(够用才好) 1.3. 学习过程(少走弯路) 2. 快速安装 ...

最新文章

  1. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】
  2. C/C++使用keybd_event模拟键盘按键
  3. PyQt5 技术篇-窗口名、窗口图标的设置方法。
  4. LC77 Combinations
  5. vectorobserver obs是做什么_带着色碳纤维主体的OBS雪佛兰皮卡
  6. docker添加阿里云专属镜像
  7. Python+Selenium练习篇之7-利用name定位元素
  8. A Tour of the Dart Language(译文):五控制流语句
  9. FIND、FINDINDEX、INDEXOF、LASTINDEX、INCLUDES 数组五种查询条件方法介绍
  10. ShortCut Exploit Builder
  11. 数据包络分析-BCC模型
  12. python解二阶微分方程组_python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)...
  13. oracle 正版识别,正版Oracle产品价格
  14. 强烈推荐:程序员接私活那点事
  15. 计算机技术比武通讯报道,第十六届后勤优质服务月:各部门积极开展技能比武,强化岗位技能,提升服务水平...
  16. 20230429作业
  17. 可兼容NAND512W3A2SZA6E物料的AFND1208U1-CKAI
  18. 女程序员,作程序员还是作女人?
  19. 互联网时代各行业都在快速更替,对于金融行业即将成为下一个风口的分析
  20. 华兴银行 java 面试题_银行业务面试题,java代码。

热门文章

  1. change和onchange的区别
  2. 计算机图形学中几何变换的定义,计算机图形学-第5章-几何变换课件
  3. Jupyter添加目录
  4. 硬盘电路板损坏怎么恢复数据/电路板损坏恢复成功的概率有多大
  5. 利用JavaScript制作简单的ATM机
  6. VCE公司掌门人Chad Sakac称将在超融合市场上占据主动
  7. 贵州民族大学人文科技学院计算机协会,湖南人文科技学院社团电子俱乐部的介绍...
  8. SAP S/4HANA Cloud PA考试指南
  9. 圆周分孔计算公式表图_圆周等分孔最小位置度计算方法与流程
  10. 【java】批量上传图片并回显功能