1. 概述

TL;DR: talkGPT4All 是一个在PC本地运转的依据talkGPT和GPT4All的语音谈天程序,通过OpenAI Whisper将输入语音转文本,再将输入文本传给GPT4All获取答复文本,最终利用发音程序将文本读出来,构建了完好的语音交互谈天进程。

实践运用作用: talkGPT4All: 依据Whisper + GPT4All的语音谈天机器人

实践上,它只是几个工具的简易组合,没有什么立异的地方(乃至不支撑多轮谈天,只支撑英文),但 talkGPT4All 有下面几个比较好的特色:

  • 一切算法本地运转,不触及API的调用,避免了国内无法拜访OpenAI API的问题
  • CPU 运转,无须 GPU 显卡
  • 占内存小,实测8G内存就能够跑起来
  • 速度还能够,测验8G Windows 一轮谈天小于1分钟, 16G Mac M1一轮谈天小于30秒
  • 集成的AI还算智能,至少答能对题,答复看起来是符合英语语法的

目前支撑渠道和验证的状况如下:

  • Mac M1,现已验证可用
  • Windows,现已验证可用
  • Mac Intel,未验证
  • Linux,未验证

接下来对为什么造轮子和装置进程进行一步步地阐明。假如不想了解细节的话,能够直接跳转到第3部分开端上手装置。

2. 为什么造这个轮子

谈天机器人是我比较喜欢的一个运用,机器+人类的思想是一个很有意思的场景。另一方面,通过一个智能机器人来操练英语口语,也是一个很实践的运用。

一直以来,想要做一个含有智能的谈天机器人运用都是难度很大的,尤其是智能化的程度,受学术研究进展的限制,无法做到很高。但是近期的AI LLM大迸发,让开发一个真实智能的AI谈天机器人越来越简略。

最早看到的是依据whisper.cpp的talk.wasm, 一个依据Whisper+GPT-2的浏览器对话机器人,实践测验后发现GPT-2还不可智能,答复许多时分都答非所问。

然后是在ChatGPT出来后,我在想能不能做一个Whisper + ChatGPT的智能谈天机器人呢,搜索后发现whisper.cpp的讨论区现已有人在讨论这个工作,不过没看到制品。

在ChatGPT 敞开API后,有人做了一个MacOS上的依据OpenAI API的语音谈天机器人talkGPT,简略好用,仅有的问题是需求凭借OpenAI API,目前国内是不太好拜访的。

再然后是llama.cpp,通过量化和大量工程优化,让原本参数量很大的LLaMA模型能够跑在一般的笔记本上(现在乃至支撑在Android上运转!),但实践测验通过量化后 LLaMA 7B 模型智能程度不太高,有时分会出错,而 更大的LLaMA 15B 和 30B 在8GB内存的Windows 机器上跑起来就比较难了(最新进展:大小20GB的30B模型能够在8G的系统上运转了,拜见这个优化和这儿的讨论)。

这周又呈现了gpt4all,依据 LLaMA 7B模型,收集近80万的GPT-3.5-Turbo对话数据进行finetune,作用看起来比 LLaMA 7B 要好。作者发布了他们训练好的通过量化的模型,大小3.9G,以及能够直接在PC上运转的二进制谈天程序,能够直接在各个渠道运转。

然后长久以来的TODO 能够完成了,在缝合了talkGPT和GPT4All后,就有了talkGPT4All。简略来说,是把talkGPT的OpenAI API 换成了 GPT4All供给的本地能够运转的量化模型,也能够说是在GPT4All的基础上添加了语音转文本和文本转语音的功用。

那下面咱们来看看怎样装置和运转这个缝合怪吧。

3. 构建环境

由于整个程序设计到 Python 代码环境的建立、Whisper 语音转文本模型的下载、GPT4All 言语模型的下载、GPT4All 谈天程序的下载、文本转语音程序的下载,整体链路略长,下面分步骤分渠道分别进行具体阐明。

3.1 Python环境的建立

在不同渠道 Python 代码环境的建立是一致的。

推荐运用>= 3.8的Python版别,由于新版别的Python有必定的速度提高。低版别可能一些功用不支撑。 首先clone代码:

git clone https://github.com/vra/talkGPT4All.git

后边假设代码库房的根目录为来进行指令阐明。

依据 Python自带的 venv 来建立阻隔的环境,并进行依靠装置:

cd <ROOT>
python -m venv talkgpt4all
source talkgpt4all/bin/activate
pip install -U pip
pip install -r requirements.txt

3.2 Whisper 语音转文本模型下载

Whisper 模型在调用时会自动下载,但有时分在指令行下载速度比较慢,咱们能够在浏览器中提前下载后放置到对应目录,解决这个问题。 Whisper 的一切模型地址拜见这儿,咱们用的是base.pt,地址是openaipublic.azureedge.net/main/whispe…,放置的目录是$HOME/.cache/whisper(Windows上是C:\Users\username.cache\whisper),通过浏览器或 wget 下载base.pt到这个目录就行。

3.3 GPT4All 言语模型的下载

言语模型放置目录是/models,依据 GPT4All 文档,下载方式包括 + 链接直接下载 + torrent下载

选择其中一种方式,将下载后的模型放置到/models目录下。

3.3 GPT4All 谈天程序下载

GPT4All 的作者打包了多渠道的二进制谈天程序,能够下载后直接运用,不必从源码编译 C++ 文件。

谈天程序的放置目录是/bin,不同渠道的下载地址如下:

  • Mac M1: raw.githubusercontent.com/nomic-ai/gp…
  • Mac Intel : raw.githubusercontent.com/nomic-ai/gp…
  • Linux : raw.githubusercontent.com/nomic-ai/gp…
  • Windows : raw.githubusercontent.com/nomic-ai/gp…

下载你的渠道的文件,放置到/bin。

3.4 文本转语音程序下载

在 Mac 下,自带say指令,能够将文本转语音,因此不需求额定装置工具。

在 Linux 下,有espeak指令能够来完成文本转语音,但需求额定装置,Ubuntu下的装置指令为sudo apt install espeak,别的发行版也能够用包办理装置。假如不可的话,尝试下载源码自行编译装置。

Windows 下有一个 say 指令的替代 wsay, 能够在这儿下载 wsay.exe,放置到/bin目录下。

4. 运用

装置完成后,进入目录,启用虚拟环境,运用python chat.py –platform 运转程序,分别是mac-m1, mac-intel, linux, windows。

Mac M1:

python chat.py --platform mac-m1

Mac Intel:

python chat.py --platform mac-intel

Linux:

python chat.py --platform linux

Windows:

python chat.py --platform windows

⚠️留意:目前只测验过 Mac M1 和 Windows,别的渠道未测验,如有问题,欢迎提 issue 和 PR 。

在 Mac 上运用作用如下:

talkGPT4All: 基于GPT4All的智能语音聊天程序

编辑切换为居中

添加图片注释,不超过 140 字(可选)

也能够拜见本文开头的视频或这儿。

5. 后续改进思路

目前完成仍是比较粗糙,方案后续会增加下面的功用(按完成难度从低到高摆放):

  • 验证 Linux,Mac Intel 和 WSL2 下能否正常运转
  • 增加多轮对话支撑
  • 增加中文支撑
  • 去掉编译好的二进制程序,包括 llama.cpp 源码,自行编译,支撑更灵活的运用
  • 更多作用更好模型的添加

欢迎依据这个库房进行修改和代码分发,等待创造出更有新意、更有运用价值的东西~

本文正在参加 人工智能创作者扶持方案