> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunoapi.org/llms.txt
> Use this file to discover all available pages before exploring further.

# 从音频生成 MIDI

> 将分离后的音轨转换为 MIDI 格式,为每个乐器提供详细的音符信息。

### 使用指南

* 将分离后的音轨转换为包含音高、时间和力度信息的结构化 MIDI 数据
* 需要已完成的人声分离任务 ID(来自人声分离 API)
* 为检测到的多个乐器生成 MIDI 音符数据,包括鼓、贝斯、吉他、键盘等
* 适用于音乐转谱、记谱、混音或教育分析
* 在清晰、分离良好且乐器部分明确的音轨上效果最佳

### 前置条件

<Warning>
  您必须首先使用 [人声与乐器分离](/cn/suno-api/separate-vocals-from-music) API,然后才能生成 MIDI。
</Warning>

### 参数说明

| 参数名称          | 类型     | 说明                                                                                                                                                                                   |
| :------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `taskId`      | string | **必填。** 已完成的人声分离任务 ID                                                                                                                                                                |
| `callBackUrl` | string | **必填。** 接收 MIDI 生成完成通知的回调 URL                                                                                                                                                        |
| `audioId`     | string | **可选。** 指定要生成 MIDI 的分离音频轨道。此 audioId 可从[获取人声分离详情](/cn/suno-api/get-vocal-separation-details)接口的 `originData` 数组中获取。`originData` 数组中的每个项目都包含一个 `id` 字段，可在此处使用。如果不提供，将从所有分离的轨道生成 MIDI。 |

### 开发者注意事项

* 回调将包含每个检测到的乐器的详细音符数据
* 每个音符包含:`pitch`(MIDI 音符编号)、`start`(秒)、`end`(秒)、`velocity`(0-1)
* 不是所有乐器都会被检测到 - 取决于音频内容
* **计费说明:** 请在 [**https://sunoapi.org/dashboard**](https://sunoapi.org/dashboard) 查看当前每次调用的积分消耗


## OpenAPI

````yaml cn/suno-api/suno-api-cn.json POST /api/v1/midi/generate
openapi: 3.0.0
info:
  title: intro
  description: 这是生成音频的API接口文档
  version: 1.0.0
  contact:
    name: 技术支持
    email: support@sunoapi.org
servers:
  - url: https://api.sunoapi.org
    description: API 服务器
security:
  - BearerAuth: []
tags:
  - name: Music Generation
    description: 用于创建和管理音乐生成任务的接口
  - name: Lyrics Generation
    description: 用于歌词生成和管理的接口
  - name: WAV Conversion
    description: 用于将音乐转换为WAV格式的接口
  - name: Vocal Removal
    description: 用于从音乐轨道中移除人声的接口
  - name: Music Video Generation
    description: 用于生成MP4视频的接口
  - name: Account Management
    description: 用于账户和积分管理的接口
paths:
  /api/v1/midi/generate:
    post:
      summary: 从音频生成 MIDI
      description: >-
        将分离后的音轨转换为 MIDI 格式,为每个乐器提供详细的音符信息。


        ### 使用指南

        - 将分离后的音轨转换为包含音高、时间和力度信息的结构化 MIDI 数据

        - 需要已完成的人声分离任务 ID(来自人声分离 API)

        - 为检测到的多个乐器生成 MIDI 音符数据,包括鼓、贝斯、吉他、键盘等

        - 适用于音乐转谱、记谱、混音或教育分析

        - 在清晰、分离良好且乐器部分明确的音轨上效果最佳


        ### 前置条件

        - 您必须首先使用人声与乐器分离 API,并使用 `type: split_stem` 参数来分离音频,然后才能生成 MIDI


        ### 参数详情

        - `taskId` 标识已完成的人声分离任务

        - `callBackUrl` 接收 MIDI 生成完成通知

        - `audioId`（可选）指定要生成 MIDI 的分离音频轨道。此 ID 可从获取人声分离详情接口的 `originData`
        数组中获取。如果不提供，将从所有分离的轨道生成 MIDI。


        ### 开发者注意事项

        - MIDI 生成通常需要 30-90 秒,具体取决于音频长度和复杂度

        - 回调将包含每个检测到的乐器的详细音符数据

        - 每个音符包含:pitch(MIDI 音符编号)、start(秒)、end(秒)、velocity(0-1)

        - 不是所有乐器都会被检测到 - 取决于音频内容

        - 生成的 MIDI 数据保留 14 天
      operationId: generate-midi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - taskId
                - callBackUrl
              properties:
                taskId:
                  type: string
                  description: 已完成的人声分离任务 ID。这应该是从人声与乐器分离端点返回的 taskId。
                  example: 5c79****be8e
                callBackUrl:
                  type: string
                  format: uri
                  description: >-
                    接收 MIDI 生成任务完成更新的 URL 地址。所有 MIDI 生成请求都需要此参数。


                    - 系统将在 MIDI 生成完成时向此 URL 发送 POST 请求,包含任务状态和 MIDI 音符数据

                    - 回调包含每个检测到的乐器的详细音符信息,包括音高、时间和力度

                    - 您的回调端点应能接受包含 MIDI 数据的 JSON 载荷的 POST 请求

                    - 详细的回调格式和实现指南,请参见 [MIDI
                    生成回调](/cn/suno-api/generate-midi-callbacks)

                    - 或者,您也可以使用获取 MIDI 生成详情接口来轮询任务状态
                  example: https://example.callback
                audioId:
                  type: string
                  description: >-
                    可选。指定要生成 MIDI 的分离音频轨道。此 audioId 可从获取人声分离详情接口的 `originData`
                    数组中获取。`originData` 数组中的每个项目都包含一个 `id`
                    字段，可在此处使用。如果不提供，将从所有分离的轨道生成 MIDI。
                  example: 8ca376e7-******-08aaf2c6dd27
      responses:
        '200':
          description: MIDI 生成任务创建成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 响应状态码
                    example: 200
                  msg:
                    type: string
                    description: 响应消息
                    example: success
                  data:
                    type: object
                    description: 包含任务信息的响应数据
                    properties:
                      taskId:
                        type: string
                        description: MIDI 生成任务的唯一标识符。使用此 ID 查询任务状态或接收回调结果。
                        example: 5c79****be8e
              example:
                code: 200
                msg: success
                data:
                  taskId: 5c79****be8e
        '500':
          $ref: '#/components/responses/Error'
components:
  responses:
    Error:
      description: 服务器异常
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: |-
        # 🔑 API 认证说明

        所有接口都需要通过 Bearer Token 方式进行认证。

        ## 获取 API Key

        1. 访问 [API Key 管理页面](https://sunoapi.org/api-key) 获取您的 API Key

        ## 使用方式

        在请求头中添加：

        ```
        Authorization: Bearer YOUR_API_KEY
        ```

        > **⚠️ 注意：**
        > - 请妥善保管您的 API Key，不要泄露给他人
        > - 如果怀疑 API Key 泄露，请立即在管理页面重置

````