# 计科第六组 **Repository Path**: streamLiu/six ## Basic Information - **Project Name**: 计科第六组 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2026-03-12 - **Last Updated**: 2026-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能监控系统 基于C语言和ALSA库的智能监控系统,包含音频处理、语音合成和LLM多模态理解模块。 ## 项目架构 ``` six/ ├── src/ # 源代码目录 │ ├── audio.c # 音频处理模块 │ ├── tts.c # 语音合成模块 │ └── llm.c # LLM多模态理解模块 ├── include/ # 头文件目录 │ ├── audio.h # 音频处理模块头文件 │ ├── tts.h # 语音合成模块头文件 │ └── llm.h # LLM多模态理解模块头文件 ├── test/ # 测试目录 │ ├── audio_test.c # 音频模块测试程序 │ ├── tts_test.c # 语音合成模块测试程序 │ ├── llm_test.c # LLM模块测试程序 │ ├── llm_file_test.c # LLM文件操作测试程序 │ ├── llm_multimodal_test.c # LLM多模态理解测试程序 │ ├── llm_chat_test.c # LLM多轮对话测试程序 │ └── llm_function_calling_test.c # LLM function calling测试程序 ├── tools/ # 工具目录 │ ├── tts_tool.c # 语音合成工具 │ └── photo_upload.c # 照片上传工具 ├── docs/ # 文档目录 │ ├── tts.md # 语音合成模块文档 │ ├── files.md # 文件API文档 │ ├── response.md # 响应API文档 │ └── tools.md # 工具使用指南 ├── CMakeLists.txt # CMake构建配置 ├── config.json # 配置文件 ├── README.md # 项目说明文档 └── AGENTS.md # 项目指南 ``` ## 功能模块 ### 1. 音频处理模块 (audio) - ✅ 音频设备管理(打开/关闭) - ✅ 音频播放功能 - ✅ 支持自定义声道数、采样率和格式 - ✅ 错误处理和资源管理 ### 2. 语音合成模块 (tts) - 文本转语音功能 - 语音参数配置 - 合成语音播放 ### 3. LLM多模态理解模块 (llm) - ✅ 文件上传功能 - ✅ 文件检索功能 - ✅ 文件列表查询 - ✅ 文件删除功能 - ✅ 多模态理解接口 - ✅ 支持视频、图片、PDF等多种文件类型 - ✅ 多轮对话功能 - ✅ Function Calling功能 - ✅ 支持调用白名单中的shell命令 ## 技术栈 - **编程语言**: C - **构建工具**: CMake 3.10+ - **依赖库**: - ALSA-lib (libasound) - 音频处理 - 数学库 (libm) - 音频数据处理 - libcurl4-openssl-dev - 网络请求 - 标准库 - 字符串处理、系统调用等 - **目标平台**: Linux ## 编译构建 ### 依赖安装 #### Debian/Ubuntu ```bash sudo apt update sudo apt install libasound2-dev build-essential cmake libcurl4-openssl-dev ``` #### CentOS/RHEL/Fedora ```bash sudo yum install alsa-lib-devel gcc make cmake curl-devel # 或 sudo dnf install alsa-lib-devel gcc make cmake curl-devel ``` ### 构建步骤 ```bash # 创建构建目录 mkdir -p build && cd build # 配置项目 cmake .. # 编译项目 make # 运行测试 ./audio_test ``` ## 音频模块使用 ### 核心API ```c #include "audio.h" // 音频设备结构体 audio_t device = {0}; // 打开音频设备 int result = audio_open(&device, 2, 44100, SND_PCM_FORMAT_S16_LE); // 播放音频数据 char *audio_data = /* 音频数据缓冲区 */; size_t data_size = /* 数据大小 */; audio_play(&device, audio_data, data_size); // 关闭音频设备 audio_close(&device); ``` ### 测试程序 运行音频模块测试: ```bash ./build/audio_test ``` 测试结果示例: ``` === 测试音频模块 === 1. 测试打开音频设备...成功 声道数: 2 采样率: 44100 Hz 采样格式: S16_LE 2. 测试播放音频数据...成功 3. 测试关闭音频设备...成功 === 测试完成 === ``` ## 语音合成模块 ### 功能特点 - 文本转语音 - 支持多种语音参数配置 - 与音频模块集成 ### 使用方法 详细使用说明请参考:`docs/tts.md` ## LLM多模态理解模块 ### 功能特点 - 文件上传和管理 - 多模态理解(支持视频、图片、PDF等) - 与Responses API集成 ### 核心API ```c #include "llm.h" // 初始化LLM模块 llm_t llm; llm_init_from_config(&llm, "config.json"); // 上传文件 llm_file_upload_request_t upload_request = { .file_path = "sample.mp4", .purpose = "user_data" }; llm_file_meta_t file_meta; llm_upload_file(&llm, &upload_request, &file_meta); // 等待文件处理完成 while (strcmp(file_meta.status, "active") != 0) { sleep(2); llm_retrieve_file(&llm, file_meta.id, &file_meta); } // 多模态理解 llm_multimodal_request_t request; // 配置请求参数... llm_response_t response; llm_multimodal_chat(&llm, &request, &response); // 多轮对话 llm_chat_request_t chat_request = { .prompt = "你好,我是用户", .previous_response_id = NULL // 第一轮对话 }; llm_response_t chat_response; llm_chat(&llm, &chat_request, &chat_response); // 后续轮次对话 char *previous_id = chat_response.id; llm_chat_request_t followup_request = { .prompt = "你能告诉我今天的天气吗?", .previous_response_id = previous_id }; llm_response_t followup_response; llm_chat(&llm, &followup_request, &followup_response); // Function Calling llm_tool_t tools[] = { { .name = "shell_command", .description = "执行shell命令", .parameters = "{\"type\":\"object\",\"properties\":{\"command\":{\"type\":\"string\",\"description\":\"要执行的shell命令\"},\"input\":{\"type\":\"string\",\"description\":\"命令的标准输入\"}},\"required\":[\"command\"]}", .strict = 1 } }; llm_chat_with_tools_request_t tools_request = { .prompt = "执行ls命令查看当前目录", .previous_response_id = NULL, .tools = tools, .tool_count = 1 }; llm_response_t tools_response; llm_tool_call_t tool_call; llm_chat_with_tools(&llm, &tools_request, &tools_response, &tool_call); // 执行工具并回传结果 if (tool_call.name) { // 执行shell命令 char output[4096]; int return_code; llm_shell_command_exec(tool_call.arguments, NULL, output, sizeof(output), &return_code); // 回传结果 llm_tool_result_t tool_result = { .output = output, .call_id = tool_call.call_id }; llm_response_t final_response; llm_return_tool_result(&llm, tools_response.id, &tool_result, &final_response); // 处理最终响应 // ... llm_response_cleanup(&final_response); free(tool_call.name); free(tool_call.arguments); free(tool_call.call_id); } // 清理资源 llm_response_cleanup(&response); llm_multimodal_request_cleanup(&request); llm_response_cleanup(&chat_response); llm_response_cleanup(&followup_response); llm_response_cleanup(&tools_response); llm_file_meta_cleanup(&file_meta); llm_cleanup(&llm); ``` ### 测试程序 运行LLM多模态理解测试: ```bash ./build/llm_multimodal_test ``` 运行LLM多轮对话测试: ```bash ./build/llm_chat_test ``` 运行LLM function calling测试: ```bash ./build/llm_function_calling_test ``` ### 配置文件 创建 `config.json` 文件,配置API密钥和模型信息: ```json { "api_key": "your_api_key", "model_id": "doubao-seed-2-0-lite-260215", "api_url": "https://ark.cn-beijing.volces.com/api/v3" } ``` ## 技术实现 ### 音频模块核心实现 - **设备管理**: 使用ALSA PCM接口管理音频设备 - **参数配置**: 支持动态设置声道数、采样率和格式 - **数据处理**: 提供高效的音频数据播放接口 - **错误处理**: 完善的错误检测和处理机制 ### 语音合成模块实现 - 文本分析和处理 - 语音参数生成 - 合成语音数据 - 与音频模块集成播放 ### LLM多模态理解模块实现 - 文件上传和管理(支持最大 512 MB 文件) - 多模态内容结构定义 - 与Responses API集成 - 支持视频、图片、PDF等多种文件类型的理解 ## 项目规范 - **编码规范**: C语言编程规范,参考GB/T28169国家标准,使用K&R风格排版 - **注释规范**: Doxygen格式,默认使用中文 - **代码质量**: 函数圈复杂度不大于10,函数长度不超过50行 - **构建系统**: 使用CMake构建项目 - **版本控制**: 使用GitHub工作流,提交信息遵守约定式提交规范 ## 开发指南 ### 添加新功能 1. 在 `src/` 目录下创建新的源文件 2. 在 `include/` 目录下创建对应的头文件 3. 更新 `CMakeLists.txt` 添加新的源文件 4. 在 `test/` 目录下添加测试程序 5. 编写单元测试验证功能 ### 代码质量检查 - **圈复杂度**: 使用工具检查函数圈复杂度 - **代码风格**: 遵循K&R风格排版 - **注释完整性**: 确保所有函数都有Doxygen风格注释 ## 故障排除 ### 音频设备打开失败 ```bash # 检查ALSA是否正常工作 aplay -l # 列出播放设备 amixer info # 查看混音器信息 ``` ### 编译错误 ```bash # 安装缺失的依赖 sudo apt install libasound2-dev # Debian/Ubuntu sudo yum install alsa-lib-devel # CentOS/RHEL ``` ## 许可证 MIT License ## 作者 [six] ## 更新日志 ### v1.2.0 (2026-03-25) - 实现LLM多轮对话功能 - 添加Function Calling功能 - 支持调用白名单中的shell命令 - 创建多轮对话和function calling测试程序 - 添加tools目录和相关工具 - 更新文档结构和格式 ### v1.1.0 (2026-03-20) - 实现LLM多模态理解模块 - 添加文件上传和管理功能 - 实现多模态理解接口 - 支持视频、图片、PDF等多种文件类型 - 编写LLM模块测试程序 ### v1.0.0 (2026-03-18) - 项目架构重构为智能监控系统 - 实现音频处理模块 - 添加语音合成模块文档 - 配置CMake构建系统 - 编写音频模块测试程序 ### v0.1.0 (2026-03-12) - 初始版本 - 基础音频功能实现 ## 项目目标 - 构建完整的智能监控系统 - 提供高质量的音频处理能力 - 实现灵活的语音合成功能 - 支持扩展其他监控模块 ## 未来计划 - 增强音频处理能力(录音、音频分析) - 完善语音合成模块 - 添加网络接口 - 集成更多监控功能