15 个版本
0.6.2 | 2024年5月9日 |
---|---|
0.6.1 | 2024年5月9日 |
0.6.0 | 2024年4月11日 |
0.5.13 | 2024年3月27日 |
0.4.9 |
|
#664 在 命令行工具
每月172 次下载
710KB
7K SLoC
包含 (DOS exe, 360KB) fonts/trebuc32.exe
Rust AI 流分析 Twitch 机器人
RsLLM 是一个完全用 Rust 编写的 AI 流程,用于 Transformer/Tensor 代码,利用 Huggingface 的 Candle 框架。它代表了系统编程语言对 AI 模型交互和流分析的编程方法。它可以在本地 GPU 上运行,重点支持配备 M1/M2/M3 ARM GPU 的 MacOS 设备。此 AI 流程是为希望将本地大型语言模型 (LLM) 与 Rust 集成的开发人员和研究人员设计的,无需外部依赖项和 Python 代码,即可用于聊天机器人和其他 AI 程序。在其核心,RsLLM 强调在 Rust 环境中利用本地 LLM 生成文本、图像和语音,提供了一套强大的实时数据流分析和 AI 驱动内容创建功能。RsLLM 可以运行 Twitch 频道聊天机器人,并通过与 NDI 兼容的软件生成稳定扩散图像和 TTS 语音输出,播放 NDI 视频音频。您可以使用 OBS 捕获 NDI 流,设置 Twitch 频道,然后拥有一个完整的聊天和语音/图像生成的可定制 Twitch 频道。完全由 AI 驱动,您可以自动化 Twitch 流播者。此外,您还可以分析 MpegTS 流或操作系统统计信息,如果需要,您可以将两者结合,让聊天用户对正在分析的流进行评论和提问。
关键特性
- 本地 LLM:使用基于 Rust 的 Candle LLM,Mistral 和 Gemma,进行直接高效的 AI 交互,优先考虑本地执行以充分利用 MacOS Metal GPU 的全部功能。
- 全面的 AI 分析器:嵌入一个复杂的 AI 分析器,能够处理输入并在文本、语音、语音和图像之间生成输出,促进 AI 生成内容的流畅流程。(进行中)
- 语音和语音集成:计划集成 Whisper 进行语音驱动交互,类似于 Alexa,使用户能够使用语音命令与工具包进行通信,并接收流式文本输入作为响应。(计划中的功能)
- 图像生成和NDI输出:支持从文本描述生成图像,并通过NDI输出,适用于多种应用,包括实时内容创作和广播。(处于测试阶段)
- TTS支持:Candle通过MetaVoice(默认,正在开发中)、OpenAI TTS API(高质量,实时)和Mimic3 TTS API(本地,免费)实现TTS。MetaVoice正在针对Metal GPU进行优化,而OpenAI TTS API以成本产生高品质语音。Mimic3 TTS API需要运行mimic3-server,但提供了OpenAI TTS API的良好替代方案。Mimic3 GitHub
- Twitch聊天交互AI:集成Twitch聊天,实现实时AI交互,使用户可以通过聊天命令与工具包进行交互,并获得AI生成的响应。
- 稳定的扩散图像生成:支持Candle稳定的扩散或AUTOMATIC111111 API服务器。https://github.com/AUTOMATIC1111/stable-diffusion-webui/
核心组件
Candle框架集成
Candle是一个由Huggingface发起的项目,提供了Rust原生LLMs(如Mistral和Gemma),针对MacOS上的Metal GPU进行了优化。这种集成简化了LLMs的本地执行,确保AI模型交互中的高性能和低延迟。
支持OpenAI API的llama.cpp LLM服务器后端
虽然RsLLM的主要重点是运行本地LLMs,但它也提供了对OpenAI API的支持,使用户在必要时可以利用外部AI模型。此功能确保了在各种使用自定义模型的AI驱动项目中具有灵活性和广泛的应用性。
实时AI分析和内容生成
RsLLM擅长分析实时数据流和生成AI驱动的文本、图像和语音内容。它旨在创建一个动态交互模型,其中语音输入可以转换为LLM的文本命令,生成的输出可以作为语音或视觉内容流回。
安装和配置
先决条件
- 确保已安装Rust和Cargo。Rust安装指南。
- 理想情况下是带有M1/M2/M3 ARM GPU的MacOS系统。Nvidia可能也可以工作,但由于我没有Nvidia GPU,需要有人来修复它。
- NDI库用于OBS NDI流输出。这是可选的。
设置指南
-
克隆仓库:
git clone https://github.com/groovybits/rsllm.git
-
导航到项目目录:
cd rsllm
-
编译时支持Metal GPU和NDI SDK:
./scripts/compile.sh # Script handles NDI SDK dependency and DYLD_LIBRARY_PATH
配置
- 将
.env.example
复制到.env
并自定义设置,包括如果打算使用外部AI模型,请自定义OpenAI API密钥。
使用方法
RsLLM旨在简化各种AI驱动操作,从生成基于文本的内容到分析网络流和处理视觉和音频输入。正在开发像NDI音频输出和语音到文本输入处理这样的高级功能,旨在增强工具包的交互能力。
示例命令
-
使用./scripts目录中的脚本。
./scripts/compile.sh # Build RsLLM ./scripts/twitch.sh # Full command line shown for most features ./scripts/mpeg_analyzer.sh # Experimental MpegTS Analyzer mode (WIP) ./scripts/mpeg_poetry.sh # Fun poetry about MpegTS Broadcasting with stream input prompt injection ./scripts/system_health.sh # System health status from OS Stats prompt injection
-
使用Candle和OS统计信息进行AI系统分析:
cargo run --release --features fonts,ndi,mps,metavoice,audioplayer -- \ --candle_llm gemma \ --model-id "2b-it" \ --max-tokens 800 \ --temperature 0.8 \ --ai-os-stats \ --sd-image \ --ndi-images \ --ndi-audio \ --system-prompt "You create image prompts from OS system stats health state." \ --query "How is my system doing? Create a report on the system health as visual image descriptions."
增强输出功能和即将推出的功能
图像和TTS语音音频的NDI输出
RsLLM正在增强其输出功能,包括对图像和TTS(文本到语音)音频的NDI(网络设备接口)支持,以便通过IP网络实现高质量、低延迟的视频流。
- (可选)NDI SDK安装:compile.sh脚本将为您下载libndi.dylib。如果需要,您可以从这里下载并安装NDI SDK。此SDK对于查看NDI输出和探索其他工具很有用。
- 配置步骤:
- 将
--features ndi
添加到Cargo构建命令中,以在构建中包含NDI支持。 - 运行
scripts/compile.sh
,这将检索适用于MacOS的最佳libndi.dylib库。 - 为确保在构建时正确识别库(使用
cargo --features=ndi
),请设置DYLD_LIBRARY_PATH
环境变量。
export DYLD_LIBRARY_PATH=`pwd`:$DYLD_LIBRARY_PATH
- 将
- 附加配置:通过CLI登录Huggingface Hub可以解决一些潜在警告。执行
huggingface-cli login
进行认证。
MetaVoice TTS 文本到语音(WIP)
Candle,我们用于LLM交互的核心Rust框架,现在包括MetaVoice,这是一项开创性的文本到语音(TTS)技术。随着此功能的改进,它将使基于纯Rust的LLM、TTI(文本到图像)和TTS功能得以无缝集成,并在MacOS上利用Metal GPU优化。
- 开发状态:MetaVoice集成已完成,正在Candle中进行优化,以匹配参考实现的品质。
- 预期收益:一旦完全优化,MetaVoice将显著提高工具包生成逼真语音的能力,从文本生成语音,成本低且延迟低。它还将提供从一小段剪辑中一次性学习声音并生成语音的能力。目前,您可能希望使用OpenAI进行语音音频的优质/实时生成。
RsLLM的使命是在MacOS上研究并探索实现一个多才多艺、高性能工具包的实施,以用于AI驱动的内容创建和分析,充分利用Metal GPU的全部潜力以及Rust的效率。
路线图
优先级
- 使用本地数据库(例如SQLite或MongoDB)保存历史记录,并将其馈入Chroma DB以进行RAG。
- MpegTS聊天,用于对当前和历史MPEG-TS流数据的自由形式分析。
- 改善图像/TTS延迟和异步输出协调。使用NDI预队列确保图像和音频的同步并最小化延迟。
- 使用Chromium实现RAG(检索增强生成),用于文档缓存和嵌入,提供基于文档的LLM增强上下文。
- 当可用时,合并Candle中的MetaVoice修复(WIP)。
- 实现感知哈希(基于DCT64)以进行帧指纹,用于检测视频帧中的变化,识别和学习重复的内容序列,验证商业中断,并检测广告插入。集成SCTE-35并维护指纹内容的数据库,用于各种质量检查、中断/标志的保真度确认和存在检测。
- 启用守护程序模式,通过ZeroMQ输入运行并监听请求,并将其传递到输出。
- 扩展LLM和OpenAI API的选项。
未来增强
- 使用ffmpeg-next-sys实时处理视频和音频以生成帧、音频和文本到视频,以及转换视频和创建情绪视频或主题故事。探索将LLM与FFmpeg结合的可能性。
- 增强MpegTS分析器以实时分析Mpeg-TS流、报告和AI驱动的问题检测。
- 改进网络和系统分析器。
- 使用Chroma DB进行RAG,用文档增强提示信息。
- 实现Cap'n Proto进行序列化、反序列化和模块化ZeroMQ协议通信。
- 集成MetaMusic,根据结果生成基于情绪的音乐。
- 开发具有一致帧上下文的说话人头视频生成,确保对象在帧内保持不变。
- 使用Whisper Candle进行语音输入,LLM摄入和视频字幕的语音到文本。
- 允许LLM的自由形式输入选项以解释用户意图。
- 探索在Python中动态生成代码的新任务,如视频处理(考虑风险)。
- 实现迭代和多代输出,直到达到最终结果。
- 使用Whisper Candle进行语音输入,使语音命令能够用于LLM的对话AI。
贡献
我们热烈欢迎贡献,特别是在功能开发、性能优化和文档编写等方面。您的专业知识可以显著提升工具包的功能和用户体验。
许可
本项目采用MIT许可。有关详细信息,请参阅LICENSE文件。
致谢
- Huggingface的Candle Rust Transformers/Tensors: Candle
- OpenAI提供的API规范: OpenAI
- OpenAI提供的TTS集成: OpenAI
- MetaVoice提供的TTS集成: MetaVoice
- Mimic3提供的TTS集成: Mimic3
- Whisper提供的语音到文本: Whisper
- Google Gemini LLM: Gemini
- Mistral LLM: Mistral
作者
Chris Kennedy,MacOS Metal GPU Rust LLM Toolkit的创新发展领导者。2024年2月。
我们致力于推动AI与视频技术以及MacOS Arm CPU上的多模态输入/输出的集成边界,确保媒体开发者和研究人员能够获得强大、高效且通用的工具,用于他们的AI驱动项目。
依赖项
~68–105MB
~2M SLoC