全部產品
Search
文件中心

Alibaba Cloud Model Studio:音樂產生

更新時間:May 07, 2026

百聆音樂產生大模型(Fun音樂大模型)支援輸入開放性歌曲的創作要求或歌詞,產生整首男/女聲演唱的中文或英文歌曲。歌曲通俗易懂,情緒由淺入深,是人類靈感與大模型能力的完美結合。

重要

該模型目前處於邀測階段,您需要前往百鍊模型廣場申請開通後方可使用。該功能僅在中國內地部署範圍(北京地區)下可用。

核心功能

  • 根據提示詞(prompt)自動創作歌詞並產生完整歌曲

  • 根據自訂歌詞(lyrics)產生歌曲

  • 支援男聲(male)和女聲(female)演唱

  • 支援中文和英文歌詞與提示詞

  • 支援流式和非流式兩種輸出模式

  • 支援 MP3 和 WAV 音頻格式輸出

支援的模型

音樂產生模型:fun-music-v1

支援的語言:

  • 歌詞語言:中文、英文

  • 提示詞語言:中文、英文

快速開始

前提條件

  • 已擷取 API Key。擷取方式請參見擷取 API Key

  • 已將 API Key 配置到環境變數(推薦):

    export DASHSCOPE_API_KEY="sk-xxx"
重要

lyricsprompt 參數必須至少提供一個,不可同時為空白。當同時傳入兩個參數時,僅 lyrics 生效,prompt 將被忽略。

通過提示詞產生音樂

傳入 prompt 參數描述音樂風格和情境,模型將自動創作歌詞並產生歌曲。

curl

curl -X POST 'https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "fun-music-v1",
    "input": {
        "prompt": "夏日清新民謠,木吉他與口琴伴奏,輕快節奏,適合旅行Vlog背景音樂",
        "gender": "female"
    }
}'

Python

import requests
import os
import json

api_key = os.getenv("DASHSCOPE_API_KEY")
url = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer"

response = requests.post(url,
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    },
    json={
        "model": "fun-music-v1",
        "input": {
            "prompt": "夏日清新民謠,木吉他與口琴伴奏,輕快節奏,適合旅行Vlog背景音樂",
            "gender": "female"
        }
    }
)

result = response.json()
audio_url = result["output"]["audio"]["url"]
print(f"音樂產生成功!下載地址:{audio_url}")

Java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class FunMusicDemo {
    public static void main(String[] args) throws Exception {
        String apiKey = System.getenv("DASHSCOPE_API_KEY");
        String endpoint = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer";

        HttpURLConnection conn = (HttpURLConnection) new URL(endpoint).openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Authorization", "Bearer " + apiKey);
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonBody = "{\"model\":\"fun-music-v1\","
            + "\"input\":{\"prompt\":\"夏日清新民謠,木吉他與口琴伴奏,輕快節奏,適合旅行Vlog背景音樂\","
            + "\"gender\":\"female\"}}";

        try (OutputStream os = conn.getOutputStream()) {
            os.write(jsonBody.getBytes("UTF-8"));
        }

        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            System.out.println(sb.toString());
        }
    }
}

通過歌詞產生音樂

傳入 lyrics 參數提供自訂歌詞,模型將根據歌詞譜曲並演唱。

curl

curl -X POST 'https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "fun-music-v1",
    "input": {
        "lyrics": "[verse]\n清晨的陽光穿過窗帘,\n咖啡的香氣瀰漫房間.\n翻開昨天未讀完的書,\n時光就這樣悄悄流轉.\n\n[chorus]\n慢慢來不著急,\n生活本該如此愜意.\n把煩惱都丟進風裡,\n擁抱每一個晴天雨季.",
        "gender": "female"
    }
}'

Python

import requests
import os
import json

api_key = os.getenv("DASHSCOPE_API_KEY")
url = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer"

lyrics = """[verse]
清晨的陽光穿過窗帘,
咖啡的香氣瀰漫房間.
翻開昨天未讀完的書,
時光就這樣悄悄流轉.

[chorus]
慢慢來不著急,
生活本該如此愜意.
把煩惱都丟進風裡,
擁抱每一個晴天雨季."""

response = requests.post(url,
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    },
    json={
        "model": "fun-music-v1",
        "input": {
            "lyrics": lyrics,
            "gender": "female"
        }
    }
)

result = response.json()
audio_url = result["output"]["audio"]["url"]
print(f"音樂產生成功!下載地址:{audio_url}")

Java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class FunMusicLyricsDemo {
    public static void main(String[] args) throws Exception {
        String apiKey = System.getenv("DASHSCOPE_API_KEY");
        String endpoint = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer";

        HttpURLConnection conn = (HttpURLConnection) new URL(endpoint).openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Authorization", "Bearer " + apiKey);
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String lyrics = "[verse]\\n清晨的陽光穿過窗帘,\\n"
            + "咖啡的香氣瀰漫房間.\\n"
            + "翻開昨天未讀完的書,\\n"
            + "時光就這樣悄悄流轉.\\n\\n"
            + "[chorus]\\n慢慢來不著急,\\n"
            + "生活本該如此愜意.\\n"
            + "把煩惱都丟進風裡,\\n"
            + "擁抱每一個晴天雨季.";

        String jsonBody = "{\"model\":\"fun-music-v1\","
            + "\"input\":{\"lyrics\":\"" + lyrics + "\","
            + "\"gender\":\"female\"}}";

        try (OutputStream os = conn.getOutputStream()) {
            os.write(jsonBody.getBytes("UTF-8"));
        }

        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            System.out.println(sb.toString());
        }
    }
}

流式調用

流式模式支援邊產生邊返迴音頻資料,適用於即時播放等情境。啟用流式輸出需要在要求標頭中添加 X-DashScope-SSE: enable

說明

流式模式與非流式模式的輸入參數字元數限制不同,請注意區分:

  • 非流式模式:lyrics 支援中文 5~350 字元、英文 5~2000 字元,prompt 支援 1~2000 字元。

  • 流式模式:lyrics 支援中文 300~350 字、英文 200~250 詞,prompt 支援 5~1000 個中文漢字或英文單詞。

curl

curl -X POST 'https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
    "model": "fun-music-v1",
    "input": {
        "prompt": "節奏感強的電子舞曲,合成器音效,充滿能量,適合健身運動情境",
        "gender": "male"
    }
}'

Python

import requests
import os
import json
import base64

api_key = os.getenv("DASHSCOPE_API_KEY")
url = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer"

response = requests.post(url,
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
        "X-DashScope-SSE": "enable"
    },
    json={
        "model": "fun-music-v1",
        "input": {
            "prompt": "節奏感強的電子舞曲,合成器音效,充滿能量,適合健身運動情境",
            "gender": "male"
        }
    },
    stream=True
)

output_file = "output.mp3"
with open(output_file, "wb") as f:
    for line in response.iter_lines():
        if not line:
            continue
        decoded = line.decode("utf-8")
        if decoded.startswith("data:"):
            data = json.loads(decoded[5:])
            finish_reason = data.get("output", {}).get("finish_reason")
            if finish_reason == "null":
                audio_data = data["output"]["audio"].get("data", "")
                if audio_data:
                    f.write(base64.b64decode(audio_data))
            elif finish_reason == "stop":
                print(f"音樂產生完成!已儲存到 {output_file}")

Java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;

public class FunMusicStreamDemo {
    public static void main(String[] args) throws Exception {
        String apiKey = System.getenv("DASHSCOPE_API_KEY");
        String endpoint = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer";

        HttpURLConnection conn = (HttpURLConnection) new URL(endpoint).openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Authorization", "Bearer " + apiKey);
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("X-DashScope-SSE", "enable");
        conn.setDoOutput(true);

        String jsonBody = "{\"model\":\"fun-music-v1\","
            + "\"input\":{\"prompt\":\"節奏感強的電子舞曲,合成器音效,充滿能量,適合健身運動情境\","
            + "\"gender\":\"male\"}}";

        try (OutputStream os = conn.getOutputStream()) {
            os.write(jsonBody.getBytes("UTF-8"));
        }

        String outputFile = "output.mp3";
        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"));
             FileOutputStream fos = new FileOutputStream(outputFile)) {
            String line;
            while ((line = reader.readLine()) != null) {
                if (line.startsWith("data:")) {
                    String data = line.substring(5);
                    if (data.contains("\"finish_reason\":\"null\"")) {
                        int start = data.indexOf("\"data\":\"") + 8;
                        int end = data.indexOf("\"", start);
                        if (start > 8 && end > start) {
                            byte[] chunk = Base64.getDecoder().decode(
                                data.substring(start, end));
                            fos.write(chunk);
                        }
                    } else if (data.contains("\"finish_reason\":\"stop\"")) {
                        System.out.println("音樂產生完成!已儲存到 " + outputFile);
                    }
                }
            }
        }
    }
}

歌詞創作規範

Fun-music 內建專業歌詞創作模型。當您選擇自行提供歌詞時,遵循以下規範可產生更高品質的音樂。

結構標籤

標準歌詞結構應包含以下標籤:

標籤

說明

[intro]

前奏,引入氛圍

[verse]

主歌,敘述故事

[chorus]

副歌,情感高潮

[bridge]

橋段,視角轉換

[outro]

尾奏,漸弱收尾

歌詞樣本

[intro]
琴鍵輕落,晚風微涼.
那年夏天,心跳悄悄發燙.

[verse]
教室窗邊,陽光斜照你側臉.
借半塊橡皮,指尖碰出電流線.
放學路上,單車鈴聲追雲煙.
你說未來很遠,我卻想走到終點.

[chorus]
青春是未拆的信箋,寫滿勇敢的誓言.
哪怕世界忽明又忽暗,有你就看見光點.
戀愛像初夏的雨甜,淋濕夢也不怕遠.
我們笑著奔向明天,手牽手不回頭望.

[bridge]
後來風雨打散紙傘,沉默代替了答案.
可心底那首歌未完,還等一句"別走散".

[chorus]
青春是未拆的信箋,寫滿勇敢的誓言.
哪怕世界忽明又忽暗,有你就看見光點.
戀愛像初夏的雨甜,淋濕夢也不怕遠.
我們笑著奔向明天,手牽手不回頭望.

[outro]
琴聲漸遠,星光鋪滿長街.
故事未完,下一頁仍熱烈.

創作要求

  • 原創性原則:嚴禁抄襲已發表歌曲的歌詞,不得模仿知名歌曲的押韻模式或標誌性句式。

  • Alibaba Content Security Service:禁止涉及政治、暴力、色情、低俗、恐怖、毒品等違法內容,保持內容健康、情感真摯。

  • 語言要求:僅支援中文或英文,不支援日文、韓文等其他語言。

最佳實務

提示詞撰寫

具體描述情緒、情境、樂器偏好,能產生更貼合需求的音樂。

  • 推薦:悲傷鋼琴曲,雨夜思念

  • 不推薦:悲傷音樂(過於籠統)

音頻格式選擇

  • mp3:適合網路傳輸和儲存,為預設格式。

  • wav:適合後期處理和高品質播放。

API參考

音樂產生API參考

常見問題

lyrics 和 prompt 有什麼區別?

lyrics 參數用於傳入您自己編寫的歌詞,模型將嚴格根據歌詞內容進行譜曲和演唱。prompt 參數用於傳入對音樂風格、情境的自然語言描述,模型將自動創作歌詞並產生對應的音樂。兩個參數至少傳入一個。如果同時傳入,僅 lyrics 生效。

流式和非流式模式如何選擇?

如果只需擷取最終的完整音頻檔案,推薦使用非流式模式,介面調用更簡單。如果需要在音樂產生過程中逐步擷取音頻資料(如邊產生邊播放),建議使用流式模式。

產生的音頻 URL 有效期間是多久?

音頻檔案下載 URL 的有效期間為 24 小時,請在此時間內完成下載。超過有效期間後 URL 將失效,需要重新調用介面產生。

流式和非流式模式的參數限制有何不同?

兩種模式下 lyricsprompt 的字元數限制存在差異。非流式模式下,lyrics 支援中文 5~350 字元、英文 5~2000 字元,prompt 支援 1~2000 字元。流式模式下,lyrics 支援中文 300~350 字、英文 200~250 詞,prompt 支援 5~1000 個中文漢字或英文單詞。請根據所選模式注意對應的參數限制。