Unity 文字转语音 Microsoft Interop.SpeechLib使用

这篇具有很好参考价值的文章主要介绍了Unity 文字转语音 Microsoft Interop.SpeechLib使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需要提前做以下设置:

  1. Unity中需要设置:
    Editor -> Project Settings -> Player -> Other Settings -> Api Compatibility Level -> 选择.Net 4.x

  2. 系统需要提前下载中文语音包
    Win11可以在 设置 -> 时间和语言 -> 语音 中查看已下载的语音
    Unity 文字转语音 Microsoft Interop.SpeechLib使用
    其中Huihui Yaoyao Kangkang为中文语音,下面脚本也是这样判断的
    Unity 文字转语音 Microsoft Interop.SpeechLib使用
    如果没有安装语音的话,可以在设置 -> 时间和语言 -> 语言和区域 -> 语言选项中查看安装
    Unity 文字转语音 Microsoft Interop.SpeechLib使用
    Unity 文字转语音 Microsoft Interop.SpeechLib使用

脚本

将下面脚本挂载到场景中GameObject上,然后通过其他方法对其进行实例化和调用文章来源地址https://www.toymoban.com/news/detail-747571.html

using UnityEngine;
using SpeechLib;
using System;

namespace Project
{
	/// <summary>
	/// 微软文字转语音
	/// </summary>
	public class SpeechLibText_ZH : MonoBehaviour
	{
		//微软组件
		SpVoice _SpVoice;

		/// <summary>
		/// 语音播放
		/// </summary>
		/// <param name="_SpeakText"></param>
		public void SpeakText(string _SpeakText)
		{
			try
			{
				_SpVoice = new SpVoice();
				//音量0-100
				_SpVoice.Volume = 100;
				//语速-10 - 10
				_SpVoice.Rate = 0;


				//设置中文语音包
				ISpeechObjectTokens voices = _SpVoice.GetVoices(string.Empty, string.Empty);
				ISpeechObjectToken chineseVoice = null;
				ISpeechObjectToken voiceToken = null;

				for (int i = 0; i < voices.Count; i++)
				{
					voiceToken = voices.Item(i);
					if (voiceToken.GetDescription().Contains("Huihui") || voiceToken.GetDescription().Contains("Yaoyao") || voiceToken.GetDescription().Contains("Kangkang"))
					{
						chineseVoice = voiceToken;
						Debug.Log("语音:" + voiceToken.GetDescription());
						break;
					}
				}

				if (chineseVoice != null)
				{
					_SpVoice.Voice = chineseVoice as SpObjectToken;
                }
                else
                {
					Debug.Log("未检索到语音包,使用默认语音");
					_SpVoice.Voice = _SpVoice.GetVoices(string.Empty, string.Empty).Item(0);
				}

				//开始执行 异步朗读
				_SpVoice.Speak(_SpeakText, SpeechVoiceSpeakFlags.SVSFlagsAsync);

			}
			catch (Exception e)
			{
				Debug.Log($"播放失败原因:" + e.Message);
			}
		}

		/// <summary>
		/// 语音播放暂停
		/// </summary>
		public void Pause()
		{
			try
			{
				_SpVoice.Pause();
			}
			catch (Exception e)
			{
				Debug.Log($"暂停失败 原因: {e.Message}");
			}
		}

		/// <summary>
		/// 语音播放继续
		/// </summary>
		public void Resume()
		{
			try
			{
				_SpVoice.Volume = (int)(GameEntry.Setting.GetFloat("SFXVolume") * 100);
				if (GameEntry.Setting.GetBool("SFXMuted"))
				{
					_SpVoice.Volume = 0;
				}
				_SpVoice.Resume();

			}
			catch (Exception e)
			{

				Debug.Log($"继续播放失败: {e.Message}");
			}
		}

		/// <summary>
		/// 语音播放停止
		/// </summary>
		public void StopPlaying()
		{
			try
			{
				_SpVoice.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);//停止
			}
			catch (Exception e)
			{

				Debug.Log($"停止失败: {e.Message}");
			}
		}
	}
}

到了这里,关于Unity 文字转语音 Microsoft Interop.SpeechLib使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#使用Microsoft.office.interop.PowerPoint生成PPT

    开发的一个系统需要用到自动生成ppt,网上的例子比较少,且有很多还需要csdn币下载,有些下载下来了还不是那么回事,就是个坑。后来考虑了开源组件Apose.Slides和Spire.Presentation,但是这两个都是商业软件,试用版和免费版的只有能生成前10页,还带有水印。Free Spire.Presentat

    2024年02月11日
    浏览(48)
  • c# 使用Microsoft.Office.Interop.Excel 对Excel操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 Microsoft.Office.Interop.Excel的读取,保存,内容写入和打印。 提示:以下是本篇文章正文内容,下面案例可供参考     首先于Proj

    2024年02月03日
    浏览(34)
  • Asp.net Core使用Microsoft.Office.Interop.Word转换文档

    源代码网络上有很多,但是使用过程中发现问题还是有的,尤其是在文档属性配置不同的时候,出现的问题就是不能转换。在开发端没有问题,但在不同于开发端电脑的配置情况下,会出现意向不到的问题。此处对解决方案进行记录。 using Word = Microsoft.Office.Interop.Word;   pub

    2024年02月05日
    浏览(49)
  • C# 使用Microsoft.Office.Interop.Word 将WORD转成PDF

        /// summary     /// 测试文件     /// /summary     /// param name=\\\"input\\\"文件名/param     /// returns/returns     [ApiDescriptionSettings(Name = \\\"Getword\\\")]     [HttpGet]     public IActionResult getWord(string wordName)     {         string templatePath = \\\"D:\\\\Template\\\\wordTemplate.docx\\\";         string log = \\\"D:\\\\Templa

    2024年03月21日
    浏览(45)
  • 关于使用Microsoft.Office.Interop.Excel.dll来读写Excel表格的问题

    小公司,使用打卡机进行考勤,输出的是一张Excel表格,每个月看到前台妹子都要辛辛苦苦地统计Excel表格每个员工迟到的时间,于是想着写一个自动计算迟到分钟的小程序。 参照这几篇比较好的文章按部就班地做:导出Excel文件 、其它方法。 没想到刚开始写就遇到一个大坑

    2024年02月16日
    浏览(34)
  • Unity 语音转文字

    参考官方手册:Windows.Speech.DictationRecognizer - Unity 脚本 API (unity3d.com) 这个中英识别都比较准确,不过应该只支持Win10以上。 需在设置里开启在线语音识别。  代码部分: 也可以考虑其他平台的SDK,我只测试了百度的,这个英文识别不大好(最起码Unity识别不出来,IPad可以识别

    2024年02月08日
    浏览(30)
  • C# WinForm 使用Microsoft.Office.Interop.Excel对Excel文件表格的单元格值进行修改操作

    在引用位置点击右键 点击管理NUGet程序包 搜索Excel,在搜索结果中点击Microsoft.Office.Interop.Excel 然后点击安装即可,搜不到的话,在右侧程序包源位置改成全部再次搜索 。 对准项目,点击右键,在弹出菜单选择添加,选择类 类名称随意,然后清空新建类得到全部内容,把下面

    2024年02月13日
    浏览(41)
  • Unity实现文字转语音并且与人物模型口型同步

    提示:这里可以添加本文要记录的大概内容: 今天我们用Unity实现文字转语音并且与人物模型口型同步,要实现这个功能,我们需要用到两个插件:语音口型同步“OVRLipSync”和文字转语音“RTVoice”。 RTVoice: 离线文字转语音 • 支持所有构建平台! • 适合于 Windows、macOS、

    2024年02月05日
    浏览(31)
  • C#用Microsoft.Office.Interop.Word生成WORD公式

    using Word = Microsoft.Office.Interop.Word;                  Word.Application myWord = new Word.Application();                myWord.Visible = true;                object missing = System.Reflection.Missing.Value;                Word.Document myDocument = myWord.Documents.Add(ref missing);                //页边距  

    2024年02月07日
    浏览(39)
  • Ubuntu20.04 使用Python实现全过程离线语音识别(包含语音唤醒,语音转文字,指令识别,文字转语音)

      因为手头有一个项目,该项目需要在香橙派上实现语音控制,并且带有语音唤醒功能。简单来说,就是通过唤醒词唤醒香橙派,然后说出相关指令,香橙派去执行指令。   但是,在弄香橙派的时候,自带的麦克风不好使了,单独进行麦克风测试的时候是好使的,但是程

    2024年02月05日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包