虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(中)
虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天-CSDN博客
上篇偏重实现步骤,中篇偏重理解校准和降低延迟,下篇加入上下文背景array和设置口音
TTS通用参数
———————————————————————————————————————————
以下整理了Text to Speech的一些(通用)参数。重要性自上而下排序
Model size
基于OpenAI's Whisper models开源模型
用的模型越大,计算机实时计算的时间就越久。需要快速反应可以尝试最上面的Tiny Size。往下选择更大的模型,会有更高的准确性和自然度。它们拥有更多的参数和更复杂的网络结构,能够捕捉更多的语言细节和语音特征,从而生成更自然、更流畅的语音。(注意,每次切换project setting中的model size需要点上面的setup language model或者重启编辑器才能应用)

点击“设置语言模型”按钮,如果您的本地机器上尚未安装所选语言模型,它将要求您自动下载该模型。
下载完成后,编辑器将生成一个位于“Plugins/RuntimeSpeechRecognizer/Content/LanguageModels/LanguageModel.uasset”的语言模型资产。此语言模型资产将是唯一与您的项目一起打包的资产。
通过点击“清除语言模型”按钮删除任何本地下载的语言模型。
从open ai's whisper 模型的大小来看,纯英文的 TTS 模型(比如 ggml-tiny.en.bin 和 ggml-medium.en.bin)和多语言模型(ggml-tiny.bin 和 ggml-medium.bin)在文件大小上没有太大差异。这可能让人感到意外,因为多语言模型通常需要包含更多更复杂的语言数据,理应体积更大,但其架构可能已经做了优化,能在模型大小上保持接近单语言模型的水平。

如果有不能识别的语言,可以在Epic目录下的插件文件夹中加入自定义语音包
Alternatively, you can manually download and place language models from https://huggingface.co/ggerganov/whisper.cpp into the "Plugins/RuntimeSpeechRecognizer/Content" folder.

streaming && non-streaming
Streaming audio input
This example captures audio data from the microphone as a stream using the Capturable sound wave and passes it to the speech recognizer.流式音频输入,使用可捕获声波从麦克风捕获音频数据作为流,并将其传递给语音识别器。
Non-streaming audio input
imports audio data to the Imported sound wave and recognizes the full audio data once it has been imported.非流式音频输入将音频数据导入到导入的声波中,并在导入后识别完整的音频数据。
Temperature
“temperature” 是控制生成结果随机性的一种参数。当 temperature 值较低时,系统会倾向于生成较为确定和可预测的输出,而当 temperature 值较高时,系统会生成更多样化、更随机的输出。
这句话的意思是: 当解码过程未能满足某些阈值时,系统会通过增加 temperature 值来增加输出的随机性。也就是说,如果解码遇到困难,生成的结果不够理想,系统会增加 temperature 来尝试生成更灵活、更随机的内容。
Initial Prompt
Sets the initial prompt for the first window. This can be used to provide context for the recognition to make it more likely to predict the words correctly, e.g. custom vocabularies or proper nouns.
设置第一个窗口的初始提示。这可用于为识别提供上下文,使其更有可能正确预测单词,例如自定义词汇或专有名词。
在文字生成语音的过程中,通常是按文本逐字逐句“照读”的,但在某些高级的语音合成系统中,特别是当涉及到自然语言生成或调整发音的细节时,可能需要一定的随机性。这种随机性通常与语调、节奏、或情感表达相关,而不只是机械地“照读”。
以下是一些可能涉及随机性的场景:
-
语调和情感:为了让合成的语音听起来更自然、更像人类,系统可能会在语调、重音、或表达情感的过程中引入一些随机变化。通过这种方式,语音听起来就不会显得死板和单一,而是更接近真人的表达。
-
停顿和节奏:不同的语境下,停顿的长度和节奏可能有所不同。系统可以通过引入一定的随机性来模拟这些变化,从而生成更自然流畅的语音。
-
句子结构或表述方式的选择(适用于生成文本再语音的系统):有些系统在生成语音时,可能要先生成要表达的文本内容,而这个过程可能涉及到不同的句子结构或词汇选择。这时的随机性就是在文本生成阶段用到的,类似于 ChatGPT 生成文本的机制。
举个例子:
- 低 temperature(如 0.2):系统会生成更稳定、预期一致的语音,几乎不会偏离最常见的发音方式,听起来像是机械地“照读”。
- 高 temperature(如 0.8 或 1.0):生成的语音会包含更多变化,例如停顿、语调起伏、语速快慢的变化,这样语音可能更像一个自然的对话者,而不是按部就班地读文本。
然而,如果 temperature 设置过高,语音可能显得过于“随意”,语调或情感表达可能不合适,甚至会导致不太符合语境的发音选择。
Beam Search (beam size default -1)

Set the number of beams in beam search. Only applicable when temperature is zero.
**束搜索(beam search)**算法的一个设置选项,特别是在生成任务(如文本生成或语音合成)中常用。我们来逐句分析这句话的意思:
1. "Set the number of beams in beam search"
- 束搜索是一种搜索算法,用来在生成文本或语音时找到多个可能的候选结果,并最终选择最优的一个。这里的“beams”(束)指的是在每一步生成过程中,保留的多个候选项。你可以将其理解为在每一阶段,算法会保留多个可能的生成路径,而不是只选择一个。
- “Set the number of beams” 意思是你可以设置要保留多少个候选项(路径)。比如,设为 3 就表示在每个生成步骤中保留 3 个候选方案,然后继续从这些方案中挑选最好的。
2. "Only applicable when temperature is zero"
- 这一部分说明束搜索算法只在 temperature 为零时生效。
- temperature 为零意味着系统不再引入随机性,而是严格选择最高概率的结果。在这种情况下,束搜索算法会非常有用,因为它可以保留多个可能的候选项进行评估,以确保找到最优解。
- 如果 temperature 不为零,意味着系统引入了随机性,束搜索的严格性和效率会大大降低,因此束搜索只在完全确定性的环境(即 temperature = 0)下才有意义。
Step Size Ms
录入语音的毫秒数 1000ms=1s。
Sets the step size in milliseconds. Determines how often to send audio data for recognition. The default value is 5000 ms (5 seconds). 这句话描述的是设置步长大小(step size),即每隔多少毫秒发送一次音频数据用于识别,默认值为 5000 毫秒(5 秒)。理论上,步长越小,意味着数据会更频繁地发送,延迟会变小,但这并不总是意味着“越小越好”,会缺失上下文影响。
如果启用了流式处理(streaming processing),那么**step size 的作用会显得不那么重要**,或者说其影响会大大减少。
※※加速库
Use Acceleration Libraries
whisper.cpp can accelerate the recognition process by using the following libraries: Core ML for Apple Silicon devices, OpenVINO on devices including x86 CPUs and Intel GPUs, Nvidia GPU Cuda on Windows or Linux, BLAS CPU support via OpenBLAS, BLAS CPU support via Intel MKL. Please note that these libraries are not included in the plugin by default and you need to install them manually, following the whisper.cpp instructions.
———————————下篇[加入上下文背景array和设置口音]——————————————
虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(下)-CSDN博客
———————上篇[使用runtime speech recognizer插件和解决插件报错]——————————
虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(上)-CSDN博客
相关文章:
虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(中)
虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天-CSDN博客 上篇偏重实现步骤,中篇偏重理解校准和降低延迟,下篇加入上下文背景array和设置口音 TTS通用参数 ————————————————————————————————————…...
整流电路的有源逆变工作状态
目录 1. 逆变的概念 2. 有源逆变的条件 3. 电流电路的概念 4. 产生逆变的条件 5. 三相桥式全控整流电路的有源逆变工作状态 6. 逆变角的概念 7. 逆变失败的原因 8. 最小逆变角的限制 整流电路的有源逆变状态是指通过控制整流器,使其将直流电源的能量反向送回…...
Android 签名、空包签名 、jarsigner、apksigner
jarsigner是JDK提供的针对jar包签名的通用工具, 位于JDK/bin/jarsigner.exe apksigner是Google官方提供的针对Android apk签名及验证的专用工具, 位于Android SDK/build-tools/SDK版本/apksigner.bat jarsigner: jarsigner签名空包执行的命令: jar…...
java基础(小技巧)
文章目录 一、日志输出二、字符串拼接三、日期比较四、常用注解五、Lombok的原理 提示:以下是本篇文章正文内容,下面案例可供参考 一、日志输出 之前使用的方式。在要使用的类里面定义日志类: private static Logger logger LoggerFactory…...
Android Studio 安装配置教程(Windows最详细版)
目录 前言 Android Studio 下载 Android Studio 安装 Android Studio 使用 一、创建默认项目(Compose) 二、创建常规项目 三、使用ViewBinding 四、查看Gradle版本、SDK版本、JDK版本 ① Gradle版本 ② SDK版本 ③ JDK版本 前言 Android开发…...
Cesium绘制可编辑线
Cesium 第一章 绘制可编辑线 Screen-2024-09-17-202059的副本 文章目录 Cesium一、绘制线二、编辑线三、使用 一、绘制线 1、方法 //场景相机控制viewer.scene.screenSpaceCameraController.enableRotate false; //cesium相机控制 绘制和编辑时 禁止转动场景// 鼠标样式修改…...
【算法】差分思想:强大的算法技巧
📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…...
微软开源项目 Detours 详细介绍与使用实例分享
目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C++软件异常排查从入门到精通系列教程…...
Numba基础
1. Numba 基础 1.1 什么是 Numba? Numba 是一个 JIT 编译器,用于加速数值计算。它通过即时编译技术,将 Python 代码在运行时编译为机器代码,极大地提升执行速度,特别适合循环和矩阵操作等密集型计算。 2. Numba 基本…...
[JAVA]介绍怎样在Java中通过字节字符流实现文件读取与写入
一,初识File类及其常用方法 File类是java.io包下代表与平台无关的文件和目录,程序中操作文件和目录,都可以通过File类来完成。 通过这个File对象,可以进行一系列与文件相关的操作,比如判断文件是否存在,获…...
oracle停止当前运行的JOB或kill会话
在Oracle中,可以使用DBA_SCHEDULER_JOBS视图来查找当前正在运行的作业(job),并使用DBMS_SCHEDULER.STOP_JOB过程来停止它们 SELECT JOB_NAME, STATE FROM DBA_SCHEDULER_JOBS WHERE STATE RUNNING; SELECT * FROM DBA_SCHEDULE…...
SpringBoot 消息队列RabbitMQ 消息可靠性 数据持久化 与 LazyQueue
介绍 在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟 一旦MO宕机,内存中的消息会丢失内存空间有限,当消费者故障或处理过慢时,会导致消息积压,引发MQ阻塞 在消息队列运行的过程中…...
CLIP论文中关键信息记录
由于clip论文过长,一直无法完整的阅读该论文,故而抽取论文中的关键信息进行记录。主要记录clip是如何实现的的(提出背景、训练数据、设计模式、训练超参数、prompt的作用),clip的能力(clip的模型版本、clip…...
sshj使用代理连接服务器
之前我是用jsch连接服务器的,但是没办法使用私钥连接,搜了一下似乎是不支持新版的SSH-rsa,并且jsch很久没更新了,java - "com.jcraft.jsch.JSchException: Auth fail" with working passwords - Stack Overflow 没办法…...
【Leetcode:1184. 公交站间的距离 + 模拟】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
VRRP 笔记
一、概念: vrrp:Virtual Router Redundancy Protocol 虚拟路由冗余协议,当网关发生故障时,进行主备切换,保证业务连续性 把多台物理机的网关虚拟成一台Virtual Router,称为 VRID VIP:虚拟IP VM…...
【洛谷】P3743 小鸟的设备 的题解
【洛谷】P3743 小鸟的设备 的题解 题目传送门 题解 水一道二分 qaq 刚开始考虑的是动态规划,但是动态规划并不能维护题目所要求的东西。所以我们将思路转向另一种求最值问题的方法:二分答案。 首先,如果一个设备在 t t t 的时间内消耗的…...
算法面经手撕系列(2)--手撕BatchNormlization
BatchNormlization BatchNormlization的编码流程: init阶段初始化 C i n C_in Cin大小的scale向量和shift向量,同时初始化相同大小的滑动均值向量和滑动标准差向量;forward时沿着非channel维度计算均值、有偏方差依据得到均值和有偏方差进…...
mysql-搭建主从复制
文章目录 1、准备主服务器2、准备从服务器3、主库配置3.1、创建MySQL主服务器配置文件: 4、从库配置5、搭建主从&测试5.1、使用命令行登录MySQL主服务器5.2、主机中查询master状态:5.3、从机中查询slave状态:5.4、主机中创建slave用户&am…...
MiniMaxi-共创智能新体验新手入门
新手快速入门 注册指南 个人用户 直接注册即可。 企业团队 主账号:注册时填写的姓名与手机号将成为企业账号的管理员。子账号:在用户中心创建,数量不限。 主账号与子账号权益 相同权益:子账号享有与主账号相同的使用权益和速…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

