训练 AI 数字人说话的语气和语调可以从以下几个方面入手:
此外,对于数字人说话相关的算法开源代码有很多,如 ASR 语音识别方面有 openai 的 whisper、wenet、speech_recognition 等;AI Agent 方面大模型有 ChatGPT、Claude、ChatGLM 等,Agent 部分可使用 LangChain 的模块自定义;TTS 方面有微软的 edge-tts、VITS、so-vits-svc 等。
如果都要自建代码实现各模块,开发工作量巨大,迭代难度高,个人开发者可借助开源社区的力量,如 dify、fastgpt 等成熟的高质量 AI 编排框架,通过这些框架快速编排出自己的 AI Agent。在开源项目中,使用 dify 框架可利用其编排和可视化交互任意修改流程,构造不同的 AI Agent,实现相对复杂的功能。同时,Dify 的 API 暴露了 audio-to-text 和 text-to-audio 两个接口,基于此可将数字人的语音识别和语音生成都交由 Dify 控制。使用 Dify 接口时需注意必须在应用编排功能中打开文字转语音和语音转文字功能,且只有接入了支持 TTS 和 SPEECH2TEXT 的模型供应商,才会在功能板块中展示出来。
有了数字人躯壳,我们就需要构建数字人的灵魂,让数字人具备各种智能,比如记得你的个人信息,充当你的个人助手;在某个领域具备更专业的知识;能处理复杂的任务等等。这些能力实现有以下几个需要注意的工程关键点:1.AI Agent:我们要想数字人像人一样思考就需要写一个像人一样的Agent,工程实现所需的记忆模块,工作流模块、各种工具调用模块的构建都是挑战;2.驱动躯壳的实现:灵魂部分怎样去驱动躯壳部分,我们可以将灵魂部分的所有接口定义出来,然后躯壳部分通过API调用,调用方式可以是HTTP、webSocket等等,视躯壳部分的实现而定。但包含情绪的语音表达以及如何保证躯壳的口型、表情、动作和语音的同步及匹配,目前主流方案只能做到预设一些表情动作,再做一些逻辑判断来播放预设,语音驱动口型相对来说成熟一些,但都是闭源的,效果可以参考Nvidia的Audio2Face(https://www.nvidia.cn/omniverse/apps/audio2face/)或则Live Link Face(Iphone APP)+Face AR Sample(UE);3.实时性:由于整个数字人的算法部分组成庞大,几乎不能实现单机部署,特别是大模型部分,所以算法一般会部署到额外的集群或者调用提供出来的API,这里面就会涉及到网络耗时和模型推理耗时,如果响应太慢就会体验很差,所以低延时也是亟需解决的一个问题。4.多元跨模态:仅仅是语音交互的数字人是远远不够的,人有五感(听觉、视觉、嗅觉、触觉、味觉),听觉只是其中一种,其他的感官可以根据实际需求来做,比如视觉我们可以通过添加摄像头数据来获取数据,再通过系列CV算法做图像解析等;5.拟人化场景:我们正常和人交流的时候不是线性对话,会有插话、转移话题等情况,这些情景如何通过工程丝滑处理。
上述算法开源的代码有很多,这里列出一些仓库供大家参考:ASR语音识别openai的whisper:https://github.com/openai/whisperwenet:https://github.com/wenet-e2e/wenetspeech_recognition(这是一个语音识别的接口集合,里面有不同实现的语音识别的接口):https://github.com/Uberi/speech_recognitionAI Agent大模型部分就比较多了,包括ChatGPT、Claude、ChatGLM、文星一言、千帆大模型、通义千问等等。Agent部分可以使用LangChain的模块去做自定义,里面基本包含了Agent实现的几个组件(https://www.langchain.com/)TTS微软的edge-tts:https://github.com/rany2/edge-tts,只能使用里面预设的人物声音,目前接口免费。VITS:https://github.com/jaywalnut310/vits,还有很多的分支版本,可以去搜索一下,vits系列可以自己训练出想要的人声。so-vits-svc:https://github.com/svc-develop-team/so-vits-svc,专注到唱歌上面,前段时间很火的AI孙燕姿。除了算法,人物建模模型可以通过手动建模(音频驱动)或者AIGC的方式生成人物的动态效果(例如wav2lip模型)实现,这样就完成了一个最简单的数字人。当然这种简单的构建方式还存在很多的问题,例如:如何生成指定人物的声音?TTS生成的音频如何精确驱动数字人口型以及做出相应的动作?数字人如何使用知识库,做出某个领域的专业性回答?
上述种种,如果都要自建代码实现各模块,开发工作量巨大,迭代难度也很高,对于个人开发者来讲不现实。因此我们推荐借助开源社区的力量,现在开源社区已经有了像dify、fastgpt等等成熟的高质量AI编排框架,它们有大量的开源工作者维护,集成各种主流的模型供应商、工具以及算法实现等等。我们可以通过这些框架快速编排出自己的AI Agent,赋予数字人灵魂。在笔者的开源项目中,使用了dify的框架,利用其编排和可视化交互任意修改流程,构造不同的AI Agent,并且实现相对复杂的功能,比如知识库的搭建、工具的使用等都无需任何的编码和重新部署工作。同时Dify的API暴露了audio-to-text和text-to-audio两个接口,基于这个两个接口就可以将数字人的语音识别和语音生成都交由Dify控制,从而低门槛做出来自己高度定制化的数字人(如下图),具体的部署过程参考B站视频:https://www.bilibili.com/video/BV1kZWvesE25。如果有更加高度定制的模型,也可以在Dify中接入XInference等模型管理平台,然后部署自己的模型。此外,数字人GUI工程中仍然保留了LLM、ASR、TTS、Agent等多个模块,能够保持更好的扩展,比如实现更加真实性感的语音转换、或者如果有更加Geek的Agent实现也可以选择直接后端编码扩展实现。上述Dify接口使用注意事项:1.使必须在应用编排功能中打开文字转语音和语音转文字功能,否则接口会返回未使能的错误。2.只有接入了支持TTS和SPEECH2TEXT的模型供应商,才会在功能板块中展示出来,Dify的模型供应商图标下标签有展示该供应商支持哪些功能,这里可以自行选择自己方便使用的。对于TTS,不同的模型供应商支持的语音人物不同,可以根据个人喜好添加。