一个可以模仿你的表情的语音聊天机器人——Facemoji 废萌(OpenCV+Dlib+Live2D+图灵机器人+讯飞IAT语音听写+讯飞TTS语音合成)
概述
本文介绍一个可以模仿你的表情的语音聊天机器人 —— Facemoji 废萌
这是个 Unity 项目,其暂时有两个模块 :
- 【模块一】是实时人脸卡通化(FaceTracking),使用 OpenCV 和 Dlib 检测面部表情,并实时转化为 Live2D 模型,然后可 录制 成 gif 图;
- 【模块二】是人工智能(AI)使用 图灵机器人、讯飞IAT语音听写、讯飞TTS语音合成 进行语音聊天。
预览
源码
源码:Github . huihut/Facemoji
下载
- 酷安 . Facemoji 废萌
- Google Play (需要梯子)
- Github . Facemoji/releases
- Google云盘 . Facemoji/Platform
- Baidu网盘 . Facemoji/Platform
为什么叫废萌(Facemoji)
首先,为什么叫废萌(Facemoji)?…emmm…这个项目其实是由 Animoji 启发的,由于当时 Animoji 没有开放 api,所以想开发个跨平台(Unity)的类似的项目,就叫 Facemoji。
至于中文名废萌嘛?…emmm…总觉得她除了卖萌没什么作用,所以就叫废(Face)萌(Moji)了。
制作
从 Google云盘 或者 Baidu网盘下载
shape_predictor_68_face_landmarks.dat
(已训练好的人脸检测模型)和Facemoji_Plugins_Assets_1.5.0.unitypackage
(精简的 OpenCV, Dlib, Live2D 和 Iflytek 库)克隆下源码:
git clone git@github.com:huihut/Facemoji.git
创建一个新的 Unity 项目,命名为 Facemoji
把
Facemoji-master
文件夹中的Assets
和ProjectSettings
替换Facemoji
的同名文件夹把
shape_predictor_68_face_landmarks.dat
复制到Facemoji/Assets/StreamingAssets/
导入
Facemoji_Plugins_Assets_1.5.0.unitypackage
。导入后的文件结构如下:
转换平台到 Android(其他平台未适配)
Build & Run
使用
实时人脸卡通化(FaceTracking)
使用 OpenCV 和 Dlib 检测面部表情,并实时转化为 Live2D 模型;
她可以跟着你的头部表情动,试着摇头看看吧。
录制 gif 图
点击顶部中间的录制键可以录制 3 秒的 gif;
录制状态为:Recording(准备录制)、PreProcessing(正在录制)、Paused(正在压缩成gif图)
生成的 gif 存储在 Application.dataPath
,Android 平台的话在
/storage/emulated/0/Android/data/com.huihut.facemoji/files/
语音和文字聊天(聊天机器人? 她说她是 AI,不是机器人! hhhh…)
使用 图灵机器人、讯飞 IAT 语音听写、讯飞 TTS 语音合成
她很智能(zhizhang),可以:
- 聊天对话
- 生活百科
- 数学计算
- 故事大全
- 笑话大全
- 成语接龙
- 星座运势
- 天气查询
- …
但是由于她是个中国 AI(机器人),图灵机器人只支持中文,所以她只能进行中文聊天,和她讲英文她只会翻译。
不过她以后会学习英文的(换个会讲英文的)。
Gif演示
异常问题
人不动时模型抖动问题(特别是眼睛眉毛)Facemoji/issues/1
原因
- 手/眼/眉等的轻微抖动
- Dlib 检测到的每一帧人脸特征点的位置会有轻微差距
解决
调整模型参数
如果人眼睛小的话,可以修改
FaceTracking.cs
中 live2DModelUpdate 方法,把睁开眼的区间改大一点,如下:
// eye_open_L // 左眼
float eyeOpen_L = getRaitoOfEyeOpen_L (points);
if (eyeOpen_L > 0.4f && eyeOpen_L < 1.0f)eyeOpen_L = 1; // 睁开眼
else if (eyeOpen_L >= 1.0f)eyeOpen_L = 2; // 睁大眼
else if (eyeOpen_L <= 0.4f)eyeOpen_L = 0; // 闭上眼
live2DModel.PARAM_EYE_L_OPEN = eyeOpen_L;
- 考虑使用卡尔曼滤波器或者其他滤波器过滤(未尝试)
修改说明
2018年03月23日因项目更新 v1.5.0 版本而对此博文做了修改。因博文内容不常改动,项目部署、文档等以Github为准。
一个可以模仿你的表情的语音聊天机器人——Facemoji 废萌(OpenCV+Dlib+Live2D+图灵机器人+讯飞IAT语音听写+讯飞TTS语音合成)相关推荐
- 实现一个简单的语音聊天室(源码)
语音聊天室,或多人语音聊天,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 这篇文章将实现一个简单的语音聊天室,让多个人可以进入同一个房间进行语音沟通.先看运行效果截图: ...
- 一套代码,快速实现一个语音聊天室
前言:本文将简要分享几个语音聊天室的应用场景,并讲述基于声网SDK,实现语音聊天室的步骤. 语音聊天在泛娱乐社交行业中有着重要的地位,行业中很多佼佼者也都为用户提供了语音聊天室,甚至有些平台最初就是依 ...
- python实现类似Siri的AI语音聊天机器人(需要图灵机器人和百度语音合成的API)
程序简介:模仿Siri,参考微信公众号:学习python的正确姿势,在语音播放和搜索的基础上,增加了语音输入和打开常用软件功能. 一.配置 Windows10系统 python3.7 pycharm ...
- 抓住语音社交风口,1天快速搭建语音聊天室
语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...
- Unity5.x实现简易语音聊天(一) 使用步骤
0. 背景 语音聊天是游戏中重要的功能,它能便捷用户的聊天,增强用户的粘性.本文会讲述如何在Unity5.x中,使用素材[github地址]中的Unity5.x工程项目如何实现在windows中的简单 ...
- java 语音聊天室_如何实现百万级的语音聊天室
上篇我们介绍了如何从零开始搭建一套语音聊天室后台,设计方案比较基础,本篇我们将介绍语音聊天室的升级版本--在海量用户同时在线的情况下,语音服务器的架构将如何升级改造. 互联网产品后台开发信奉一句话:先 ...
- Android端实现多人视频语音聊天|音视频开发
1 多人视频通话功能 本文展示了如何使用 即构实时音视频SDK ZEGO Express SDK 构造多人视频通话场景,即实现多对多实时音视频互动.用户可在房间内与其余用户进行实时视频通话,互相推拉流 ...
- 语音聊天室源码开发点赞功能,用 MySQL 还是 Redis ?
为了提升用户在语音聊天室源码中的互动性,一般在开发动态广场功能时会支持用户间对动态进行点赞,所以点赞功能可以说是语音聊天室源码开发的基础性功能,今天我们就来聊聊点赞.评论.收藏等这些场景的db数据库设 ...
- 试用php语言写气泡,如何用纯CSS实现语音聊天气泡框效果
本篇文章主要给大家介绍怎么用纯css实现语音聊天气泡框效果. 推荐参考教程:<CSS教程> 语音聊天气泡框效果,在我们日常生活中或者社交网站上,都是非常常见且流行的一种对话框效果. 比如微 ...
- 基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人
基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人 程序简介 代码一共分为以下几个模块 伪代码形式为 部分代码 源代码下载地址 程序简介 程序界面包含录音和发送两个按钮 点录音将开始 ...
最新文章
- Streaming源码解读之接收流数据的全生命周期
- 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅
- Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏
- c语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 -
电子工程世界-论坛 -
手机版...
- composer安装特别慢的解决方案
- 阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
- HTML5边玩边学(9):俄罗斯方块就是这么简单 之 数据模型篇
- STM8S——8位基本定时器(TIM4)
- android二级菜单ui,巧用PopupMenu实现NavigationView的二级子菜单
- 使用Java语言如何实现快速文件复制?
- 联想服务器改win7系统教程,联想笔记本Win10改Win7方法分享
- c#练习——简单的文字编辑器
- sql查看服务器版本信息,怎么查看SQL Server2000的版本号
- php cms后台管理系统,Phpcms v9管理后台首页内容自定义修改
- 开源CRM系统国内有哪些品牌做的好?
- 韦东山学习笔记——UART(串口)的使用
- html各种弹出框和提示框
- 机器学习(五)logistic回归
- Rust之错误处理(三):panic!还是不要panic!
- Git和小乌龟的下载安装及简单使用