首页 > 其他分享 >【自己搭建一个:端到端的语音+大模型聊天机器人】

【自己搭建一个:端到端的语音+大模型聊天机器人】

时间:2023-12-06 16:00:31浏览次数:40  
标签:https wenet 模型 机器人 install pip 端到 com 搭建

概要

发篇文章记录一下最近搞的语音+大模型聊天机器人的搭建过程,供交流学习。有正反馈的话会继续优化。

整体架构流程

注意:借传统的基于RASA的对话机器人的图一用,本博会把NLU(Natural Language Understanding)和 Dialogue Management这两个组件,用大模型来替代。

组件及模型说明:

  1. 用户通过麦克风输入语音(就是说话,本博是用户对着PC上的麦克风说话)
  2. STT(Speech-To-Text)模型:语音到文本的转换模型,本博采用开源的wenet模型(https://wenet.org.cn/wenet/python_package.html)
  3. NLU(Natural Language Understanding)和 Dialogue Management:本博采用Chinese-LLaMA-Alpaca-2(https://github.com/ymcui/Chinese-LLaMA-Alpaca-2/wiki/llamacpp_zh)
  4. TTS(Text-To-Speech)模型:文本到语音的转换模型,本博采用开源的PaddleSpeech(https://github.com/PaddlePaddle/PaddleSpeech/wiki/PaddleSpeech-Server-RESTful-API)

硬件部分

采用了两台CentOS7.9的云服务器,具体配置如下:

第一台服务器(192.168.0.92):

4vCPUs | 16GiB | s3.xlarge.2 | CentOS 7.9 64bit

第二台服务器(192.168.0.222):

4vCPUs | 8GiB | s3.xlarge.2 | CentOS 7.9 64bit

环境部分

需要在两台服务器上准备Anaconda的Python环境,操作命令如下:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
vi ~/.bashrc
export PATH=$PATH:~/miniconda3/bin # 将此命令加入到.bashrc中
source ~/.bashrc

conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main/
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free/
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/r/

pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
pip install -U pip

STT(Speech-To-Text)模型

注意:部署在第一台服务器上(本博是:192.168.0.92),请暴露 8501 端口,操作命令如下:

conda create wenet python==3.9
source activate wenet # 或者conda activate wenet
git clone https://github.com/wenet-e2e/wenet.git
cd wenet
pip install -e .

git clone [email protected]:genhot/learning/voice-chatbot.git
pip install -r requirements.text

nohup python ./runtime/web/app.py > wenet.log 2>&1 &

完成后,你应该可以通过http://your_first_ip:8501来访问gradio的页面了。但是功能还没完成,它依赖于接下来的TTS模型和LLM模型,让我们继续。

TTS(Text-To-Speech)模型

注意:部署在第一台服务器上(本博是:192.168.0.92),请暴露 8090 端口,操作命令如下:

git clone https://e.coding.net/genhot/learning/PaddleSpeech.git
conda create -n paddle python=3.8
conda activate paddle
conda install -y -c conda-forge sox libsndfile swig bzip2
sudo yum install gcc gcc-c++
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
# 部分用户系统由于默认源的问题,安装中会出现 kaldiio 安转出错的问题,建议首先安装pytest-runner:
pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple 
# 请确保目前处于PaddleSpeech项目的根目录
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple --use-pep517
pip install opencc-python-reimplemented==0.1.6

#测试一下安装是否成功
paddlespeech tts --input "你好啊!" --output output.wav

LLM(Large Language Model)模型

注意:部署在第二台服务器上(本博是:192.168.0.222),请暴露 2900 端口,操作命令如下:

先创建一个Conda环境

conda create -n llamacpp python==3.10 # 我们后面会用llamacpp来对Chinese-Alpaca-2-7B做量化,好让模型在4核8G的CPU上能推理起来
source activate llamacpp

量化工具(llama-cpp)准备

##开始编译llama-cpp
git clone [email protected]:genhot/learning/llama-cpp.git
sudo yum install -y centos-release-scl
yum install devtoolset-11
source /opt/rh/devtoolset-11/enable
gcc --version
cd llama-cpp
make
## 编译结束

## 安装python依赖
source activate llamacpp
cd llama-cpp
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
pip install -U pip
pip install -r requirements.txt
pip install -r requirements-hf-to-gguf.txt

模型下载和量化

llama-cpp准备完工,我们开始从自己的百度网盘上下载Chinese-Alpaca-2-7B模型(我很大,你忍一下,哈哈哈)。
我们会部署Chinese-Alpaca-2-7B(https://github.com/ymcui/Chinese-LLaMA-Alpaca-2)模型,具体细节不在今天的文章中,我们先用它。 很多朋友会碰到不能从huggingface下载模型的囧境。可以考虑把这个模型保存到自己的百度网盘中,再用bypy工具下载到自己的服务器。

pip install bypy
bypy info # 认证自己的百度网盘账号,完成认证后,百度网盘上“我的应用数据”下面会出现一个bypy文件夹

请先把https://pan.baidu.com/share/init?surl=Qk3U1LyvMb1RSr5AbiatPw&pwd=bfis保存到自己的百度网盘,然后把模型文件夹移动到百度网盘的bypy目录下,完成后,我们开始下载和量化模型。

mkdir zh-models
cd zh-models
bypy downdir llms/chinese-alpaca-2-7b-hf
cd chinese-alpaca-2-7b-hf
python convert.py zh-models/chinese-alpaca-2-7b-hf/
./quantize ./zh-models/chinese-alpaca-2-7b-hf/ggml-model-f16.gguf ./zh-models/chinese-alpaca-2-7b-hf/ggml-model-q4_0.gguf q4_0

量化完成,让我们启动LLM Server

cd llama-cpp
nohup ./server -m ./zh-models/chinese-alpaca-2-7b-hf/ggml-model-q4_0.gguf -c 512 --host 0.0.0.0 --port 2900  > server.log 2>&1 &

启动成功后,LLM模型的服务地址是 http://your_second_ip:2900(本博是 http://192.168.0.222:2900

总结部分

如果以上步骤你顺利完成了,我们至此会有以下服务:

  1. 语音输入及识别:http://192.168.0.92:8501。用于把语音转换为文字,是实验的入口。
  2. 大模型服务:http://192.168.0.222:2900。以第一步的结果为输入,大模型输出会话结果。
  3. 文字到语音服务:http://192.168.0.92:8090。把第二部的输出文字转换为语音,并且在第一步的界面上播放

附录部分

非Https浏览器禁用麦克风的问题

Chrome浏览器对非Https的链接,现在统统禁用麦克风,解决办法如下:
在Chrome浏览器中输入chrome://flags/#unsafely-treat-insecure-origin-as-secure,然后在"Insecure origins treated as secure"中填入你的地址,例如http://your_ip:8501,这地方的your_ip一般是你第一台服务器的公网IP地址。

标签:https,wenet,模型,机器人,install,pip,端到,com,搭建
From: https://www.cnblogs.com/aipowner/p/17879745.html

相关文章

  • 大模型环境搭建(二)
    二:Conda安装1.下载链接:https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe2.安装完之后,要修改以下他的执行策略!点开始菜单,打开:AnacondaPowershellPrompt(miniconda3)然后输出以下内容,然后输入大写“A”回车确认:Set-ExecutionP......
  • day 01 计算机基础和环境搭建
    1.计算机基础1.1基本概念计算机的组成计算机是由多个硬件组合而成,常见的硬件有:CPU、硬盘、内存、网卡、显示器、机箱、电源...操作系统用于协调计算机的各个硬件,让硬件之间协作工作,以完成某个目标-Windows-Linux-Mac软件在安装上操作系统之后,我们会在自己电......
  • 低代码开发实践:从零开始搭建一个库存管理系统
    本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。I.引言低代码开发是一种软件开发方法论,旨在通过减少手动编写代码的工作量,加快应用程序的开发速度和交付时间。它基于图形化的界面和可视化工具,使开发者能够......
  • Windows上使用Docker搭建ChirpStack私有LoRa服务端
    1.安装docker运行docker,这里就不细说了2.下载ChirpStack项目包ChirpStack提供了一个包含示例DockerCompose配置的存储库,以帮助开始使用ChirpStack,此存储库位于chirpstack-docker:SetupChirpStackusingDockerCompose,克隆项目文件到本地电脑,可以使用以下命令:gitcloneht......
  • 搭建DG备库Recover database报错ORA-19909、ORA-01110
    一、问题现象客户环境LinuxOracle11.2.0.4两节点RAC主库,2节点备库;需要对这个客户的数据库使用dg切换进行迁移;第一轮搭建ADG完成后,failoverDG备库变成测试库给开发应用人员进行测试;第二轮正式切换之前,搭建重建ADG环境,restoredatabase正常,recoverdatabase报错ThuOct......
  • 抖音自动点赞评论刷视频机器人
    影刀直接获取我的应用,进行测试https://api.winrobot360.com/redirect/robot/share?inviteKey=9cd173e2024d2440 按照以下流程执行打开Edge浏览器,打开www.douyin.com键盘输入x,打开评论无限循环等待元素输入框出现键盘输入z,点赞视频如果输入框没出现,键盘输入x,打开......
  • sping_boot学习系列-搭建springboot项目工程
    搭建springboot工程方式一.通过idea SpringInitializr搭建详细步骤:1.创建一个新项目File->New->Project...2.项目环境配置选择SpringInitializr(20231205:注最低版本是jdk17,若搭建jdk8版本的,可先搭建jdk17版本的,修改pom.xml文件)默认即可,可修改项目名称选择maven......
  • 年度最佳!推荐3款产品指南搭建工具!
    引言:在当今竞争激烈的市场中,为产品提供清晰、易懂的指南和文档非常重要。而搭建一个优质的产品指南网站能够帮助企业提供一流的技术支持和用户体验。在本文中,我们将推荐三款备受赞誉的产品指南搭建工具,其中包括备受推崇的Helplook,助您为产品提供卓越的指南服务。Helplook:Helplook是......
  • Linux搭建Docker Registry本地镜像仓库并且实现无公网远程上传本地镜像
    DockerRegistry本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pullorpush(拉取和推送)镜像,不受本地局域网限制!1.部署DockerRegistry使用官网安装方式,docker命令一键启动,该命令启动一个registry的容器,版本是2,挂载宿主机端口是5000端口,挂载后,5000端口就是我......
  • 超详细Linux搭建Java开发环境
    硬件JDK1.8.0_121(截止2017-1-26最新)CentOS7(截止目前最新版)下载jdk8http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择对应jdk版本下载。获取root权限密码默认是不显示的,只管输入就行了,然后回车获取root权限[seeway@lo......