talkGPT4All 2.5-更多模型以及更加真实的TTS
1. 概述
talkGPT4All是基于GPT4All的一个语音聊天程序,运行在本地CPU上,支持Linux,Mac和Windows。它利用OpenAI的Whisper模型将用户输入的语音转换为文本,再调用GPT4All的语言模型得到回答文本,最后利用文本转语音(TTS)的程序将回答文本朗读出来。
今年4、5月份的时候,我发布了talkGPT4All 1.0版本和2.0版本,链接见下:
talkGPT4All: 基于GPT4All的智能语音聊天程序
talkGPT4All 2.0:现在支持8个语言模型了
大家反馈最大的问题是TTS太机械了,听着很难受(具体可以看前面两篇文章的评论区)。而最近TTS领域的进展很多,例如很受欢迎的 coqui-ai的TTS 库,提供了TTS、声音克隆和声音变换的功能。上周末尝试了一下,发现内置了一些开箱即用的TTS模型,刚好可以集成到 talkGPT4All 中,解决目前采用的 pyttsx3合成声音太机械的问题。
另外查看 GPT4All 的文档,从2.5.0开始,之前的.bin 格式的模型文件不再支持,只支持.gguf 格式的模型。因此我也是将上游仓库的更新合并进来,修改一下 talkGPT4All 的接口。
由于GPT4All 是从2.5.0开始不兼容.bin 格式老模型的,是一个很大的 break change。为了统一,我将更新后的 talkGPT4All 版本也命名为 2.5.0。
2.5.0版本效果视频见这里。
2. 如何使用
如果想直接使用的话,采用pip安装talkGPT4All包即可:
1 | pip install talkgpt4all |
安装完后进入聊天:
1 | talkgpt4ll |
talkGPT4All 现在支持15个模型,可以通过-m 来切换你想用的GPT模型,所有模型列表见 3.2章节。
1 | talkgpt4all -m gpt4all-13b-snoozy-q4_0.gguf |
3. 实现细节
这里重点讲一下此次更新中涉及到的两个点:coqui-ai/TTS如何使用以及GPT4All 2.5.0以后如何调用GPT模型。
3.1 coqui-ai/TTS使用
直接使用pip install TTS 即可安装 coqui-ai/TTS包,里面包含了很多功能,这里只简单展示如何调用一个现有的TTS模型。
首先列出所有的TTS模型:
1 | from TTS.api import TTS |
输出:
1 | 'tts_models/multilingual/multi-dataset/xtts_v2', |
我从英文(‘en’)的 TTS 模型中挑选了一个听起来比较好的 tts_models/en/ljspeech/glow-tts
, 作为 talkGPT4All的默认 TTS,调用方式如下:
1 | from TTS.api import TTS |
如果因为网络原因模型在Python代码中下载不了,可以手动下载模型,然后指定TTS初始化中的model_path 为模型的本地路径。
3.2 GPT4All 2.5.0以后模型的调用
gguf 格式的模型目前有15个,各有特点:
所有模型的详细信息在这里,下面我列出所有支持的模型,方便命令行调用时参考:
1 | mistral-7b-openorca.Q4_0.gguf |
而 GPT4All chat 模式的调用方式也发生了变化,新版本需要这么调用:
1 | gpt_model = GPT4All("mistral-7b-openorca.Q4_0.gguf", allow_download=True) |
需要显式地创建chat_session
context manager。
4. 总结
上面就是这次更新的主要内容,总的来说就是采用了更自然的TTS,更新代码以支持 GPT4All最新的break change。
欢迎大家试用、反馈bug。