久远,一个开发中的大模型语音助手。支持语音或文本输入,输出语音或文本。能够对接openai接口的对话模型。各个功能模块独立,可以自由组合。
基于之前的分支又大刀阔斧的重构了一遍,主要将各个功能模块分离,使用接口的方式对接,而不是之前的融为一体,极大的提升了速度。也为了能之后在各个终端跑起来。
最近从动画中提取了久远的语音,之后会训练语音模型。
- 使用文本输入交流,输出文本和语音
- 使用语音交流,输出文本和语音
- 检查功能,用于测试各部分是否正常
- 久远提示词
- 训练更好的vits模型
- 文本命令
- 语音命令
由于以将各个功能尽量剥离,所以配置也由原来的一个变成了多个,不过也就第一次改改,其实也还好。
-
conda虚拟环境
conda create -n kuon python=3.10 conda activate kuon
-
pytorch(如果均使用接口方式则无需下列环境):
# CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-
安装基本软件包:
pip install -r requirements.txt
语言播放使用playsound,如果在windows上需要修改源码,在
Lib\site-packages\playsound.py
中移除utf-16进行解码的部分 -
或者直接用conda配置文件克隆(替代上面几步) 导出:
conda create --name kuon --file environment.yml
导出
conda env export > environment.yml
现在被独立到仓库AutomaticSpeechRecognition。本仓库已经被添加相关代码到kuonasr
文件夹,默认使用funasr接口方式,服务部署参考AutomaticSpeechRecognition仓库的说明,需要使用其他方式自行参考该说明。
使用前请根据funasr服务位置修改配置文件kuonasr/config.yaml
funasr:
url: ws://172.0.0.1:1234
可以使用下列脚本拉去最新代码(通常不需要)
cd script
python asr_update.py
现在被独立到仓库TextToSpeech,仓库分为训练模型的fineturn和推理的kuontts,本仓库已经将推理代码添加到kuontts
文件夹
默认使用了接口方式,也即这里无需安装环境,也无需放入模型,需要根据部署的服务修改kuontts/config.yaml
里的请求url和speaker。服务部署和其他问题请移步TextToSpeech仓库说明。
离线方式使用则修改配置文件kuontts/config.yaml
,将online
改为offline
,并将模型放入kuontts/offline/OUTPUT_MODEL
中,我这里暂时训练了paimon的模型来用。
如需要更新代码可以执行:
cd script
python tts_update.py
使用openai的api模式对接的模型服务,通过在llm中配置config.yaml指定对接对象。
url : http://172.0.0.1:1234/v1/chat/completions
key : qmdr-xxxx
model : gpt-3.5-turbo-16k
timeout : 120 # 历史对话的遗忘时间
preset : ./llm/kuon.json
其中timeout
表示进过多次时间后情况历史对话。preset
则是用于角色扮演的提示词地址。
目前其他开源模型也有openai的api部署方式,自己部署后修改这个配置文件即可。这边我试着用qwen-7b,但是角色扮演的效果很差,目前还是gpt-4最优解。
使用前可以测试测试各个功能是否正常,分为:语音输入、语音转文本、对话模型、文本转语音、播放五个部分。每个测试都是独立的,可以选择跳过。
python check.py
默认会打印所以日志,可以修改配置文件中的日志过滤器部分,例如只输出异常日志:
log_filter : True
log_filter_level : WARNING
在根目录的配置文件修改一些默认选项
# 是否开启语音输出
voice_output_sw : True
# 是否开启文本输出
text_output_sw : True
# 是否启动时开启语音输入
audio_input_sw : False
启动
python kuon.py
该效果主要受到模型和提示词的影响,通过在llm/config.yaml中配置。需要注意的是目前gpt提示词我是通过动画字幕进行填写,量会很大,当使用付费api时会急速消耗token哦。看之后针对效果进行精简。
非常容易重复回答,不太适应目前大量的提示词,该模型感觉在特化了知识问答方向后其他能力变弱了。
该模型效果好,价格便宜,应该是最适合的模型了
在配置文件中可以调整麦克风的输入通道,设备上由那些通道可以通过命令查看,默认是1
python .\utils\get_input_channels.py
输出
麦克风 ID 0 - Microsoft 声音映射器 - Input
麦克风 ID 1 - 麦克风 (WO Mic Device)
还能调节输入声音的阈值threshold,阈值越高,需要的声音越大才能触发输入。
见仓库AutomaticSpeechRecognition,该仓库用于语音识别,目前有三种实现方式,分别是paraformer、whisper_online、funasr,能够独立使用
见仓库TextToSepeech,文本转语音,包含训练部分和推理部分,能本地运行也可服务器部署