API متن ترانه با مهر زمانی
توضیح نقطه پایانی
متن ترانه با مهر زمانی، مهرهای زمانی در سطح کلمه را برای یک آهنگ برمیگرداند، برای نمایش همگام متن.
نقطه پایانی: POST /api/lyrics/timeline
صورتحساب: رایگان (پرسوجوی فقطخواندنی؛ هزینهای کسر نمیشود و کار تولیدی ایجاد نمیشود).
قالب بازگشتی: آرایه تایملاین مستقیماً برگردانده میشود — پوشش بیرونی data / success وجود ندارد؛ پس از تجزیه فقط یک آرایه است.
پارامترهای درخواست
Headers
| پارامتر | نوع | الزامی | یادداشت |
|---|---|---|---|
| Authorization | string | بله | Bearer YOUR_API_KEY |
| Content-Type | string | بله | application/json |
پارامترهای بدنه
| پارامتر | نوع | الزامی | پیشفرض | یادداشت |
|---|---|---|---|---|
| model | string | خیر | suno-v6 | نام مدل برای مشتری: suno-v6، suno-v6-wild یا suno-v6-mini |
| song_id | string | بله | - | شناسه آهنگ |
نمونه درخواست
curl -X POST https://www.suno-api.io/api/lyrics/timeline \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"song_id": "clip_id"
}'
پاسخ
در زیر پاسخ واقعی محیط تولید برای آهنگی 189.6 ثانیهای با suno-v6 آمده است (آن فراخوانی 69 قطعه داشت؛ اینجا فقط چند قطعهٔ اول و آخر نگه داشته شده):
[
{
"word": "[Intro]\n\n\n[",
"start_s": 15,
"end_s": 15.04277,
"success": true,
"p_align": 0.99
},
{
"word": "Instrumental: ",
"start_s": 15.04704,
"end_s": 15.10264,
"success": true,
"p_align": 0.99
},
{
"word": "End]\n\n\n",
"start_s": 189.16974,
"end_s": 189.654,
"success": true,
"p_align": 0.99
}
]
مرجع فیلدها
| فیلد | نوع | یادداشت |
|---|---|---|
word |
string | متن این قطعه؛ خودش خطوط جدید دارد: هر قطعه یک خط از متن با \n در پایان قطعه و \n\n بین پاراگرافها، بنابراین مواردی که فقط فاصله دارند هم دیده میشود |
start_s |
number | زمان شروع قطعه بر حسب ثانیه (با اعشار) |
end_s |
number | زمان پایان قطعه بر حسب ثانیه. end_s قطعهٔ آخر تقریباً برابر طول آهنگ است |
success |
boolean | آیا این قطعه با موفقیت همتراز شده است |
p_align |
number | اطمینان همترازی؛ در اندازهگیریها پایدار روی 0.99 |
نکاتی که باید مراقب بود
- دنبال پوشش بیرونی نگردید. پاسخ خودِ آرایه است، نه
{"data": ...}، و فیلدsuccessهم ندارد. - ممکن است در ابتدا هیچ قطعهای نباشد. در آهنگهایی که فقط پیشدرآمد دارند، اندازهگیری نشان داد نخستین قطعه تازه در ثانیهٔ 15 پدیدار میشود و
start_sتضمینی برای شروع از0ندارد؛ برای کارائوکه، فاصلهٔ ابتدایی را خودتان مدیریت کنید. - نشانههای سازی و ساختاری هم برگردانده میشوند، به شکل
[Intro]،[Verse 1]،Instrumental: soft arpeggiating piano, …و[End]، و برای آنها هم زمان کلمهبهکلمه داده میشود. پیش از ساخت زیرنویس، این قطعهها را بر پایهٔ[ابتدایی یا واژهٔInstrumentalفیلتر کنید، وگرنه توضیحات تنظیم موسیقی بهجای متن ترانه نمایش داده میشود. - تفکیک بر پایهٔ کلمه است، نه خط. یک خط متن معمولاً به چند قطعه تقسیم میشود و باید با
\nدر خطوط ادغام شود؛ زمان هر خط،start_sنخستین قطعهٔ آن خط است. - تعداد قطعهها به آهنگ بستگی دارد؛ تعداد ثابت را فرض نکنید (اندازهگیری: آهنگ 189.6 ثانیهای 69 قطعه داشت و بدنهٔ پاسخ حدود 6.5 کیلوبایت بود).
ساخت فایل .lrc
این نقطه پایانی فقط دادهٔ تایملاین را برمیگرداند و فایل را مستقیم بازنمیگرداند. اگر .lrc لازم دارید، خطوط را از start_s برگشتی در قالب [mm:ss.cc] بسازید (فیلد word خودش خط جدید دارد، پس بر پایهٔ خط تقسیم کنید و خطوط خالی را رد کنید). برای نمونه به بخش «چگونه متن ترانه با مهر زمانی (.lrc) را بگیریم» در API دانلود و پیشنمایش رسانه آهنگ نگاه کنید.
در زیر نسخهٔ کامل با فیلتر نشانههای سازی/ساختاری آمده است (هر قطعه یک خط، مناسب برای بررسی نخستین شکل داده):
import re
SKIP = re.compile(r"^\[.*\]$|^Instrumental:")
def to_lrc(segments):
lines = []
for seg in segments:
if not seg.get("success", True):
continue
text = (seg.get("word") or "").strip()
if not text or SKIP.match(text):
continue
cs = int(max(0.0, float(seg["start_s"])) * 100 + 0.5)
lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
return "\n".join(lines)
نکات سازگاری
در مستندات پیشین از نمونهٔ شیء پوشش { success, song_id, lyrics: [...] } استفاده شده بود. مستندات کنونی، آرایه تایملاینی را که مستقیماً برگردانده میشود معتبر میداند.
دریافت کلید API
پس از ثبتنام از کنسول یک کلید API بسازید. هر تولید ۰٫۶ یوان هزینه دارد و ۲ قطعه برمیگرداند، دانلودها نامحدود است و به شماره تلفن نیازی نیست.
دریافت کلید API بازگشت به مرور کلی