Skip to content

久远,一个开发中的大模型语音助手。支持语音或文本输入,输出语音或文本。对接openai接口的对话模型。各个功能模块相互独立,可自由切换。(A developing llm voice assistant. It supports voice or text input and outputs voice or text. It integrates with the OpenAI interface for dialogue models. Each functional module is independent and can be freely switched.)

License

Notifications You must be signed in to change notification settings

lissettecarlr/kuon

Repository files navigation

首页 | 旧版QQ-bot | English

KUON

久远,一个开发中的大模型语音助手。支持语音或文本输入,输出语音或文本。能够对接openai接口的对话模型。各个功能模块独立,可以自由组合。

1 开发简述

基于之前的分支又大刀阔斧的重构了一遍,主要将各个功能模块分离,使用接口的方式对接,而不是之前的融为一体,极大的提升了速度。也为了能之后在各个终端跑起来。

最近从动画中提取了久远的语音,之后会训练语音模型。

2 功能

  • 使用文本输入交流,输出文本和语音
  • 使用语音交流,输出文本和语音
  • 检查功能,用于测试各部分是否正常
  • 久远提示词
  • 训练更好的vits模型
  • 文本命令
  • 语音命令

3 使用

3.1 环境

由于以将各个功能尽量剥离,所以配置也由原来的一个变成了多个,不过也就第一次改改,其实也还好。

3.1.1 基础环境

  • 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

3.1.2 语言转文本功能

现在被独立到仓库AutomaticSpeechRecognition。本仓库已经被添加相关代码到kuonasr文件夹,默认使用funasr接口方式,服务部署参考AutomaticSpeechRecognition仓库的说明,需要使用其他方式自行参考该说明。

使用前请根据funasr服务位置修改配置文件kuonasr/config.yaml

funasr:
   url: ws://172.0.0.1:1234

可以使用下列脚本拉去最新代码(通常不需要)

cd script
python asr_update.py

3.1.3 文本转语言功能

现在被独立到仓库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

3.1.4 对话模型

使用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最优解。

3.2 测试(可选)

使用前可以测试测试各个功能是否正常,分为:语音输入、语音转文本、对话模型、文本转语音、播放五个部分。每个测试都是独立的,可以选择跳过。

python check.py

3.3 运行

默认会打印所以日志,可以修改配置文件中的日志过滤器部分,例如只输出异常日志:

log_filter : True
log_filter_level : WARNING

在根目录的配置文件修改一些默认选项

# 是否开启语音输出
voice_output_sw : True

# 是否开启文本输出
text_output_sw : True

# 是否启动时开启语音输入
audio_input_sw : False

启动

python kuon.py

3.4 对话效果

该效果主要受到模型和提示词的影响,通过在llm/config.yaml中配置。需要注意的是目前gpt提示词我是通过动画字幕进行填写,量会很大,当使用付费api时会急速消耗token哦。看之后针对效果进行精简。

GPT4

gpt35

gpt3.5

gpt35

qwen-7b

非常容易重复回答,不太适应目前大量的提示词,该模型感觉在特化了知识问答方向后其他能力变弱了。

qwen

gpt-4o

该模型效果好,价格便宜,应该是最适合的模型了

gpt4o

4 其他

4.1 无法输入声音

在配置文件中可以调整麦克风的输入通道,设备上由那些通道可以通过命令查看,默认是1

python .\utils\get_input_channels.py
输出
麦克风 ID 0 - Microsoft 声音映射器 - Input
麦克风 ID 1 - 麦克风 (WO Mic Device)

还能调节输入声音的阈值threshold,阈值越高,需要的声音越大才能触发输入。

4.2 代码通过black格式化

black仓库

4.3 语音转文本相关问题

见仓库AutomaticSpeechRecognition,该仓库用于语音识别,目前有三种实现方式,分别是paraformer、whisper_online、funasr,能够独立使用

4.4 文本转语音相关问题

见仓库TextToSepeech,文本转语音,包含训练部分和推理部分,能本地运行也可服务器部署

About

久远,一个开发中的大模型语音助手。支持语音或文本输入,输出语音或文本。对接openai接口的对话模型。各个功能模块相互独立,可自由切换。(A developing llm voice assistant. It supports voice or text input and outputs voice or text. It integrates with the OpenAI interface for dialogue models. Each functional module is independent and can be freely switched.)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published