InfiniteRadio
扫码查看

根据电脑使用情境自动生成背景音乐的工具

InfiniteRadio

综合介绍

InfiniteRadio 是一个开源的桌面应用程序,它可以在你的电脑上生成一段永不间断的音乐流。这个工具最大的特点是具备“情境感知”能力,它播放的音乐风格会根据你当前使用电脑的场景自动进行调整和变化,为你创造一个动态的、个性化的背景音乐环境。为了实现这一功能,InfiniteRadio 提供了两种不同的“DJ”模式。第一种是“进程DJ”,它通过监测你电脑上当前最活跃的应用程序来判断你的使用场景,并切换到相应的音乐类型。第二种是“LLM DJ”,它利用本地运行的大语言模型(如 InternVL3)来分析你屏幕上显示的图像内容,从而更智能地选择最匹配当前活动的音乐风格。该工具的核心音乐生成技术基于谷歌的 Magenta RealTime 模型,并通过 Docker 技术部署在用户本地的NVIDIA GPU上运行,确保了音乐生成的私密性和实时性。

功能列表

  • 情境感知音乐生成:能够自动分析用户当前的电脑使用情境,并智能地切换音乐风格以匹配当前活动。
  • 双“DJ”模式:提供两种不同的情境分析模式供用户选择。
    • 进程DJ:根据当前系统中运行的最活跃的应用程序(例如代码编辑器、游戏、浏览器)来选择音乐类型。
    • LLM DJ:通过连接本地的视觉语言模型,分析屏幕截图来理解用户正在做的事情(例如阅读、看视频、玩游戏),并据此选择音乐。
  • 无限音乐流:基于 Google 的 Magenta RealTime 音乐模型,能够生成永不重复、无限延续的音乐。
  • 本地化部署:所有核心模型(包括音乐生成和LLM)都在用户自己的电脑上运行,无需连接云端服务,保障了数据隐私。
  • 客户端支持:为 macOS 用户提供了原生系统托盘应用程序,方便进行设置和控制。其他系统用户也可以通过Python脚本直接运行。
  • API 接口:提供简单的 HTTP API,允许开发者通过编程方式获取当前音乐类型或手动更改音乐类型。

使用帮助

InfiniteRadio 的设计理念是在本地环境中为您创建一个能感知您活动的智能音乐电台。它的安装和使用分为两个核心步骤:首先部署负责播放音乐的“音乐模型”,然后运行一个负责选择音乐风格的“DJ”。

硬件与软件要求

在开始之前,请确保您的系统满足以下条件,这是运行 InfiniteRadio 的硬性要求:

  • NVIDIA GPU:必须拥有一块支持 CUDA 的英伟达显卡。
  • Docker:需要安装 Docker,并确保其已配置GPU支持。
  • NVIDIA Container Toolkit:必须安装英伟达容器工具包,以便 Docker 容器能调用 GPU 资源。

第一步:部署音乐模型

音乐模型是 InfiniteRadio 的基础,它是一个包含了 Google Magenta 模型的 Docker 容器,负责生成和播放音乐。

  1. 运行 Docker 容器在您的终端中执行以下命令,从 Dockerhub 拉取并运行音乐模型容器。
    docker run --gpus all --network host lauriewired/musicbeats:latest
    
    • --gpus all:此参数让 Docker 容器可以使用主机上所有的 NVIDIA GPU。
    • --network host:此参数让容器直接使用主机的网络,方便后续 “DJ” 程序连接。
  2. 启动音乐播放容器成功运行后,打开您的网页浏览器,访问 http://127.0.0.1:8080。您会看到一个简单的播放界面。点击播放按钮,音乐就会开始流式播放。此时播放的是默认风格的音乐,接下来需要启动“DJ”来让它变得智能。

第二步:选择并运行“DJ”

“DJ”是 InfiniteRadio 的大脑,它负责分析您的使用情境,并向音乐模型发送指令来改变音乐风格。您可以根据您的操作系统和硬件性能选择一种“DJ”。

选项一:在 macOS 上使用托盘应用(最简单)

如果您是 macOS 用户,最便捷的方式是使用官方提供的托盘应用程序。这个程序集成了“进程DJ”和连接“LLM DJ”的功能。

  1. 下载并运行
    • 前往项目的 Releases 页面,下载最新版本的 InfiniteRadio.zip 文件。
    • 解压后,将 .app 文件拖入“应用程序”文件夹并运行它。InfiniteRadio 的图标会出现在屏幕顶部的菜单栏(托盘)中。
  2. 配置与使用
    • 点击托盘图标,在设置中确保音乐模型的 IP 地址和端口已正确填写(默认为 127.0.0.1 和 8080)。
    • 您可以直接选择并启动“进程DJ”。
    • 如果您想使用“LLM DJ”,请先确保您已在 LM Studio 中运行了视觉语言模型(参考选项三的说明),然后在托盘应用中选择 LLM DJ 模式。
    • 注意:在 macOS 上使用 LLM DJ 时,系统会提示您授予应用屏幕录制权限。这是必需的,因为 LLM DJ 需要截取屏幕内容进行分析。请允许该权限。

选项二:使用“进程DJ”(Python 脚本)

“进程DJ”通过监控您系统上当前占用CPU资源最多的进程来判断您的活动,例如,当检测到是代码编辑器时,它会切换到适合专注的音乐。此方式资源消耗较低。

  • 运行脚本在终端中,进入 InfiniteRadio 项目目录,执行以下命令:
    python process_dj.py 127.0.0.1 8080
    
    • 请将 127.0.0.1 和 8080 替换为您第一步中部署音乐模型的实际 IP 地址和端口。

选项三:使用“LLM DJ”(Python 脚本)

“LLM DJ”是最智能的模式,它通过视觉语言模型(LLM)分析您屏幕上的实时画面来决定播放什么风格的音乐。例如,看到游戏画面时播放激昂的音乐,看到文档时播放舒缓的音乐。此方式对硬件要求最高。

  1. 在 LM Studio 中运行 LLM 服务
    • 下载并安装 LM Studio。
    • 在 LM Studio 中,搜索并下载视觉语言模型,官方推荐 InternVL3。
    • 加载模型后,切换到“Local Server”选项卡,点击“Start Server”来启动本地模型服务。
  2. 运行 Python 连接脚本当 LLM 服务启动后,在终端中进入 InfiniteRadio 项目目录,执行以下命令来连接音乐模型和LLM服务:
    python llm_dj.py 127.0.0.1 8080
    
    • 同样,请将 127.0.0.1 和 8080 替换为音乐模型的实际地址和端口。脚本会自动连接默认运行在本地的 LM Studio 服务。

API 参考

对于开发者,InfiniteRadio 提供API以编程方式进行控制。

  • 更改音乐类型 (Change Genre)发送一个 POST 请求到 /genre 端点。
    curl -X POST http://localhost:8080/genre \
    -H "Content-Type: application/json" \
    -d '{"genre": "jazz"}'
    
  • 获取当前音乐类型 (Get Current Genre)发送一个 GET 请求到 /current-genre 端点。
    curl http://localhost:8080/current-genre
    

应用场景

  1. 沉浸式编程与写作当开发者打开 VS Code 或作家打开 Ulysses 时,“进程DJ”会自动检测到这些应用,并将音乐切换到有助于集中注意力的氛围音乐或古典音乐。当用户切换到浏览器开始观看视频时,音乐风格也会随之改变。
  2. 动态游戏背景音乐通过“LLM DJ”模式,InfiniteRadio 可以分析游戏画面。当玩家在《赛博朋克2077》的夜之城中探索时,它会播放赛博朋克风格的电子乐;当进入激烈枪战时,则切换到快节奏的摇滚或金属乐,极大地增强了游戏沉浸感。
  3. 智能直播伴侣网络主播在直播时,无需再手动寻找和切换背景音乐。“LLM DJ”可以根据直播中展示的不同内容(如展示代码、玩游戏、与观众聊天),自动无缝地切换最合适的BGM。
  4. 个性化工作环境任何希望背景音乐能与自己工作节奏同步的电脑用户,都可以使用本工具。无论是进行图形设计、数据分析还是阅读长篇报告,InfiniteRadio 都能提供一个无需手动干预的、动态变化的听觉环境。

QA

  1. 我没有NVIDIA显卡,可以使用InfiniteRadio吗?不可以。该项目的核心音乐生成模型依赖于Docker的GPU支持、NVIDIA GPU以及CUDA工具包来在本地运行。这些是运行该应用的硬性要求。
  2. “进程DJ”和“LLM DJ”有什么区别?我应该用哪个?“进程DJ”通过监控你电脑上运行的活跃程序来选择音乐类型,例如,检测到你在用代码编辑器就会播放适合专注的音乐。它更简单,消耗资源更少。而“LLM DJ”则通过分析你屏幕上显示的内容来选择音乐类型,它更智能、情境感知能力更强,但需要额外运行一个本地大语言模型,对硬件的要求更高。如果你的硬件性能强劲,追求最佳的智能体验,推荐使用“LLM DJ”;如果希望资源占用少,或者只是根据应用类别切换音乐,那么“进程DJ”是更好的选择。
  3. 我在macOS上运行应用时,为什么提示需要更多权限?这是因为当您选择使用“LLM DJ”功能时,该程序需要获取您屏幕上的内容以进行分析,并据此来动态选择音乐类型。为了保护用户隐私,macOS会要求您手动授予“屏幕录制”权限,允许 InfiniteRadio 查看您的屏幕。这是一个正常且必要的操作步骤。
  4. 音乐模型和DJ必须运行在同一台电脑上吗?不一定。音乐模型(Docker容器)和DJ程序(Python脚本或macOS应用)是通过网络IP地址和端口进行通信的。只要DJ程序能够访问到运行音乐模型的机器的IP和端口,它们就可以部署在局域网内的任何不同机器上。
微信微博Email复制链接