Discord音乐生成机器人

Darius是一个Discord机器人,通过Magenta RT API实时生成音乐并流式传输到Discord语音频道,用户可以通过自然语言命令控制音乐参数。

  • by betweentwomidnights
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 betweentwomidnights/darius-in-discord

使用说明

达里乌斯在Discord上🎵🤖

这是我第一个MCP服务器,是心血来潮为一个叫Yikes的人搭建的。

这的作用

  • **达里乌斯(Discord机器人)**将Magenta RT生成的音频流式传输到Discord语音频道
  • **克劳德(MCP服务器)**作为音乐参数的智能控制界面
  • 你给出像“让它更有攻击性”或“加入一些酸性浩室音乐的氛围”这样的自然语言指令

结果:Claude实时响应你的语音反馈,而你的朋友们则在Discord上收听。

根据上面的信息,执行如下指令:

这个应用程序连接到托管在HuggingFace Spaces上的Magenta RT API: 合作补丁/品红色重试

注: API的URL目前是硬编码在 magenta_mcp_server.py (第186行)并且 discord_bot.py (第185行):

ws_url = "wss://thecollabagepatch-magenta-retry.hf.space/ws/jam"

这个空间是特别设计来 可作为API进行复制 适用于各种Magenta RT应用。 darius-in-discord 这只是使用该后端的一个应用程序。

使用您自己的后端

你可以:

即将推出: API URL的环境变量配置,以便更轻松地切换后端。

建筑

┌─────────────────┐         ┌──────────────────┐
│  Claude Desktop │────────▶│  MCP Server      │
│  (Control UI)   │         │  (Parameter      │
└─────────────────┘         │   Control)       │
                            └────────┬─────────┘
                                     │
                                     ▼
                            ┌──────────────────┐
                            │  Magenta RT API  │
                            │  /ws/jam         │
                            └────────┬─────────┘
                                     │
                                     ▼
                            ┌──────────────────┐
                            │  Discord Bot     │
                            │  (Audio Stream)  │
                            └────────┬─────────┘
                                     │
                                     ▼
                            ┌──────────────────┐
                            │  Discord Voice   │
                            │  Channel         │
                            └──────────────────┘

设置

先决条件

安装

  1. 克隆仓库:

    git clone https://github.com/betweentwomidnights/darius-in-discord.git
    cd darius-in-discord
    
  2. 创建虚拟环境:

    python -m venv venv
    
    # Windows
    venv\Scripts\activate
    
    # Mac/Linux
    source venv/bin/activate
    
  3. 安装依赖项:

    pip install mcp websockets discord.py pynacl python-dotenv pydub
    
  4. 配置环境:

    cp .env.example .env
    # Edit .env and add your Discord bot token
    
  5. 安装FFmpeg:

  6. 配置Claude桌面版:

    编辑您的Claude桌面配置文件:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

    添加此配置(调整路径以匹配您的设置):

    {
      "mcpServers": {
        "magenta-rt": {
          "command": "/full/path/to/venv/Scripts/python.exe",
          "args": ["/full/path/to/magenta_mcp_server.py"]
        }
      }
    }
    

    Windows 示例:

    {
      "mcpServers": {
        "magenta-rt": {
          "command": "C:\\Users\\YourName\\darius-in-discord\\venv\\Scripts\\python.exe",
          "args": ["C:\\Users\\YourName\\darius-in-discord\\magenta_mcp_server.py"]
        }
      }
    }
    
  7. 邀请达里乌斯加入你的Discord服务器:

    • 首选 Discord 开发者门户
    • 选择您的应用程序
    • OAuth2 → URL 生成器
    • 选择范围: bot
    • 选择权限: Connect, Speak
    • 复制并打开生成的URL以邀请机器人

用法

1. 启动Darius(Discord机器人)

python discord_bot.py

你应该看到:

darius#0330 has connected to Discord!
Bot is in 1 guild(s)

2. 在Discord中启动音乐

在你的Discord服务器中:

!join              # Darius joins your voice channel
!jam warmup        # Start streaming music

3. 通过Claude桌面版进行控制

重启Claude桌面以加载MCP服务器,然后就可以自然对话了:

示例:

  • “以黑暗电子乐的氛围开启一场即兴演奏会”
  • “让它更具攻击性”
  • “太乱了,收回去吧”
  • “加点酸性浩室音乐的风味”
  • “保持这种氛围,但让它更阴暗一些”
  • “彻底疯狂”

克劳德将会:

  • 自动阅读参数指南
  • 进行渐进式调整(避免突兀的转变)
  • 理解权重归一化背后的数学原理
  • 保持在最佳参数范围内

Discord 命令

手动控制指令:

  • !join - 加入你的语音频道
  • !jam [styles] - 从特定风格开始(例如。, !jam techno, ambient)
  • !stop - 关掉音乐
  • !leave - 离开语音频道
  • !status - 检查机器人状态

它是如何运作的

您可以控制的参数

  • 温度 (0.1-2.0): 随机性/创造力
  • 指导 (0.0-8.0):它遵循风格提示的程度
  • TopK (1-256):采样种类
  • 风格类型、乐器、氛围或任何描述性词汇
  • 风格权重将多种风格以不同强度进行融合
  • 使用当前混音作为风格为了更流畅的过渡
  • 微调操控(或:精细调整方向控制) (如可提供):
    • 平均重量向训练数据的平均值拉近
    • 质心权重朝着特定集群方向调整(或引导)

知识库

克劳德自动阅读 magenta_knowledge.md 其中包含:

  • 参数范围和最佳点
  • 权重归一化数学
  • 逐步改变的最佳实践
  • 常见的交互模式
  • 技术实施细节

这确保了Claude能够做出智能调整,而无需你解释一切的工作原理。

逐步调整

克劳德知道要缓慢地改变参数(分2-4步进行,每步之间有延迟),以避免产生刺耳的音频失真。例如:

你: “让它更加混乱”

克劳德: 在6秒内将温度从1.1 → 1.3 → 1.5 → 1.7逐步提升,同时将topk值从40 → 60 → 80进行调整。

项目结构

darius-in-discord/
├── magenta_mcp_server.py      # MCP server for Claude Desktop
├── discord_bot.py             # Discord bot for audio streaming
├── magenta_knowledge.md       # Parameter guide for Claude
├── magenta_prompts.js         # Style presets (from web tester)
├── .env.example               # Environment template
├── .gitignore                 # Git ignore rules
├── requirements.txt           # Python dependencies
└── README.md                  # This file

已知问题

  • 音频失真或瑕疵使用pydub进行重采样可能会引入一些伪影。未来的改进可以考虑使用SoX来获得更好的质量。
  • 延迟由于Discord流媒体和WebSocket缓冲,存在1-2秒的延迟。
  • 淡入淡出时的卡顿偶尔,淡入淡出效果可能会显得突兀,尤其是在参数变化时。

未来的改进/增强

  • [ ] 用于API URL配置的环境变量
  • [ ] 支持语音输入(直接通过Discord对Claude大喊)
  • [ ] 更好的音频重采样(使用SoX而非pydub)
  • [ ] 支持一次性生成
  • [ ] 通过音频注入 /jam/start 带有条形对齐分块的终端(说实话,在Discord里使用可能效果更好)
  • [ ] 用于可视化的网页仪表板
  • [ ] 多用户会话

功劳/学分/积分

由Kevin(betweentwomidnights)与Claude(Anthropic)携手,以纯粹的热情共建而成。

由……提供支持/驱动

许可证

MIT 许可证 - 详情请参见 LICENSE 文件


享受那些疯狂的时刻,天呐