实时智能应答数字人搭建

语音驱动口型的算法
先看效果:

你很快就可以帮得上我了



FACEGOOD 决定将语音驱动口型的算法技术正式开源,这是 AI 虚拟数字人的核心算法,技术开源后将大程度降低 AI 数字人的开发门槛。FACEGOOD是一家国际领先的3D基础软件开发商,研究领域涉及生物软组织模拟、运动科学、计算机图形学等,其核心产品软件AVATARY广泛应用于国内外影视动画、游戏、虚拟人应用场景的娱乐、文化、媒体等行业的3D数字内容制作,提供优秀的数字工程设计、娱乐软件服务和媒体娱乐行业和基础设施行业的产品和技术解决方案。 2022年6月28日,FACEGOOD(量子动力(深圳)计算机科技有限公司)作为国内首批企业以Principle Member身份正式加入Metaverse Standard Forum(元宇宙标准论坛)。

下载工程

​git clone  https://github.com/FACEGOOD/FACEGOOD-Audio2Face.git



文件如下:
 



部署依赖

pip install PyAudio
pip install tensorflow
pip install websocket ,websocket-client



pyaudio库,使用这个可以进行录音,播放,生成wav文件等等。PyAudio 提供了 PortAudio 的 Python 语言版本,这是一个跨平台的音频 I/O 库,使用 PyAudio 你可以在 Python 程序中播放和录制音频。为PoTaTudio提供Python绑定,跨平台音频I/O库。使用PyAudio,您可以轻松地使用Python在各种平台上播放和录制音频.
PyAudio更多
相关版本如下:tersorflow-gpu 2.6
cudatoolkit 11.3.1 cudnn 8.2.1 scipy 1.7.1
python-libs:pyaudio 请求 websocket websocket-client

申请智能语音API接口
会话精灵(Talking Genie) “ www.talkinggenie.com ”,是思必驰新近推出的针对企业智能服务的定制平台,提供虚拟机器人的在线定制服务。
会话精灵为客户提供通过API接入的方式,获取智能会话、语音识别、语音合成等服务的能力。如果您自主开发前端应用,可以通过创建API接入类型的产品,对接会话精灵的相关能力。
请前往会话精灵文档中的以下地址: https: //login.tgenie.cn/,申请一个产品帐号来替换您项目中的产品帐号。选择 "智能语音API接入",获取到PID、PublicKey、SecretKey。
 



修改配置文件
将获取到的KEY填入到配置文件:zsmeif_aispeech_config.json 对应的参数中
productId:会话精灵ID
PublicKey是应用标识,在开放api调用过程中唯一标识一个应用;
SecretKey是调用API时的Token,用来验证请求的合法性
Token:Token api接口生成的token,必须和productId是对应的关系
 


接口: /aispeech/portal/api/v1/ba
同时支持语音识别、对话和语音合成功能
上述3个功能可同时使用
◑对query.type 传入 url 或者voice时,即表示使用语音识别功能。
一句话识别就是对一分钟内的短语音进行识别,适用于对话聊天,控制口令等较短的语音识别场景。
支持音频编码格式:pcm(无压缩的pcm文件或wav文件)、ogg\wav 8000\16000;   mp3\flv 16000\22050\44100;  amr 8000的单声道(mono)。
仅支持单声道
支持音频采样率:8000Hz、16000Hz。
支持对返回结果进行设置:处理唤醒词,是否识别结果需要加标点符号,是否将中文数字转为阿拉伯数字输出(逆文本)。支持多种语言的识别,资源模型选择
接口地址:https://api.talkinggenie.com/aispeech/portal/api/v1/ba/asr
◑传入dialog.enableDialog = true 时,即表示使用对话功能
会话接口地址:https://api.tgenie.cn/api/v1/ba
◑对output.type传入tts或者url时,即表示使用语音合成功能,语音合成提供将输入文本合成为语音二进制数据流或者音频下载url的功能
参数中的asr, tts, audio如果不传入,即表示使用默认参数,如果不符,会影响服务的使用
接口地址:https://api.tgenie.cn/api/v1/tts

实时语音识别,对于实时采集到的录音流传输做识别,适用于麦克风实时采集数据,边接收边识别的不间断识别的场景。
/aispeech/runtime/v3/recognize?productId=914005898&token=a616baa5-c203-4b0f-8cd0-1cd7418d734d

下载FaceGoodLiveLink
FaceGoodLiveLink.exe程序请从这里下载:data_all code : n6ty

启动

python zsmeif.py


 



当终端显示“run main”消息时,请运行位于/example/ueExample/文件夹中的FaceGoodLiveLink.exe
 



在UE项目的屏幕上点击并按住鼠标左键,即可与AI模型对话并等待语音和动画响应。
 




错误处理
1:ERROR: Handshake status 429 Too Many Requests -+-+- {'server': 'nginx/1.15.3', 'date': 'Mon, 04 Mar 2024 03:08:29 GMT', 'content-type': 'application/json; charset=UTF-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'cache-control': 'no-store, no-cache, must-revalidate, max-age=0', 'x-content-type-options': 'nosniff', 'x-frame-options': 'DENY', 'x-xss-protection': '1 ; mode=block'} -+-+- None
ERROR: Could not create connection: ws://api.tgenie.cn/runtime/v3/recognize?res=comm&productId=914020983&token=114d40a6-ad9d-408e-b47a-16d9c9fe1a9d
 



在 HTTP 协议中,响应状态码 429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”。
去会话精灵中申请一个产品帐号

2:Error Main loop: Expecting value: line 1 column 1 (char 0)
 


在会话精灵中选择 "智能语音API接入"。
这两个问题都是配置文件里的参数没有设置好。注意是一句话识别,传入的语音数据时长不能超过60s。


音频产生表情的流程
常规的神经网络模型训练大致可以分为三个阶段:数据采集制作、数据预处理和数据模型训练。
第一阶段,数据采集制作。这里主要包含两种数据,分别是声音数据和声音对应的动画数据。声音数据主要是录制中文字母表的发音,以及一些特殊的爆破音,包含尽可能多中发音的文本。而动画数据就是,在 maya 中导入录制的声音数据后,根据自己的绑定做出符合模型面部特征的对应发音的动画;
第二阶段,主要是通过 LPC 对声音数据做处理,将声音数据分割成与动画对应的帧数据,及 maya 动画帧数据的导出。
第三阶段就是将处理之后的数据作为神经网络的输入,然后进行训练直到 loss 函数收敛即可。
项目地址:GitHub - FACEGOOD/FACEGOOD-Audio2Face: http://www.facegood.cc  更多:机器之心

在Unity中应用可以用过构建python服务,Unity客户端开启麦克风录制音频,将音频数据发送给python服务端,服务端转换为驱动BlendShape的权重数据后,返回给Unity客户端进行驱动。需要注意的是Unity中BlendShape的权重范围并不是[-1,1],因此需要进行映射。

 



参考:
国内首批!FACEGOOD以主要成员正式加入Metaverse Standard Forum 出处:bilibili 作者:FACEGOOD官方

近实时智能应答 2D 数字人搭建  作者:薛东 AWS 解决方案架构师,负责基于 AWS 云平台的解决方案咨询和设计

别再狂吹数字人了 作者:商隐社

有道数字人形象定制

METAHUMAN轻松制作高保真数字人类

Facegood面捕全流程:AVATARY操作方法

Unity & FACEGOOD Audio2Face 通过音频驱动面部BlendShape

实时智能应答数字人搭建 作者 金双石科技

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/435064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分类算法(Classification algorithms)

逻辑回归(logical regression): 逻辑回归这个名字听上去好像应该是回归算法的,但其实这个名字只是在历史上取名有点区别,但实际上它是一个完全属于是分类算法的。 我们为什么要学习它呢?在用我们的线性回归时会遇到一…

Xss-labs-master 1-16关

第一关 <?php ini_set("display_errors", 0); $str $_GET["name"]; echo "<h2 aligncenter>欢迎用户".$str."</h2>"; ?> <center><img srclevel1.png></center> <?php echo "&l…

OpenAI-Sora学习手册

通过Sora看2024红利&#xff1a;文生视频&#xff0c;虽然AI不一定是风口&#xff0c;但一定是未来深入到生活工作&#xff0c;乃至思考的必备工具。 目录 Sora介绍 Sora基础介绍 Sora官方网址 Sora的价值 1.物理世界的交互 2.创意世界的绽放 3.多角色、更精准、更细节…

两天学会微服务网关Gateway-Gateway网关限流

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

shell脚本一键部署docker

Docker介绍 Docker 是一个开源的平台&#xff0c;用于开发、交付和运行应用程序。它利用容器化技术&#xff0c;可以帮助开发人员更轻松地打包应用程序及其依赖项&#xff0c;并将其部署到任何环境中&#xff0c;无论是开发工作站、数据中心还是云中。以下是 Docker 的一些关键…

ChatGPT提问技巧——控制温度和TOP-P样本

ChatGPT提问技巧——控制温度和TOP-P样本 “控制温度和Top-P抽样”在自然语言处理中&#xff0c;控制温度是指通过调整生成文本的随机性和多样性&#xff0c;而Top-P抽样是一种生成文本的策略&#xff0c;它选择概率最高的前P个词作为候选词汇。这两个技术常用于生成文本的质量…

ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

DataFunSummit 2023:洞察现代数据栈技术的创新与发展(附大会核心PPT下载)

随着数字化浪潮的推进&#xff0c;数据已成为企业竞争的核心要素。为了应对日益增长的数据挑战&#xff0c;现代数据栈技术日益受到业界的关注。DataFunSummit 2023年现代数据栈技术峰会正是在这样的背景下应运而生&#xff0c;汇聚了全球数据领域的精英&#xff0c;共同探讨现…

Android应用开发data android:schemes标签的作用

文章目录 data android:schemesAndroidManifest.xml 中 <data> 元素的属性详解 data android:schemes 在 AndroidManifest.xml 文件中&#xff0c; 标签的作用是指定该应用可以处理的 URI 方案。 URI 是统一资源标识符&#xff0c;它是一种用于标识资源的标准方法。URI…

【三】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题

数据库学生选择1122 数据库展示 course表展示 SC表展示 student表展示 数据库学生选课1122_1 第一题 第二题 第三题 第四题 第五题 数据库学生选课1122_2 第六题 第七题 第八题 第九题 第十题 结尾 最后&#xff0c;感谢您阅读我的文章&#xff0c;希望这些内容能够对您有所启…

列表吸顶分组之按首字母分组国家选区号

列表粘性分组之按首字母分组国家选区号 Android原生版本 直接先看UI图,效果如下 本来看起来也不难,我就想着上面常用区号那块不动,下面的列表滑动就行,但IOS说他滑动的时候上面也滑上去了,好吧,这也行;但最终效果做出来后,IOS滑动后会有按照国家名称首字母进行粘性分…

mysql从旧表 取出部分列并保存到新表几种方式介绍

在MySQL中&#xff0c;从旧表取出部分列并保存到新表有多种方式&#xff0c;主要包括以下几种&#xff1a; 1. 使用INSERT INTO ... SELECT语句&#xff1a; 这是最常用的方法。通过SELECT语句从旧表中选择需要的数据&#xff0c;然后使用INSERT INTO语句将数据…

cesium-切分地图

在cesium中只看想看到的部分地图&#xff0c;其他的隐藏。 做法如下 import {ArrowRight} from element-plus/icons-vue import {onMounted, ref, watch} from "vue"; import * as Cesium from "cesium"; import InitCesium from "../js/InitCesiumH…

快速了解Redis

Redis是什么&#xff1f; Redis是一个数据库&#xff0c;是一个跨平台的非关系型数据库&#xff0c;Redis完全开源&#xff0c;遵守BSD协议。它通过键值对(Key-Value)的形式存储数据。 它与mysql数据库有什么区别&#xff1f; redis通过键值对(Key-Value)的形式存储数据&…

【AI视野·今日Robot 机器人论文速览 第八十三期】Wed, 6 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 6 Mar 2024 Totally 30 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;SpaceHopper,外星探索多功能三足机器人 (from Robotic Systems Lab, ETH Zurich) Daily Robotics Papers A Safety-Criti…

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术正以惊人的速度发展&#xff0c;并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系&#xff0c;同时也为各行各业带来了全新的可能性。…

LeetCode刷题---填充每个节点的下一个右侧节点指针 II

题解:LeetCode题解 解题思想&#xff1a; 通过创建辅助指针来解决该问题 当当前节点cur不为空的时候&#xff0c;创建辅助节点dummy&#xff0c;使其一直作为每一层的第一个节点的前一个节点。 创建辅助指针pre&#xff0c;pre初始指向dummy&#xff0c;之后通过pre来填充当前层…

JVM-整体结构原理深度解析

JVM定义 JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后&#xff0c;Java语言在…

Tensorflow2.0笔记 - 常见激活函数sigmoid,tanh和relu

本笔记主要记录常见的三个激活函数sigmoid&#xff0c;tanh和relu&#xff0c;关于激活函数详细的描述&#xff0c;可以参考这里&#xff1a; 详解激活函数&#xff08;Sigmoid/Tanh/ReLU/Leaky ReLu等&#xff09; - 知乎 import tensorflow as tf import numpy as nptf.__ve…

spring boot3token拦截器链的设计与实现

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 写在前面 流程分析 需要清楚的 实现步骤 1.定义拦截器 2.创建拦截器链配置类 3.配置拦截器链顺序 4.配置拦截…