概述

本文介绍一个可以模仿你的表情的语音聊天机器人 —— 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)了。

制作

  1. 从 Google云盘 或者 Baidu网盘下载shape_predictor_68_face_landmarks.dat(已训练好的人脸检测模型)和 Facemoji_Plugins_Assets_1.5.0.unitypackage(精简的 OpenCV, Dlib, Live2D 和 Iflytek 库)

  2. 克隆下源码:git clone git@github.com:huihut/Facemoji.git

  3. 创建一个新的 Unity 项目,命名为 Facemoji

  4. Facemoji-master 文件夹中的 AssetsProjectSettings 替换 Facemoji 的同名文件夹

  5. shape_predictor_68_face_landmarks.dat 复制到 Facemoji/Assets/StreamingAssets/

  6. 导入 Facemoji_Plugins_Assets_1.5.0.unitypackage。导入后的文件结构如下:

  7. 转换平台到 Android(其他平台未适配)

  8. 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语音合成)相关推荐

  1. 实现一个简单的语音聊天室(源码)

    语音聊天室,或多人语音聊天,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 这篇文章将实现一个简单的语音聊天室,让多个人可以进入同一个房间进行语音沟通.先看运行效果截图: ...

  2. 一套代码,快速实现一个语音聊天室

    前言:本文将简要分享几个语音聊天室的应用场景,并讲述基于声网SDK,实现语音聊天室的步骤. 语音聊天在泛娱乐社交行业中有着重要的地位,行业中很多佼佼者也都为用户提供了语音聊天室,甚至有些平台最初就是依 ...

  3. python实现类似Siri的AI语音聊天机器人(需要图灵机器人和百度语音合成的API)

    程序简介:模仿Siri,参考微信公众号:学习python的正确姿势,在语音播放和搜索的基础上,增加了语音输入和打开常用软件功能. 一.配置 Windows10系统 python3.7 pycharm ...

  4. 抓住语音社交风口,1天快速搭建语音聊天室

    语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...

  5. Unity5.x实现简易语音聊天(一) 使用步骤

    0. 背景 语音聊天是游戏中重要的功能,它能便捷用户的聊天,增强用户的粘性.本文会讲述如何在Unity5.x中,使用素材[github地址]中的Unity5.x工程项目如何实现在windows中的简单 ...

  6. java 语音聊天室_如何实现百万级的语音聊天室

    上篇我们介绍了如何从零开始搭建一套语音聊天室后台,设计方案比较基础,本篇我们将介绍语音聊天室的升级版本--在海量用户同时在线的情况下,语音服务器的架构将如何升级改造. 互联网产品后台开发信奉一句话:先 ...

  7. Android端实现多人视频语音聊天|音视频开发

    1 多人视频通话功能 本文展示了如何使用 即构实时音视频SDK ZEGO Express SDK 构造多人视频通话场景,即实现多对多实时音视频互动.用户可在房间内与其余用户进行实时视频通话,互相推拉流 ...

  8. 语音聊天室源码开发点赞功能,用 MySQL 还是 Redis ?

    为了提升用户在语音聊天室源码中的互动性,一般在开发动态广场功能时会支持用户间对动态进行点赞,所以点赞功能可以说是语音聊天室源码开发的基础性功能,今天我们就来聊聊点赞.评论.收藏等这些场景的db数据库设 ...

  9. 试用php语言写气泡,如何用纯CSS实现语音聊天气泡框效果

    本篇文章主要给大家介绍怎么用纯css实现语音聊天气泡框效果. 推荐参考教程:<CSS教程> 语音聊天气泡框效果,在我们日常生活中或者社交网站上,都是非常常见且流行的一种对话框效果. 比如微 ...

  10. 基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人

    基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人 程序简介 代码一共分为以下几个模块 伪代码形式为 部分代码 源代码下载地址 程序简介 程序界面包含录音和发送两个按钮 点录音将开始 ...

最新文章

  1. Streaming源码解读之接收流数据的全生命周期
  2. 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅
  3. Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏
  4. c语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 - 电子工程世界-论坛 - 手机版...
  5. composer安装特别慢的解决方案
  6. 阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
  7. HTML5边玩边学(9):俄罗斯方块就是这么简单 之 数据模型篇
  8. STM8S——8位基本定时器(TIM4)
  9. android二级菜单ui,巧用PopupMenu实现NavigationView的二级子菜单
  10. 使用Java语言如何实现快速文件复制?
  11. 联想服务器改win7系统教程,联想笔记本Win10改Win7方法分享
  12. c#练习——简单的文字编辑器
  13. sql查看服务器版本信息,怎么查看SQL Server2000的版本号
  14. php cms后台管理系统,Phpcms v9管理后台首页内容自定义修改
  15. 开源CRM系统国内有哪些品牌做的好?
  16. 韦东山学习笔记——UART(串口)的使用
  17. html各种弹出框和提示框
  18. 机器学习(五)logistic回归
  19. Rust之错误处理(三):panic!还是不要panic!
  20. Git和小乌龟的下载安装及简单使用

热门文章

  1. 信息学奥赛 java C 选_信息学奥赛(NOIP)入门指南(新家长必读)
  2. 2021年G2电站锅炉司炉考试题库及G2电站锅炉司炉考试报名
  3. 分布式机器学习平台比较
  4. 数学公式神器【MathPix Snip】,截屏公式转为LaTeX代码
  5. VS Code设置插件默认安装路径
  6. http 请求 返回状态码 405 的问题
  7. 展望未来城市,万物皆可运营
  8. 利用matlab函数创建数组
  9. linux ftp命令大全,linux 操作 ftp 常用命令
  10. oracle经纬度换算成xy坐标,xy坐标转换经纬度【处置步骤】