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

news2024/11/29 0:48:19

零.功能介绍

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

  • 体验地址: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.coloradmin.cn/o/1599139.html

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

相关文章

2024年nodejs调用小红书最新关注(粉丝)follow接口,api接口分析2004-04-16

一、打开chrome按f12,点击右上角的“关注”按钮,抓包位置如下: (图1 follow接口) 二、follow接口分析 1、请求地址 https://edith.xiaohongshu.com/api/sns/web/v1/user/follow 2、请求方法: POST 3、请求头: :authority: edith…

【绘图案例-带圆环的图片-图片 Objective-C语言】

一、接下来,我们接着来说,带圆环的图片,图片, 1.我们还差这个,图片,啊, 图片还没有画上去啊,圆环已经画完了, 接下来呢,我们应该尝试着去画图片, // 12.画图片 image drawAtPoint:(CGPoint) 如果我直接这么着去画的话, 那么,实际上,就会把那个方形的东西,…

Linux Shell Script 编程详解

1. Shell Script入门介绍 1.1 什么是Shell Shell 是指一种应用程序,它是用户使用 Linux 的桥梁,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本(shell script),是一种为…

移动端web适配方案

以下是移动端适配的多个方案,也可以说说你是怎么做的。 正文 自适应:根据不同的设备屏幕大小来自动调整尺寸、大小 响应式:会随着屏幕的实时变动而自动调整,是一种更强的自适应 为什么要做移动端适配? 目前市面上…

亚马逊云科技数据工程师考试官方免费课程上线啦

自从上次小李哥分享了AWS Data Engineer Associate证书首通经验后,有非常多的小伙伴们问我,应该怎么复习这门考试呢? 这门考试是AWS针对最近大热🔥的AI、数据分析、数据科学等行业,推出的全新考试。因为刚刚推出&#…

JavaEE > > Spring(1)

Spring Spring:包含众多方法的 IoC 容器.,是一个集成很多方法的框架,让应用程序开发更加简单. IoC:Inversion of Control 翻译成中⽂是“控制反转”的意思. 这是一个设计思想,而不是一个具体的实现方式.该思想就是把原本在程序中…

海外云手机为什么适合社媒运营?

如今,社媒营销如果做得好,引流效果好的账号,可以用来带货变现,而外贸、品牌出海也同样都在做社媒营销,Tik Tok、facebook、ins等热门的海外社媒平台都是行业密切关注的,必要的时候,大家会使用海…

区块链实验室(35) - 编译solana for ARM64版

今天终于成功编译solana for arm64版,编译时间巨长。见下图所示。编译步骤详见solana网站https://github.com/solana-labs/solana和https://docs.solanalabs.com/。

ORA-00742 ORA-00312 恢复---惜分飞

有客户反馈,断电之后数据库启动报ORA-00742和ORA-00312,无法正常open 我们远程上去尝试open库结果也报同样错误 [oracleoldhis oradata]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Apr 10 09:40:03 2024 Copyright (c) 1982, 2013, Oracle. A…

计算机网络(五)传输层

传输层 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最低层 传输层功能: 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别区别是&#xf…

MySQL 试图

视图功能在 5.0 以后的版本启用 视图是一张虚表。数据表确实包含了具体数据并且保存到硬盘中的实表。视图使用数据检索语句动态生 成的一张虚表。每一次数据服务重启或者系统重启之后,在数据库服务启动期间,会使用创建视图的语 句重新生成视图中的数据&…

揭秘智慧礼品背后的故事

如若不是从事技术行业,在罗列礼品清单时,可能不会想到 “数据”,但幸运的是,我们想到了。如何将AI技术应用到当季一些最受青睐的产品中去,训练数据是这一智能技术的背后动力。很多电子设备或名称中带有“智能”一词的设…

频率域滤波总结

我本来想写在一起的,但是这样的话就没有重点了。分开写更能总结出来问题。这里的步骤5的对称滤波函数确实是(2M-1)x(2N-1)的大小,但是书上还说了如下图所示的问题: 首先第一个问题是乘积的问题,为什么普通的函数乘积也需要填充零?…

【电控笔记6.2】拉式转换与转移函数

概要 laplace:单输入单输出,线性系统 laplace 传递函数 总结

DNS解析实验

一、DNS正向解析实验 准备工作 服务端及客户端都关闭安全软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld服务端安装bind软件 [rootserver ~]# yum install bind -y服务端配置静态IP [rootserver ~]# nmcli c modify ens33 ipv4.m…

浅尝一下ECS(Entity Component System)(学习笔记)

参考文章:浅谈Unity ECS(一)Uniy ECS基础概念介绍:面向未来的ECS - 知乎 (zhihu.com) 视频链接:【青幻译制】GDC讲座系列之三 守望先锋的游戏架构和网络代码_哔哩哔哩_bilibili 云风的 BLOG: 浅谈《守望先锋》中的 E…

消息队列和分布式消息队列

文章目录 分析系统现状不足中间件消息队列什么是消息队列?应用场景消息队列的模型为什么不直接传输,而要用消息队列?为什么要用消息队列?消息队列的缺点? 分布式消息队列分布式消息队列的优势?消息队列应用…

PLC远程通信:实现工业自动化的关键技术

在当今高度信息化和自动化的时代,工业领域对于实时数据的准确传输和迅速响应提出了更高要求。而PLC(可编程逻辑控制器)远程通信技术,正是能够实现工业自动化的关键技术之一。 首先,我们需要了解PLC远程通信的原理。PLC作为一种专用计算机控制…

设计模式代码实战-组合模式

1、问题描述 小明所在的公司内部有多个部门,每个部门下可能有不同的子部门或者员工。 请你设计一个组合模式来管理这些部门和员工,实现对公司组织结构的统一操作。部门和员工都具有一个通用的接口,可以获取他们的名称以及展示公司组织结构。…

学习BOM

目录 前言: 1. BOM组成: 1.1Window 对象: 1.1Location 对象: 1.2Navigator 对象: 1.2.1 navigator 对象包含了关于浏览器的信息包括: 1.3History 对象: 1.4常用的history的方法和属性: 1.4Document…