在Jetson上玩转大模型Day12:NanoLLM开发平台(2):语音对话助手

科技   2024-11-19 08:31   江苏  











 在Jetson上玩转大模型:写在前面

在Jetson上玩转大模型Day2:环境搭建

在Jetson上玩转大模型Day3:TGW智能助手

在Jetson上玩转大模型Day4:SDW文生图

在Jetson上玩转大模型Day5:Ollama指令模式的智能助手

在Jetson上玩转大模型Day6:Ollama的Webui智能助手

在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot

在Jetson上玩转大模型Day8:多模態搜圖的NanoDB

在Jetson上玩转大模型Day9:建立EffectiveViT测试环境

在Jetson上玩转大模型Day10:OWL-ViT应用

在Jetson上玩转大模型Day11:SAM2应用

在Jetson上玩转大模型Day12:NanoLLM開發平臺(1):Python API接口說明


前面已经简单介绍过在Jetson AI Lab所提供的NanoLLM开发平台上的API基本内容,使用这些API可以非常轻松地开发并整合比较复杂的应用,现在就用一个比较具有代表性的Llamaspeak对话机器人项目,做个简答的比较。

这个项目的工作原理如下图:


这个Llamaspeak项目在2023年提出第一个版本时,是以NVIDIA的RIVA语音技术结合Text-Generation-Webui界面与LLM大语言模型而成,整个安装的过程是相当复杂的,主要包括以下步骤:

1.安装与啓动RIVA Client服务:完整的安装与啓动教程在https://github.com/dusty-nv/jetson-containers/tree/master/packages/audio/riva-client里面,包括需要在NVIDIA的NGC上进行注册、下载执行脚本、修改配置文件、下载ASR与TTS所需要的模型,最后再进行啓动对应版本的容器;

2.载入配套的Text-Generation-Webui所需要的LLM模型:参考的安装程序在https://github.com/dusty-nv/jetson-containers/tree/master/packages/llm/text-generation-webui。

3.啓动HTTPS/SSL:浏览器需要使用HTTPS才能访问客户端的麦克风,因此需要创建一个自签名的SSL证书和密钥,如下指令:


$ cd /path/to/your/jetson-containers/data$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj '/CN=localhost'

4.执行Llamaspeak容器:

$ jetson-containers  run  --workdir=/opt/llamaspeak \  --env SSL_CERT=/data/cert.pem \  --env SSL_KEY=/data/key.pem \  $(./autotag llamaspeak) \  python3 chat.py --verbose

现在就可以打开浏览器,输入指定位置与端口号,开始以用户端(如笔记本)的麦克风与这个应用开始交流。

事实上有经验的工程师,可能都要花一整天时间,才有机会完成整个Llamaspeak系统的搭建,因爲过程中需要独立安装的东西太多,并且模型之间的交互关系较爲复杂,一般初学者要安装成功的机会并不高。

现在使用NanoLLM开发环境重新搭建Llamaspeak应用,就变得非常简单,而且在旧版只支持语言对话的功能之上,还增加了对多模态大语言模型的支持,这样的使用性就变得非常高了。现在只要执行以下指令,就能实现Llamaspeak的功能,不过在执行之前,请记得先到huggingface.co去申请一个TOKEN:

$ jetson-containers run --env HUGGINGFACE_TOKEN=$HUGGINGFACE_TOKEN \  --name  llamaspeak  --workdir /opt/NanoLLM  $(autotag nano_llm) # 进入容器后$ python3 -m nano_llm.agents.web_chat --api=mlc \    --model meta-llama/Meta-Llama-3-8B-Instruct  --asr=riva  --tts=piper


这里使用Meta-Llama-3-8B-Instruct模型,执行纯语言的对话。如果系统里面没有这个模型,就会从HuggingFace去下载,如下图所示:

最后停留在下面画面:

现在我们在浏览器里输入“https://127.0.0.1:8050”,就会进入操作界面:

这里我们尝试用文字输入问题,虽然llama-3-8b-instruct模型能支持中文,但是在ASR与TTS两端均未提供中文支持的能力,因此文字部分虽然可以用中文回答,但是语音输出部分就没办法了。

如果想要支持中文的语音输入识别与输出的话,就需要修改以下两个地方:

输入的中文识别:修改/opt/NanoLLM/nano_llm/plugins/speech/riva_asr.py,将里面的”language_code=” 从 ”en-US” 改成 ”zh-CN”

输出的中文语音:修改/opt/NanoLLM/nano_llm/plugins/speech/piper_tts.py,将里面的”en_US-libritts-high”模型(有两处)改成”zh_CN-huayan-medium”模型。这里可以选择的中文模型,可以在 /data/models/piper/voices.json 里找到,请用关键字 ”zh-CN”搜素,会找到'zh_CN-huayan-medium'与'zh_CN-huayan-x_low'两组可用的中文语言

修改完这两处之后,重新执行以下指令:

$ python3 -m nano_llm.agents.web_chat --api=mlc \--model meta-llama/Meta-Llama-3-8B-Instruct  --asr=riva  --tts=piper


现在试试从麦克风用中文与Llamaspeak交谈,是否能如预期地识别出我们所说的话,并且以用中文语音回答呢?如果一切顺利,你现在就能开始有一个博学多闻的对手,可以跟你天南地北聊天了。

GPUS开发者
在这里,你可以及时了解NVIDIA GPU的行业资讯、最新进展、应用场景和各项功能。还有一些工具、技巧和教程,帮助你利用GPU打造未来的科技。参与GPU世界举办的精彩活动,体验人工智能的未来生活。
 最新文章