نِت اَرز · مستندات API هوش مصنوعی
همهٔ مستندات
مدل‌ها و قیمت‌ها مرجع تعاملی دریافت کلید

ساخت موسیقی

ساخت کلیپ و آهنگ کامل با Lyria گوگل (از جمله Lyria 3.5) از روی توصیف متنی در API هوش مصنوعی نِت اَرز؛ خروجی MP3 در قالب base64 و قیمت‌گذاری به‌ازای هر قطعه.

base_url: https://netarz.ir/api/ai/v1 به‌روزرسانی: 1405/08/14
POST /api/ai/v1/audio/music نیازمند کلید API

ساخت قطعهٔ موسیقی از روی توصیف متنی، با مدل‌های Lyria گوگل. خروجی یک فایل صوتی استریو (MP3) است که در قالب base64 برمی‌گردد. مدل‌های ElevenLabs هم، برای موسیقی با طول دلخواه و جلوه صوتی، از همین endpoint کار می‌کنند؛ پایین‌تر آمده‌اند. فهرست مدل‌ها و قیمت هر قطعه در صفحهٔ مدل‌ها.

مدل‌ها

مدل‌های موسیقی را از دو مسیر صدا می‌زنید: مستقیم از خود گوگل، یا از OpenRouter با پیشوند openrouter/google/. endpoint، درخواست و پاسخ در هر دو یکی است.

شناسهٔ مدلچه می‌سازد
lyria-3.5جدیدترین مدل: آهنگ کامل چنددقیقه‌ای. ترانه به زبانی خوانده می‌شود که توصیف را به آن نوشته‌اید؛ برای کیفیت تلفظ فارسی قولی نمی‌دهیم.
lyria-3-clip-previewکلیپ ۳۰ ثانیه‌ای؛ برای اینترو، لوپ یا جینگل.
lyria-3-pro-previewنسل قبلی آهنگ کامل.
openrouter/google/lyria-3-clip-preview
openrouter/google/lyria-3-pro-preview
همان کلیپ و آهنگ کامل Lyria 3، از مسیر OpenRouter.
eleven-music-v1موسیقی ElevenLabs با طولی که خودتان می‌گویید (۳ تا ۳۰۰ ثانیه).
eleven-sound-effects-v2
eleven-sound-effects-v3
جلوه صوتی ElevenLabs (۰٫۵ تا ۳۰ ثانیه).
چرا endpoint جداگانه دارد

مدل موسیقی نه یک مدل گفت‌وگوی معمولی است و نه یک مدل متن به گفتار: در OpenRouter فقط به شکل استریم جواب می‌دهد و در گوگل از API جداگانه‌ای می‌آید. درگاه هر دو را پشت یک endpoint گذاشته و همیشه یک فایل کامل به شما می‌دهد — چون نصفِ یک آهنگ به درد کسی نمی‌خورد. پس مدل‌های موسیقی را به /chat/completions نفرستید؛ خطای model_endpoint_mismatch می‌گیرید.

درخواست

Python
import base64, httpx

res = httpx.post(
    "https://netarz.ir/api/ai/v1/audio/music",
    headers={"Authorization": f"Bearer {NETARZ_API_KEY}"},
    json={
        "model": "lyria-3-clip-preview",
        "prompt": "قطعهٔ آرام لو‌فای با پیانو، تمپوی کند، حال‌وهوای امیدوار، بدون کلام",
    },
    timeout=180,
).json()

clip = res["data"][0]
open(f"clip.{clip['format']}", "wb").write(base64.b64decode(clip["b64_json"]))
Node.js
import { writeFile } from "node:fs/promises";

const res = await fetch("https://netarz.ir/api/ai/v1/audio/music", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.NETARZ_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "lyria-3-clip-preview",
    prompt: "قطعهٔ آرام لو‌فای با پیانو، تمپوی کند، حال‌وهوای امیدوار، بدون کلام",
  }),
}).then((r) => r.json());

const clip = res.data[0];
await writeFile(`clip.${clip.format}`, Buffer.from(clip.b64_json, "base64"));
cURL
curl https://netarz.ir/api/ai/v1/audio/music \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lyria-3.5",
    "prompt": "آهنگ پاپ شاد با گیتار آکوستیک و ریتم تند، متن ترانه دربارهٔ سفر جاده‌ای"
  }' | jq -r '.data[0].b64_json' | base64 -d > song.mp3
پاسخ
{
  "id": "req_8f1c…",
  "object": "music.generation",
  "created": 1790899200,
  "model": "lyria-3-clip-preview",
  "text": "",
  "data": [
    { "b64_json": "SUQzAwAAAAAvMkdFT0IA…", "format": "mp3", "bytes": 744608 }
  ],
  "usage": { "input_tokens": 18, "output_tokens": 0, "total_tokens": 18 }
}

پارامترها

پارامترتوضیح
model الزامییکی از شناسه‌های جدول بالا.
prompt الزامیتوصیف قطعه، تا ۴۰۰۰ کاراکتر: سبک، سازها، تمپو و حال‌وهوا. اگر متن ترانه بدهید، خوانده می‌شود.
messagesاگر به‌جای prompt بفرستید، همان شکل پیام‌های Chat Completions پذیرفته می‌شود — برای وقتی که تصویری را هم به‌عنوان الهام ضمیمه می‌کنید. در مدل‌های مستقیم گوگل، تصویر باید data URL یا base64 باشد؛ لینک اینترنتی خوانده نمی‌شود.
temperatureمیزان آزادی مدل در برداشت از توصیف شما، صفر تا ۱. فقط روی مدل‌های openrouter/… اثر دارد.
seedبا seed ثابت و همان توصیف، قطعه‌ای نزدیک به قبلی می‌گیرید. فقط روی مدل‌های openrouter/… اثر دارد.
secondsفقط مدل‌های ElevenLabs: طول قطعه به ثانیه. eleven-music-v1 از ۳ تا ۳۰۰ (پیش‌فرض ۳۰) و مدل‌های جلوه صوتی از ۰٫۵ تا ۳۰ (پیش‌فرض ۵). در پاسخ هم data[0].seconds می‌آید.

فیلدهای پاسخ

  • data[0].b64_json — خود فایل صوتی در قالب base64.
  • data[0].format — قالب فایل؛ معمولاً mp3. فایل را با همین پسوند ذخیره کنید، مثل نمونه‌های بالا.
  • text — متنی که خود مدل همراه قطعه برمی‌گرداند، مثل متن ترانه یا یادداشتی کوتاه دربارهٔ ساختار قطعه؛ ممکن است خالی باشد.

ElevenLabs: موسیقی با طول دلخواه و جلوه صوتی

این مدل‌ها مثل Lyria صدا زده می‌شوند، با یک فیلد اضافه: seconds. راهنمای کامل ElevenLabs، با گفتار فارسی و Scribe، در صفحهٔ صدا است.

cURL، موسیقی ۶۰ ثانیه‌ای
curl https://netarz.ir/api/ai/v1/audio/music \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "eleven-music-v1",
    "prompt": "قطعهٔ آرام لو‌فای با پیانو و صدای باران، بدون کلام",
    "seconds": 60
  }' | jq -r '.data[0].b64_json' | base64 -d > theme.mp3

پاسخ همان شکل بالا را دارد و data[0].seconds طول واقعی قطعه است.

قیمت‌گذاری

موسیقی Lyria به‌ازای هر قطعه حساب می‌شود، نه به‌ازای توکن: طول توصیف شما در مبلغ اثری ندارد و هر قطعه از یک مدل همیشه یک قیمت دارد. نرخ دقیق هر مدل زیر کلید per_request در فهرست قیمت‌ها و به تومان در صفحهٔ مدل‌ها آمده است.

  • مدل‌های ElevenLabs به‌ازای طول قطعه (seconds) حساب می‌شوند؛ نرخ‌شان در صفحهٔ مدل‌ها است.
  • درخواستی که به هر دلیل فایل صوتی برنگرداند، هزینه‌ای ندارد. اگر فیلتر محتوایی گوگل قطعه‌ای را نسازد، پاسخ خطای ۴۰۰ با کد upstream_rejected است و چیزی از اعتبارتان کم نمی‌شود.
  • ساخت یک کلیپ حدود ده ثانیه طول می‌کشد و آهنگ کامل بیشتر؛ در کلاینت خود timeout را دست‌کم روی ۱۸۰ ثانیه بگذارید.

نکات

  • فایل را همان‌جا ذخیره کنید؛ درگاه نسخه‌ای از قطعه نگه نمی‌دارد.
  • سبک، سازها، تمپو و حس قطعه را بنویسید. هرچه توصیف مشخص‌تر باشد، نتیجه نزدیک‌تر است.
  • برای قطعهٔ بی‌کلام، «بدون کلام» را هم در توصیف بیاورید.
  • نام یک هنرمند یا اثر واقعی در توصیف، ممکن است باعث شود گوگل قطعه را نسازد؛ سبک را توصیف کنید، نه نام را.
  • حق استفادهٔ تجاری از خروجی را با شرایط خود گوگل بسنجید؛ ما قراردادی جدا از آن نداریم.