Skip to main content

【中级】AI 音乐生成器,一键创作情感旋律

更新日志

版本日期变更描述
1.0.02026-01-30初始版本,包含在 AI 算力本 MTT AIBOOK (型号 A141)上的 AI 音乐生成器的完整代码和开发使用指南。

1. 项目简介

本教程旨在指导开发者构建一个基于情感的 AI 音乐生成器,通过选择情感状态(快乐、悲伤、兴奋、平静),让 AI 自动生成符合该情感特征的专属音乐旋律。

项目简介: 心情低落时想听悲伤的曲调,兴奋时渴望激昂的节奏?现在,只需轻点选择情感,AI 就能为您打造专属音乐!项目借助 Python 强大的音乐处理能力,融合数学音频合成技术,开发出"智能音乐创作助手"。无论您是否具备音乐基础,只要选定"快乐""悲伤""兴奋""平静"等情感状态,它就能精准理解您的心境,从音符选择、节奏编排到音调设计,一站式完成音乐创作。

难度:中级,适合有编程基础的开发者体验

2. 前置条件

在开始本教程之前,请确保您已满足以下所有条件:

  • 硬件要求:AI 算力本 MTT AIBOOK,型号 A141
  • 音频设备:音频输出设备(扬声器或耳机,用于播放生成的音乐)
  • 操作系统:MTT AIBOOK 操作系统 AIOS(1.3.1-B15)及以上版本
  • Python 版本:已安装 Python 3.10 或更高版本(python --version 验证)
  • 包管理工具:已安装 pip 包管理工具(pip --version 验证)
  • 代码编辑器:已安装代码编辑器(推荐 VS Code/Cursor)
  • 编程基础:具备 Python 编程基础知识(熟悉基本语法和面向对象编程)
  • 可选知识:了解 Web 开发基本概念(可选,教程中会详细说明)

3. 环境部署

本章节描述如何创建项目目录、获取代码并安装必要的依赖组件。

3.1 检查 Python 环境

  1. 打开终端(Linux Terminal)。

    Open Terminal

  2. 检查 Python 版本。

    执行以下命令:

    python --version
    tip

    确保 Python 版本在 3.10 或以上。如果版本不符合要求,请先升级 Python。MTT AIBOOK 已预装了 Python 3.10 的开发环境。

    Python Installation Check

3.2 创建项目目录

  1. 创建项目目录。

    mkdir music_agent
    cd music_agent

    项目目录将用于存放所有代码文件。

  2. 打开 VS Code。

    code .

    或在 VS Code 中通过 File -> Open Folder 打开 music_agent 目录。

    VS Code Open Folder

3.3 获取项目代码

您可以通过以下两种方式获取项目代码:

方式一:直接下载完整项目

  1. 克隆项目仓库。

    git clone https://gitee.com/mthreadsacademy/project100.git

    注意: 请将示例地址替换为实际的项目仓库地址。

  2. 进入项目目录。

    cd project100/music_agent

方式二:使用 AI 辅助生成代码

  1. 使用 AI 提示词生成代码。 您可以在 ChatGPT、Claude 或其他 AI 编程助手中使用以下提示词:

    • 基础版提示词:

      现在我希望你能在这个文件里面构建一个 agent,可以根据我提供的不同情感生成音乐。

      要求:

      1. 支持四种情感:快乐、悲伤、兴奋、平静
      2. 使用 Python 实现,包含 Flask 网页界面
      3. 生成 WAV 格式音频文件,可在浏览器中直接播放
      4. 使用数学方法合成音频,不依赖外部音源
      5. 界面要现代化,用户体验友好

      请创建完整的项目结构,包括:

      - 音乐生成核心逻辑
      - Flask 后端服务
      - HTML 前端界面
      - 依赖管理文件
    • 进阶版提示词:

      请帮我创建一个基于情感的 AI 音乐生成器项目,具体要求如下:

      技术栈:

      - 后端:Python + Flask
      - 前端:HTML + CSS + JavaScript
      - 音频处理:NumPy + 数学合成

      功能需求:

      1. 情感音乐生成:
      - 快乐:C 大调,120 BPM,明亮音域
      - 悲伤:A 小调,75 BPM,低沉音域
      - 兴奋:G 大调,140 BPM,高音域快节奏
      - 平静:F 大调,85 BPM,舒缓节奏

      2. 音频合成技术:
      - 使用正弦波生成音调
      - 音符频率计算:440 * (2^(semitones/12))
      - 添加音频包络避免爆音
      - 输出 44.1kHz 采样率的 WAV 文件

      3. Web 界面设计:
      - 响应式布局,支持移动端
      - 四个情感按钮,渐变色设计
      - 实时加载状态提示
      - 内置音频播放器

      4. 项目结构:
      - app.py:Flask 主应用
      - music_emotion_agent.py:音乐生成核心
      - templates/index.html:前端页面
      - requirements.txt:依赖管理
      - static/music/:音频文件存储

      请提供完整的代码实现和详细注释。
  2. 手动创建项目结构。 如果使用 AI 生成代码,请按照以下结构创建文件:

    music_agent/
    ├── app.py # Flask 主应用
    ├── music_emotion_agent.py # 音乐生成核心逻辑
    ├── requirements.txt # 项目依赖
    ├── templates/
    │ └── index.html # 前端界面
    └── static/
    └── music/ # 生成的音乐文件存储目录

3.4 安装项目依赖

  1. 在 VS Code 中打开终端。

    点击右下角选择 Python 环境(推荐选择 base 环境)

    Select Python Environment

    在右上角打开终端(Terminal -> New Terminal)。

    Open Terminal in VS Code

  2. 安装 Python 依赖包。

    pip install -r requirements.txt
  3. 如果遇到安装问题,可使用国内镜像源。

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
  4. 验证安装是否成功。

    python -c "import flask, numpy; print('依赖安装成功!')"

若输出"依赖安装成功!",说明依赖已正确安装。

4. 最佳实践

本章节指导您启动音乐生成服务并进行情感音乐创作。

场景1: 启动音乐生成服务

通过 Flask 启动 Web 服务,提供音乐生成界面:

  1. 启动 Flask 应用。

    python app.py
  2. 验证服务启动。

    当看到类似以下输出时,说明服务已启动:

    * Running on http://127.0.0.1:5000
    * Debug mode: on
  3. 打开浏览器访问。

    在本地设备:打开浏览器,访问 http://localhost:5000

    Final Result

  4. 停止服务。

    在终端中按 Ctrl+C 终止运行。

场景2: 一键生成情感音乐

通过 Web 界面选择情感状态,生成专属音乐:

  1. 选择当前情感状态。 在 Web 界面中,您可以看到四个情感按钮:

    • 😊 快乐:欢快明亮的旋律
    • 😢 悲伤:深沉忧郁的音调
    • 🎉 兴奋:激昂动感的节拍
    • 😌 平静:舒缓宁静的和声
  2. 点击对应按钮。 系统会自动分析情感特征,选择合适的音乐参数。

  3. 等待 AI 创作。 界面会显示"正在创作您的专属音乐,请稍候…"的加载提示。

  4. 享受专属音乐。 生成完成后会自动播放,您也可以手动控制播放、暂停和音量。

场景3: 技术原理解析

了解音乐生成的核心技术原理。

音乐参数设计

不同情感对应的音乐参数如下:

情感音阶BPM音域特点
快乐C 大调120C4-E5明亮欢快的旋律
悲伤A 小调75A3-C5深沉忧郁的音调
兴奋G 大调140G4-B5激昂动感的节拍
平静F 大调85F4-F5舒缓宁静的和声

音频合成技术

  1. 频率计算公式

    # 频率计算公式
    frequency = 440.0 * (2 ** (semitones / 12.0))

    基于标准音 A4(440 Hz),通过半音数计算目标音符的频率。

  2. 正弦波生成

    # 正弦波生成
    arr[i] = np.sin(2 * np.pi * frequency * i / sample_rate)

    使用 NumPy 生成正弦波信号,采样率通常为 44.1 kHz。

节奏模式设计

不同情感对应的节奏模式:

情感节奏模式特点
快乐[1.0, 0.5, 0.5, 1.0]轻快跳跃
悲伤[2.0, 1.0, 1.0, 2.0]缓慢深沉
兴奋[0.25, 0.25, 0.5, 0.25, 0.25, 0.5]密集激烈
平静[2.0, 1.0, 1.0, 2.0]舒缓流畅

场景4: 探索更多可能性

基于现有技术原理,您可以尝试以下扩展功能:

  1. 调整音乐长度

    修改 length 参数生成更长的音乐:

    # 在 music_emotion_agent.py 中修改
    length = 10 # 默认值,可调整为 20、30 等
  2. 添加新情感

    emotion_params 中定义新的情感类型:

    emotion_params = {
    "快乐": {...},
    "悲伤": {...},
    "兴奋": {...},
    "平静": {...},
    "神秘": { # 新增情感
    "scale": "D_minor",
    "bpm": 90,
    "range": "D4-F5"
    }
    }
  3. 和声支持

    添加多声部,创造更丰富的音乐层次:

    # 在主旋律基础上添加和声
    harmony = generate_harmony(melody, emotion)
    audio = mix_audio(melody, harmony)
  4. 移动端适配

    优化界面,支持手机端使用:

    • 使用响应式 CSS 设计
    • 优化触摸交互体验
    • 适配不同屏幕尺寸
  5. 音乐导出

    添加 MP3 格式导出功能:

    # 使用 pydub 库转换格式
    from pydub import AudioSegment
    audio = AudioSegment.from_wav("output.wav")
    audio.export("output.mp3", format="mp3")
  6. AI 作词

    结合大语言模型,为旋律配上歌词:

    # 调用 LLM API 生成歌词
    lyrics = llm.generate_lyrics(emotion, melody_info)

常用操作命令

操作命令
检查 Python 版本python --version
创建项目目录mkdir music_agent && cd music_agent
安装依赖pip install -r requirements.txt
使用国内镜像安装pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
启动 Flask 服务python app.py
验证依赖安装python -c "import flask, numpy; print('依赖安装成功!')"
停止服务终端中按 Ctrl+C

5. 附录

5.1 项目亮点

  • AI + 音乐理论:基于音乐理论与情感心理学,为每种情感量身定制专属音阶、节奏和音域,一键生成情感旋律。

  • 纯数学音频合成:采用正弦波合成技术,无需依赖外部音频库或音源文件,直接产出高质量音频。

  • 现代化 Web 交互:界面采用美观的渐变设计,适配所有现代浏览器,点击按钮即可实时生成并播放音乐。

  • 全场景情感覆盖:四大情感模式精准匹配心境:快乐模式使用 C 大调,奏响明亮欢快的旋律;悲伤模式使用 A 小调,演绎深沉忧郁的音调;兴奋模式使用 G 大调,迸发激昂动感的节拍;平静模式使用 F 大调,流淌舒缓宁静的和声。

5.2 小知识:什么是情感音乐?

情感音乐是基于音乐心理学原理,通过特定的音阶、节奏、音域和力度来表达和诱发特定情感的音乐形式。研究表明,大调音阶通常让人感到明亮和快乐,而小调音阶则容易引发忧郁和深沉的情感。节奏的快慢、音域的高低、音符的时值分布都会影响听者的情感体验。

在这个项目中,我们将这些音乐理论转化为算法,让 AI 能够根据指定的情感类型,自动选择合适的音乐参数,生成符合该情感特征的旋律。

5.3 最终效果展示

界面效果

  • 现代化渐变背景设计:美观的视觉体验。

  • 四个情感按钮:清晰的视觉区分,直观的操作界面。

  • 实时加载状态提示:友好的用户体验反馈。

  • 内置音频播放器:支持播放、暂停、音量控制等功能。

音乐效果

  • 快乐音乐:明亮的 C 大调,轻快的节奏,让人心情愉悦。

  • 悲伤音乐:深沉的 A 小调,缓慢的节拍,触动内心情感。

  • 兴奋音乐:高亢的 G 大调,密集的节奏,激发活力。

  • 平静音乐:温和的 F 大调,舒缓的旋律,带来宁静。

5.4 常见问题

问题描述可能原因解决方案
依赖安装失败网络问题或 pip 源不可用1. 使用国内镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt;2. 检查网络连接。
Flask 服务启动失败端口被占用或代码错误1. 检查端口占用:lsof -i :5000(Linux);2. 修改端口:在 app.py 中修改 app.run(port=5001)
浏览器无法访问防火墙限制或 IP/端口错误1. 检查服务是否启动:查看终端输出;2. 确认访问地址正确:http://localhost:5000;3. 检查防火墙设置。
生成的音乐没有声音音频文件生成失败或播放器问题1. 检查 static/music/ 目录是否存在;2. 查看浏览器控制台错误信息;3. 确认音频文件格式为 WAV。
音乐生成速度慢计算资源不足或代码效率问题1. 减少音乐长度参数;2. 优化音频生成算法;3. 使用更高效的 NumPy 操作。
AI 生成代码不符合需求提示词不够详细或 AI 理解偏差1. 使用进阶版提示词;2. 分步骤生成代码;3. 根据实际需求手动调整代码。

5.5 相关资源

Python 官方文档https://docs.python.org/3/(学习 Python 基础语法)

Flask 官方文档https://flask.palletsprojects.com/(了解 Flask Web 框架)

NumPy 官方文档https://numpy.org/doc/(学习数组处理和音频合成)

音乐理论入门:了解音阶、调式、节奏等基础概念

情感计算研究:了解情感与音乐的关系

5.6 学习路径建议

通过完成本项目,您将深度体验以下实训内容:

  • Python 音频处理与数学合成技术:掌握使用 NumPy 进行音频信号处理

  • Flask Web 应用开发实践:学会构建简单的 Web 服务

  • 前端界面设计与交互优化:理解现代 Web 界面设计原则

  • 音乐理论在编程中的创新应用:将音乐知识转化为算法

  • 情感计算与人工智能的融合实践:理解情感与技术的结合

  • AI 辅助编程的实用技巧:学会使用 AI 工具提高开发效率

立即开启您的 AI 音乐创作之旅,让情感在旋律中自由流淌!