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 2024年3月18日

#664命令行工具

Download history 259/week @ 2024-05-07 3/week @ 2024-05-14 5/week @ 2024-05-21 8/week @ 2024-05-28 4/week @ 2024-06-11 6/week @ 2024-07-02 121/week @ 2024-07-23 51/week @ 2024-07-30

每月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/

RSLLM

核心组件

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流输出。这是可选的。

设置指南

  1. 克隆仓库:

    git clone https://github.com/groovybits/rsllm.git
    
  2. 导航到项目目录:

    cd rsllm
    
  3. 编译时支持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输出和探索其他工具很有用。
  • 配置步骤:
    1. --features ndi添加到Cargo构建命令中,以在构建中包含NDI支持。
    2. 运行scripts/compile.sh,这将检索适用于MacOS的最佳libndi.dylib库。
    3. 为确保在构建时正确识别库(使用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