360 Secure SkillHub
360 安全技能中心

音乐生成工具专业版

封装 SenseAudio 音乐生成接口:先创建歌词任务(同步或异步),再用歌词创建歌曲任务并设置风格、人声性别等参数,最后轮询任务状态获取音频地址;提供参数表、curl 与 Python 完整调用示例,需配置 API Key。

scikkk
scikkk
热度 19.74
最近更新 2026-09-22 02:57:10
分类:创作依赖:第三方 API / 代码执行应用场景:API 集成 / 故事创作 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add music-gen
Metadata
name
senseaudio-music
description
SenseAudio Music Generation API for creating AI-generated lyrics and songs. Supports lyrics generation, song generation with style/vocal control, and async task polling.
version
1.0.0
metadata
{"openclaw":{"requires":{"env":["SENSEAUDIO_API_KEY"]},"primaryEnv":"SENSEAUDIO_API_KEY","homepage":"https://senseaudio.cn/docs/song/lyrics_create"}}

SenseAudio Music Generation

SenseAudio provides AI-powered music generation APIs for creating lyrics and full songs. The workflow is:

  1. Generate lyrics (sync or async)
  2. Generate a song using the lyrics (async, returns task_id)
  3. Poll for results

Base URL: https://api.senseaudio.cn Auth: Authorization: Bearer $SENSEAUDIO_API_KEY


1. Generate Lyrics

POST /v1/song/lyrics/create

Parameter Type Required Description
prompt string yes Description of the lyrics to generate
provider string yes Model provider, currently only sensesong

Response (sync):

{
  "data": [
    {
      "text": "[intro-medium] ; [verse] ... ; [chorus] ... ; [outro-medium]",
      "title": ""
    }
  ]
}

Response (async): Returns task_id — poll with lyrics pending endpoint.

curl -X POST https://api.senseaudio.cn/v1/song/lyrics/create \
  -H "Authorization: Bearer $SENSEAUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "一段慷慨激昂的歌词", "provider": "sensesong"}'

2. Poll Lyrics (Async)

GET /v1/song/lyrics/pending/:task_id

Response:

{
  "task_id": "bcee6b21-...",
  "status": "SUCCESS",
  "response": {
    "task_id": "bcee6b21-...",
    "data": [{"text": "...", "title": ""}]
  }
}

Status values: PENDING | SUCCESS | FAILED

curl https://api.senseaudio.cn/v1/song/lyrics/pending/{task_id} \
  -H "Authorization: Bearer $SENSEAUDIO_API_KEY"

3. Generate Song

POST /v1/song/music/create

Parameter Type Required Description
model string yes Currently only sensesong
lyrics string no Song lyrics (use format from lyrics API)
instrumental bool no true for instrumental (no vocals)
style string no Music style (e.g. "pop", "rock", "jazz")
style_weight string no Style weight 0–1
title string no Song title
vocal_gender string no f = female, m = male
negative_tags string no Style elements to exclude

Response:

{"task_id": "50f979f5-2b9e-4254-8653-c277644a31fa"}
curl -X POST https://api.senseaudio.cn/v1/song/music/create \
  -H "Authorization: Bearer $SENSEAUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sensesong",
    "lyrics": "[verse] Your lyrics here...",
    "style": "pop",
    "vocal_gender": "f",
    "title": "My Song"
  }'

4. Poll Song (Async)

GET /v1/song/music/pending/:task_id

Response:

{
  "task_id": "50f979f5-...",
  "status": "SUCCESS",
  "response": {
    "task_id": "50f979f5-...",
    "data": [
      {
        "audio_url": "https://...",
        "lyrics": "...",
        "duration": 110
      }
    ]
  }
}

Status values: PENDING | SUCCESS | FAILED

curl https://api.senseaudio.cn/v1/song/music/pending/{task_id} \
  -H "Authorization: Bearer $SENSEAUDIO_API_KEY"

Python Example (Full Flow)

import requests
import time

API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
BASE = "https://api.senseaudio.cn"

# Step 1: Generate lyrics
resp = requests.post(f"{BASE}/v1/song/lyrics/create",
    headers=HEADERS,
    json={"prompt": "一首关于夏天的流行歌曲", "provider": "sensesong"})
lyrics_data = resp.json()
lyrics_text = lyrics_data["data"][0]["text"]

# Step 2: Generate song
resp = requests.post(f"{BASE}/v1/song/music/create",
    headers=HEADERS,
    json={"model": "sensesong", "lyrics": lyrics_text, "style": "pop", "vocal_gender": "f"})
task_id = resp.json()["task_id"]

# Step 3: Poll for result
while True:
    resp = requests.get(f"{BASE}/v1/song/music/pending/{task_id}", headers=HEADERS)
    result = resp.json()
    if result["status"] == "SUCCESS":
        print("Audio URL:", result["response"]["data"][0]["audio_url"])
        break
    elif result["status"] == "FAILED":
        print("Failed")
        break
    time.sleep(5)


SenseAudio 音乐生成

SenseAudio 提供 AI 驱动的音乐生成 API,支持歌词生成和完整歌曲生成。标准工作流程:

  1. 生成歌词(同步或异步)
  2. 使用歌词生成歌曲(异步,返回 task_id)
  3. 轮询获取结果

基础 URL: https://api.senseaudio.cn 鉴权: Authorization: Bearer $SENSEAUDIO_API_KEY


1. 音乐歌词生成请求

POST /v1/song/lyrics/create

参数名 类型 必填 描述
prompt string 是 歌词生成提示词
provider string 是 模型,目前只支持 sensesong

同步响应示例:

{
  "data": [
    {
      "text": "[intro-medium] ; [verse] We stand upon the edge of dawn... ; [chorus] Rise up now...",
      "title": ""
    }
  ]
}

异步响应: 返回 task_id,需通过歌词轮询接口获取结果。


2. 音乐歌词轮询

GET /v1/song/lyrics/pending/:task_id

使用创建歌词任务得到的异步任务 ID 获取歌词数据。

响应示例:

{
  "task_id": "bcee6b21-dcf9-44d1-9b85-7bfef0e840db",
  "status": "SUCCESS",
  "response": {
    "task_id": "bcee6b21-dcf9-44d1-9b85-7bfef0e840db",
    "data": [{"text": "...", "title": ""}]
  }
}

任务状态:PENDING(处理中)| SUCCESS(成功)| FAILED(失败)


3. 音乐歌曲生成请求

POST /v1/song/music/create

参数名 类型 必填 描述
model string 是 模型,目前只能使用 sensesong
lyrics string 否 歌词内容
instrumental bool 否 是否为纯音乐(无人声)
style string 否 歌曲风格(如 "pop"、"rock")
style_weight string 否 风格权重,取值 0–1
title string 否 歌曲标题
vocal_gender string 否 人声性别:f 女性,m 男性
negative_tags string 否 排除的风格元素

响应示例:

{"task_id": "50f979f5-2b9e-4254-8653-c277644a31fa"}

4. 音乐歌曲轮询

GET /v1/song/music/pending/:task_id

使用创建歌曲任务得到的异步任务 ID 获取歌曲数据。

响应示例:

{
  "task_id": "50f979f5-...",
  "status": "SUCCESS",
  "response": {
    "task_id": "50f979f5-...",
    "data": [
      {
        "audio_url": "https://...",
        "lyrics": "...",
        "duration": 110
      }
    ]
  }
}

任务状态:PENDING(处理中)| SUCCESS(成功)| FAILED(失败)


完整调用示例(Python)

import requests
import time

API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
BASE = "https://api.senseaudio.cn"

# 第一步:生成歌词
resp = requests.post(f"{BASE}/v1/song/lyrics/create",
    headers=HEADERS,
    json={"prompt": "一首关于夏天的流行歌曲", "provider": "sensesong"})
lyrics_text = resp.json()["data"][0]["text"]

# 第二步:生成歌曲
resp = requests.post(f"{BASE}/v1/song/music/create",
    headers=HEADERS,
    json={"model": "sensesong", "lyrics": lyrics_text, "style": "pop", "vocal_gender": "f"})
task_id = resp.json()["task_id"]

# 第三步:轮询结果
while True:
    resp = requests.get(f"{BASE}/v1/song/music/pending/{task_id}", headers=HEADERS)
    result = resp.json()
    if result["status"] == "SUCCESS":
        print("音频地址:", result["response"]["data"][0]["audio_url"])
        break
    elif result["status"] == "FAILED":
        print("生成失败")
        break
    time.sleep(5)