2024-11-18 12:15:02 +08:00
# LLM
AX630C AI large model local voice assistant program. Provided by M5STACK STACKFLOW for basic communication architecture, coordinating multiple working units to work together.
- llm-audio: Audio unit, providing system audio support.
- llm-kws: Keyword detection unit, providing keyword wakeup service.
- llm-asr: Speech-to-text unit, providing speech-to-text service.
- llm-llm: Large model unit, providing AI large model inference service.
- llm-melotts: NPU-accelerated TTS unit, providing text-to-speech and playback service.
- llm-tts: CPU-computed TTS unit, providing text-to-speech and playback service.
## compile
```bash
2024-11-19 16:42:07 +08:00
wget https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz
2024-11-18 12:15:02 +08:00
sudo tar zxvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz -C /opt
sudo apt install python3 python3-pip libffi-dev
2025-03-12 11:42:39 +08:00
pip3 install parse scons requests kconfiglib
2024-11-18 12:15:02 +08:00
2024-11-18 12:27:34 +08:00
git clone https://github.com/m5stack/StackFlow.git
cd StackFlow
git submodule update --init
cd projects/llm_framework
2024-11-18 12:15:02 +08:00
scons distclean
scons -j22
```
## assistant mode
2024-11-19 11:53:16 +08:00
llm-sys llm-audio llm-kws llm-asr llm-llm llm-melotts Collaborative work.
2024-11-18 12:15:02 +08:00
Chinese environment:
1、reset
send :
```json
{
"request_id" : "11212155" ,
"work_id" : "sys" ,
"action" : "reset"
}
```
waiting reset over!
2、init all unit
send :
```json
{
"request_id" : "1" ,
"work_id" : "kws" ,
"action" : "setup" ,
"object" : "kws.setup" ,
"data" : {
"model" : "sherpa-onnx-kws-zipformer-wenetspeech-3.3M-2024-01-01" , "response_format" : "kws.bool" ,
"input" : "sys.pcm" ,
"enoutput" : true ,
"kws" : "你好你好"
}
}
{
"request_id" : "2" ,
"work_id" : "asr" ,
"action" : "setup" ,
"object" : "asr.setup" ,
"data" : {
"model" : "sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23" ,
"response_format" : "asr.utf-8.stream" ,
"input" : "sys.pcm" ,
"enoutput" : true ,
"enkws" : true ,
"rule1" : 2.4 ,
"rule2" : 1.2 ,
"rule3" : 30.1
}
}
{
"request_id" : "3" ,
"work_id" : "llm" ,
"action" : "setup" , "object" : "llm.setup" ,
"data" : {
"model" : "qwen2.5-0.5B-prefill-20e" ,
"response_format" : "llm.utf-8.stream" ,
"input" : "llm.utf-8" ,
"enoutput" : true ,
"max_token_len" : 256 ,
"prompt" : "You are a knowledgeable assistant capable of answering various questions and providing information."
}
}
{
"request_id" : "4" ,
"work_id" : "melotts" ,
"action" : "setup" ,
"object" : "melotts.setup" ,
"data" : {
2025-06-10 09:21:08 +08:00
"model" : "melotts-zh-cn" ,
2024-11-18 12:15:02 +08:00
"response_format" : "sys.pcm" ,
"input" : "tts.utf-8" ,
"enoutput" : false
}
}
```
waiting return work_id:
```json
{ "created" : 1731488371 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "3" , "work_id" : "asr.1001" }
{ "created" : 1731488377 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "4" , "work_id" : "llm.1002" }
{ "created" : 1731488392 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "4" , "work_id" : "melotts.1003" }
{ "created" : 1731488402 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "2" , "work_id" : "kws.1000" }
```
creat assembly line:
```json
{
"request_id" : "2" ,
"work_id" : "asr.1001" ,
"action" : "link" ,
"object" : "work_id" ,
"data" : "kws.1000"
}
{
"request_id" : "3" ,
"work_id" : "llm.1002" ,
"action" : "link" ,
"object" : "work_id" ,
"data" : "asr.1001"
}
{
"request_id" : "4" ,
"work_id" : "melotts.1003" ,
"action" : "link" ,
"object" : "work_id" ,
"data" : "llm.1002"
}
{
"request_id" : "3" ,
"work_id" : "llm.1002" ,
"action" : "link" ,
"object" : "work_id" ,
"data" : "kws.1000"
}
{
"request_id" : "4" ,
"work_id" : "melotts.1003" ,
"action" : "link" ,
"object" : "work_id" ,
"data" : "kws.1000"
}
```
waiting return status:
```json
{ "created" : 1731488403 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "3" , "work_id" : "llm.1002" }
{ "created" : 1731488403 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "4" , "work_id" : "melotts.1003" }
{ "created" : 1731488403 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "2" , "work_id" : "asr.1001" }
{ "created" : 1731488403 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "4" , "work_id" : "melotts.1003" }
{ "created" : 1731488403 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "3" , "work_id" : "llm.1002" }
```
**Please enjoy the large model voice assistant.**
2024-12-04 18:38:11 +08:00
## cv mode
1、reset
send :
```json
{
"request_id" : "11212155" ,
"work_id" : "sys" ,
"action" : "reset"
}
```
waiting reset over!
2、init camera unit
send :
```json
{
"request_id" : "4" ,
"work_id" : "camera" ,
"action" : "setup" ,
"object" : "camera.setup" ,
"data" :{
"response_format" : "camera.raw" ,
"input" : "/dev/video0" ,
"enoutput" : false ,
"frame_width" : 320 ,
"frame_height" : 320
}
}
```
waiting return work_id:
```json
{ "created" : 1731488371 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "4" , "work_id" : "camera.1000" }
```
2、init yolo unit
send :
```json
{
"request_id" : "5" ,
"work_id" : "yolo" ,
"action" : "setup" ,
"object" : "yolo.setup" ,
"data" :{
2024-12-17 10:13:54 +08:00
"model" : "yolo11n" ,
2024-12-04 18:38:11 +08:00
"response_format" : "yolo.yolobox" ,
"input" : "camera.1000" ,
"enoutput" : true
}
}
```
waiting return work_id:
```json
{ "created" : 1731488371 , "data" : "None" , "error" :{ "code" : 0 , "message" : "" }, "object" : "None" , "request_id" : "5" , "work_id" : "yolo.1001" }
```