AI数字人对话之RealChar框架源码解读

零.功能介绍

与虚拟角色(非形象)进行文本或语音会话

  • 体验地址:RealChar.

  • 代码库:GitHub - Shaunwei/RealChar: 🎙️🤖Create, Customize and Talk to your AI Character/Companion in Realtime (All in One Codebase!). Have a natural seamless conversation with AI everywhere (mobile, web and terminal) using LLM OpenAI GPT3.5/4, Anthropic Claude2, Chroma Vector DB, Whisper Speech2Text, ElevenLabs Text2Speech🎙️🤖

一.整体架构

二.技术选型

  • Web: Vanilla JS, WebSockets

  • Mobile: Swift, WebSockets

  • Backend: FastAPI, SQLite, Docker

  • Data Ingestion: LlamaIndex, Chroma

  • LLM Orchestration: LangChain, Chroma

  • LLM: OpenAI GPT3.5/4, Anthropic Claude 2

  • Speech to Text: Local Whisper, OpenAI Whisper API, Google Speech to Text

  • Text to Speech: ElevenLabs

  • Voice Clone: ElevenLabs

三.安装方法

  • Step 1. 拉取代码库

git clone https://github.com/Shaunwei/RealChar.git && cd RealChar
  • Step 2. 安装依赖

    •  安装音频处理库portaudio和ffmpeg

    # for ubuntu
    sudo apt update
    sudo apt install portaudio19-dev
    sudo apt install ffmpeg
    # for mac
    brew install portaudio
    brew install ffmpeg
  • 安装其他python依赖库

pip install -r requirements.txt
  • Step 3. 第一次使用时创建空的sqlite数据库

sqlite3 test.db "VACUUM;"
  • Step 4. 升级db

alembic upgrade head
  • Step 5. 配置.env: 更新API Key及相关信息

cp .env.example .env

特别说明:由于用到了webrtc,要求使用https,故本地调试时需要安装证书。方法如下:

1.安装mkcert

brew install mkcert

brew install nss

nss 是可选的,如果不使用或者不需要测试 Firefox,那么可以不安装 nss。

2.生成证书,并加入系统信任

mkdir -p ~/.cert

mkcert -key-file ~/.cert/key.pem -cert-file ~/.cert/cert.pem "localhost"

mkcert -install

3.修改服务,加入证书

@click.command(context_settings={"ignore_unknown_options": True})

@click.argument('args', nargs=-1, type=click.UNPROCESSED)

def run_uvicorn(args):

    click.secho("Running uvicorn server...", fg='green')

    subprocess.run(["uvicorn", "realtime_ai_character.main:app",

"--host", "localhost", "--ws-ping-interval", "60", "--ws-ping-timeout", "60", "--timeout-keep-alive", "60", "--ssl-keyfile", "/Users/chenxiangli/.cert/key.pem", "--ssl-certfile", "/Users/chenxiangli/.cert/cert.pem"] +list(args))

  • Step 6. 通过cli.py或uvicorn启动服务

python cli.py run-uvicorn
# or
uvicorn realtime_ai_character.main:app
  • Step 7. 启动客户端:

    • 为了更好地会话内容,建议使用GPT4,建议使用耳机以避免回声

    • 启动浏览器打开网址:https://localhost:8000

  • Step 8. 选择一个角色进行对话

四.角色制作

1.角色记忆库与特征语音生成

角色特征分成两个部分:角色的记忆库文件和角色的语音。其中最重要的部分是角色的记忆库文件,它是在GPT的帮助下生成的。要创建一个角色,首先我们需要检查GPT的记忆库是否包含有关该角色的信息。如果有,整个过程将会容易得多。

(1)角色记忆库创建

我们可以包含许多不同类型的文件,但最重要的是一个CSV文件。

以下两个部分描述了创建洛基记忆文件的过程:

1.如何生成50个洛基演讲示例:提示词:Help me find 50 examples of how Loki from Marvel Cinematic Universe talks. I want to generate a format like "context", "quote". It needs to be in csv format. The quote should only include Loki's words, represent Loki's personality and how he talks, and be an actual quote from a movie or novel, not made up. The context should be unique.参考文件:https://chat.openai.com/share/73f29bc2-bbfe-43f1-a3a7-a3ce82a299c3格式确保有三列,以下是具体的格式参考:https://github.com/Shaunwei/Realtime-AI-Character/blob/main/realtime_ai_character/chacater_catalog/marvel_loki/data/talk.csv
2.如何生成描述洛基背景的文件:提示词1: Do you know Loki from Marvel movies?提示词2: Write me a simple system prompt for a new version of you to be Loki the character, and the new version of you can speak and sound like Loki. Tell it as first person. Here is a previous example for a character.提示词3: Refine and simplify it into 100 words.参考提示文件:https://chat.openai.com/share/a2a213c7-cb1e-441e-a651-129333fefb72

(2)角色特征语音合成(基于ElevenLabs)

a.收集数据

在开始之前,您需要语音数据。下载高质量的纯人声音频剪辑。training_data文件夹以供参考。

  • 如果您要创建自己的数据集,请确保音频是高质量的。应该没有背景噪音,发音清晰

  • 音频格式必须为 mp3,总长度约为 1 分钟

b.创建 ElevenLabs 账户

访问 ElevenLabs 创建账户。您需要它来访问语音合成和语音克隆功能。

获取您的 ELEVEN_LABS_API_KEY

  1. 单击个人资料图标并选择“个人资料”。

  2. 复制 API 密钥

c.语音合成/语音克隆

请按照以下步骤克隆语音:

  1. 进入语音合成页面。

  2. 单击“Add Voice”。

  3. 单击“Add Generative or Cloned Voice”。

  4. 单击“Instant Voice Cloning”。

  5. 填写所有必需的信息并上传您的音频样本。

  6. 单击“Add Voice”。

d.测试你的声音

要测试您刚刚创建的声音:

  1. 返回语音合成页面。

  2. 选择您刚刚在“设置”中创建的声音。

  3. 输入一些文本并单击“Generate”。

e.微调你的声音

您可以通过调整系统和用户提示来使语音朗读效果更好。以下是一些提示:

  • 如果声音太单调,请降低稳定性以使其更加情绪化。然而,将稳定性设置为零有时会导致奇怪的口音。

  • 较长的句子往往会说得更好,因为它们为人工智能扬声器提供了更多可以理解的上下文。

  • 对于说得太快的较短句子,请替换“。”和 ”...”。添加“-”或换行符以暂停。

  • 添加与情感相关的单词或短语,或使用标点符号,如“!”、“?”为声音添加情感。

f.在我们的项目中使用您的自定义声音

您需要克隆语音的语音ID。就是这样:

  1. 转到 Text To Speech - ElevenLabs

  2. 选择获取语音 api

  3. 按照说明操作并在 Responses 中找到特定的 voice_id。

  4. 不要忘记使用 ELEVEN_LABS_API_KEY 和语音 ID 更新您的 .env 文件。

2.角色生成

(1)角色信息目录结构

character_catalog
├── ai_character_helper
│   ├── data
│   │   ├── background
│   │   ├── xxx.md
│   ├── system
│   └── user
├── loki
...
  • 每个文件夹是一个AI角色,如:loki

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

姿态估计-人脸识别mesh-3d手势识别-3d目标检测-背景分割-人脸关键点

往期热门博客项目回顾:点击前往 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上…

字节8年经验之谈 —— 聊一聊自动化测试为什么很难落地!

聊一聊自动化测试为什么很难落地 在软件开发和质量保障的领域,测试是确保软件质量的关键环节。自动化测试是一种利用脚本和工具自动执行测试用例的方法,可以提高测试效率、减少人工错误,并支持持续集成和交付。自动化测试作为提高测试效率和…

企业图纸管理软件,企业图纸管理软件有哪些推荐?

企业图纸管理软件是一种专门用于组织、存储、管理和共享企业图纸及相关文档的工具。这类软件可以帮助企业实现图纸的集中化、规范化管理,提高工作效率,降低管理成本。 企业图纸管理软件的核心功能通常包括以下几个方面: 集中化管理&#xff1…

bestvike --bvframe学习

ref title fetch后台api 分页属性,pagination 要差几条?pagelimit 在api中写一个饭方法,vue中用用他 vue.cinfig.js中配置别名 nacos微服务 实体类要继承basedata(封装了公共数据) 控制器autowired,getm…

lua 环境安装

下载地址: https://luabinaries.sourceforge.net/download.html 安装环境变量 检查一下是否安装成功,有版本号,打印一句话,如下表示成功 idea 安装插件,方便编写lua脚本 配置一下idea 运行测试 local function m…

Linux的重要命令(二)+了解Linux目录结构

目录 一.Linux的目录结构 二.查看文件内容命令 1.cat 命令 2.more 命令 3.less 命令 4.head 命令 5.tail 命令 6.拓展 head 和 tail 的其他用法 ​编辑 三.统计文件内容的命令-wc ​编辑 四.检索和过滤文件内容的命令-grep ​编辑 ​编辑 五.压缩命令 gzip 和 bz…

【SpringBoot】返回参数

返回参数 返回页面返回数据返回 html 代码返回 json 数据两数相加用户登录 返回页面 首先在 static 文件夹中创建 index.html 文件&#xff1a; 代码&#xff1a; <html> <body><h1>hello word!!!</h1><p>this is a html page</p> <…

JS-29-Promise对象

一、JavaScript的异步操作 在JavaScript的世界中&#xff0c;所有代码都是单线程执行的。 由于这个“缺陷”&#xff0c;导致JavaScript的所有网络操作&#xff0c;浏览器事件&#xff0c;都必须是异步执行。异步执行可以用回调函数实现&#xff1a; function callback() {c…

temux安装debian自用记录

http://ip:9001/ user/123 http://ip:5705/index admin/drpy 一、安装Ubuntu1804 1&#xff0e;首先安装termux.app 2&#xff0e;启动该app&#xff0c;输入命令 curl -Lo l l.tmoe.me; sh l 3&#xff0e;运行过程中连续选“Y”&…

ip数据报

IP数据报格式详解 在 TCP/IP 协议中&#xff0c;使用 IP 协议传输数据的包被称为 IP 数据包&#xff0c;每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文&#xff08;IP Datagram&#xff09;或者 IP 数据报。 IP 数据报文由首部&#xff08;称…

Linux学习-数据库

数据库软件: 关系型数据库: Mysql Oracle SqlServer Sqlite 非关系型数据库&#xff1a; Redis NoSQL 1.数组、链表、文件、数据库 数组、链表: 内存存放数据的方式(代码运行结束、关机数据丢失) 文件、…

GitHub repository - Branch - SSH clone URL - Clone in Desktop - Download ZIP

GitHub repository - Branch - SSH clone URL - Clone in Desktop - Download ZIP 1. Branch2. SSH clone URL3. Clone in Desktop4. Download ZIPReferences 1. Branch 显示当前分支的名称。从这里可以切换仓库内分支&#xff0c;查看其他分支的文件。 2. SSH clone U…

每日汇评:黄金会在鲍威尔讲话之前重回 2,400 美元吗?

在避险情绪的影响下&#xff0c;金价在 2400 美元下方巩固反弹&#xff1b; 尽管中东紧张局势有所缓和&#xff0c;美元仍因美国零售销售数据强劲而上涨&#xff1b; 由于有利的四小时技术结构&#xff0c;金价的看涨潜力仍然完好无损&#xff1b; 周二亚洲交易中&#xff0c;金…

智能装箱机:打造高效物流新时代的革命性工具

在快节奏的现代生活中&#xff0c;物流行业的效率与智能化水平直接关系到消费者的购物体验和企业的市场竞争力。装箱机作为物流包装中重要的一个环节&#xff0c;其智能化升级已成为行业发展的必然趋势。星派将与大家探讨装箱机为什么说是智能化装箱解决方案? 一、装箱机的智能…

喜讯 | “泰迪杯”数据挖掘挑战赛再次进入计算机类竞赛指数榜单

4月15日&#xff0c;第61届中国高等教育博览会在福州召开。在教师教学发展与创新人才培养论坛上&#xff0c;浙江大学何钦铭教授代表《全国普通高校大学生计算机类竞赛指数》专家工作组发布了最新一年的竞赛指数。据悉&#xff0c;今年的竞赛项目清单包含了28项赛事&#xff0c…

20.java openCV4.x 入门-Imgproc之点集拟合

专栏简介 &#x1f492;个人主页 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f4f0;专栏目录 Imgproc之点集拟合 一、拟合直线1.字段…

Android11应用安装未知来源的权限改动

最近开发的App需要下载安装另一个App。这就涉及到了app的安装代码。关于App的安装代码&#xff0c;写了不少&#xff0c;所以这一块觉得不是问题&#xff1a; 判断版本&#xff0c;Android8.0判断是否有未知来源安装全选&#xff0c;没有则打开未知来源安装权限设置界面去开启…

【团体程序设计天梯赛 往年关键真题 详细分析完整AC代码】L2-001 紧急救援(最短路+路径打印) L2-002 链表去重(模拟链表)

L2-001 紧急救援 最短路路径打印 作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时…

C语言:文件操作(三)

目录 前言 5、文章的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 结语 前言 本篇文章继续讲解文件操作&#xff0c;讲解文件的随机读写&#xff0c;主要有三个函数&#xff1a;fseek&#xff1b;ftell&#xff1b;rewind。 前面讲解的函数都是对文件内容进行顺序读写&#x…

win10 64位装三菱PLC软件出现oleaut32.dll拒绝访问

win10 64位装 三菱PLC软件GX works2出现以下情况&#xff1a;以下文件没有自注册或撤消注册 c:/Windows/SysWOW64/oleaut32.dll拒绝访问 经过百度说是兼容问题 解决方案&#xff1a;在安装包启动图标上右键-兼容性疑难解答-尝试建议的设置-测试程序。 点击测试程序后setup正常…