当前位置: 首页 > news >正文

虚幻引擎 | (类恐鬼症)玩家和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.binggml-medium.en.bin)和多语言模型(ggml-tiny.binggml-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.

设置第一个窗口的初始提示。这可用于为识别提供上下文,使其更有可能正确预测单词,例如自定义词汇或专有名词。

在文字生成语音的过程中,通常是按文本逐字逐句“照读”的,但在某些高级的语音合成系统中,特别是当涉及到自然语言生成或调整发音的细节时,可能需要一定的随机性。这种随机性通常与语调、节奏、或情感表达相关,而不只是机械地“照读”。

以下是一些可能涉及随机性的场景:

  1. 语调和情感:为了让合成的语音听起来更自然、更像人类,系统可能会在语调、重音、或表达情感的过程中引入一些随机变化。通过这种方式,语音听起来就不会显得死板和单一,而是更接近真人的表达。

  2. 停顿和节奏:不同的语境下,停顿的长度和节奏可能有所不同。系统可以通过引入一定的随机性来模拟这些变化,从而生成更自然流畅的语音。

  3. 句子结构或表述方式的选择(适用于生成文本再语音的系统):有些系统在生成语音时,可能要先生成要表达的文本内容,而这个过程可能涉及到不同的句子结构或词汇选择。这时的随机性就是在文本生成阶段用到的,类似于 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阻塞 在消息队列运行的过程中&#xf…...

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 Ci​n大小的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-共创智能新体验新手入门

新手快速入门 注册指南 个人用户 直接注册即可。 企业团队 主账号:注册时填写的姓名与手机号将成为企业账号的管理员。子账号:在用户中心创建,数量不限。 主账号与子账号权益 相同权益:子账号享有与主账号相同的使用权益和速…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...