微信扫码
与创始人交个朋友
我要投稿
端侧应用一直是大模型的热点之一,尤其是最近人形机器人的火爆,让人们把目光再次放到了“具身智能”上,探索如何将大模型的能力与低功耗的客户端设备结合。对于端侧设备来说,网络连接经常不稳定且带宽有限,基于云服务使用大模型比较困难,同时端侧设备还需要格外重视安全性和隐私问题,因此本地运行是比较合理的选择。
介绍一个在树莓派上运行的大模型语音聊天机器人:push-to-talk交互模式,按下按钮对它说话,它会用大模型生成回答,并用很自然的语音回应,并且全过程都在本地,不需要联网。例如问它: “How do you live?”:
硬件方面,你需要:
4GB内存的树莓派4(3应该也可以,如果内存够的话)
麦克风(树莓派自己没有麦克风,可以接个USB的)
喇叭,可以用USB的,这里用的是自带喇叭的HDMI显示屏,所以就走HDMI输出了
按钮,普通的2-wire按钮即可,一条线button,一条线ground,这里用的是从Google AIY VoiceKit上拆下来的按钮,把BTN线(Pin 3)接到树莓派的GPIO 8,GND线(Pin 1)接到GPIO 6。
按钮连线参见:
https://aiyprojects.withgoogle.com/voice/#makers-guide--button-connector-pinout
接好后大概是这样子:
主要软件组件包括三部分:
语音识别,Active Speech Recognition (ASR),将用户的语音识别为文字请求,这里用的是whisper.cpp(OpenAI Whisper的C++实现)
大语言模型LLM,根据用户的请求,生成回答文本,这里用的是TinyLlama 1.1B(用llamafile包装成ARM64可执行文件)
语音合成,Text-To-Speech (TTS),将LLM的回答合成为语音,这里用的是piper
树莓派上跑的OS,是Ubuntu server for Raspberry Pi,可以从这里直接下载预装好的映像:
https://cdimage.ubuntu.com/releases/jammy/release/
用户按下按钮,改变GPIO8状态,树莓派打开麦克风开始录制用户的语音,直到用户松开按钮(临时录音文件保存在本地)。随后whisper.cpp将语音转成文字,作为提示输入给TinyLlama,TinyLlama的回答,再通过piper转成语音播放。
树莓派4跑TinyLlama 1.1B,虽然内存够,但速度还是有点慢,大概每秒生成4-5个token。因此如果回答比较长的话,用户需要等很久才会有回应,这个体验还是比较差的。为改善体验,采用的方法:1)在系统prompt里告诉LLM限制回答字数;2)采用流式输出,每生成一个完整句子就调用piper合成语音,减少用户等待时间。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-14
2024-04-26
2024-03-30
2024-04-12
2024-05-10
2024-07-18
2024-05-22
2024-05-28
2024-04-25
2024-04-26