API lời bài hát có mốc thời gian
Mô tả endpoint
Lời bài hát có mốc thời gian lấy mốc thời gian ở cấp độ từng từ của bài hát, để hiển thị lời đồng bộ.
Endpoint: POST /api/lyrics/timeline
Tính phí: Miễn phí (truy vấn chỉ đọc; không tính phí và không tạo tác vụ tạo nhạc).
Định dạng trả về: mảng dòng thời gian được trả về trực tiếp — không có lớp bọc data / success; sau khi phân tích chỉ là một mảng.
Tham số yêu cầu
Headers
| Tham số | Kiểu | Bắt buộc | Ghi chú |
|---|---|---|---|
| Authorization | string | có | Bearer YOUR_API_KEY |
| Content-Type | string | có | application/json |
Tham số body
| Tham số | Kiểu | Bắt buộc | Mặc định | Ghi chú |
|---|---|---|---|---|
| model | string | không | suno-v6 | Tên mô hình cho khách hàng: suno-v6, suno-v6-wild hoặc suno-v6-mini |
| song_id | string | có | - | ID bài hát |
Ví dụ yêu cầu
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"
}'
Phản hồi
Dưới đây là phản hồi thật từ môi trường sản xuất cho một bài hát 189,6 giây ở suno-v6 (lần gọi đó có 69 đoạn; ở đây chỉ giữ vài đoạn đầu và cuối):
[
{
"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
}
]
Tham chiếu trường
| Trường | Kiểu | Ghi chú |
|---|---|---|
word |
string | Văn bản của đoạn này; có sẵn ký tự xuống dòng: mỗi đoạn là một dòng lời, cuối đoạn có \n và giữa các khổ là \n\n, nên sẽ xuất hiện các mục chỉ chứa khoảng trắng |
start_s |
number | Thời điểm bắt đầu của đoạn, tính bằng giây (có phần thập phân) |
end_s |
number | Thời điểm kết thúc của đoạn, tính bằng giây. end_s của đoạn cuối gần bằng độ dài bài hát |
success |
boolean | Đoạn này có được căn chỉnh thành công hay không |
p_align |
number | Độ tin cậy của căn chỉnh; đo đạc ổn định ở 0.99 |
Những điểm cần lưu ý
- Đừng đi tìm lớp bọc. Phản hồi chính là mảng, không phải
{"data": ...}, và cũng không có trườngsuccess. - Có thể không có đoạn nào ở đầu. Với bài hát chỉ có phần dạo, đo đạc cho thấy đoạn đầu tiên chỉ xuất hiện ở giây 15, và
start_skhông đảm bảo bắt đầu từ0; nếu làm karaoke, hãy tự xử lý khoảng trống đầu bài. - Các dấu hiệu nhạc cụ và cấu trúc cũng được trả về, dạng
[Intro],[Verse 1],Instrumental: soft arpeggiating piano, …,[End], và cũng có mốc thời gian từng từ. Trước khi làm phụ đề lời, hãy lọc các đoạn này theo[ở đầu hoặc theoInstrumental, nếu không phần mô tả phối khí sẽ hiện như lời bài hát. - Là theo từng từ, không phải từng dòng. Cùng một dòng lời thường bị chia thành nhiều đoạn và cần gộp thành dòng theo
\n; thời gian của một dòng làstart_scủa đoạn đầu tiên trong dòng đó. - Số đoạn phụ thuộc vào bài hát; đừng giả định số đoạn cố định (đo đạc: bài hát 189,6 giây có 69 đoạn, phần thân phản hồi khoảng 6,5 KB).
Tạo tệp .lrc
Endpoint này chỉ trả về dữ liệu dòng thời gian, không trả về tệp trực tiếp. Khi cần .lrc, hãy ghép dòng từ start_s nhận được theo định dạng [mm:ss.cc] (trường word có sẵn ký tự xuống dòng — hãy tách theo dòng và bỏ qua dòng trống). Ví dụ xem mục "Cách lấy lời có mốc thời gian (.lrc)" trong API tải và nghe thử media của bài hát.
Dưới đây là bản đầy đủ có lọc dấu hiệu nhạc cụ/cấu trúc (mỗi đoạn một dòng, phù hợp để kiểm tra hình dạng dữ liệu trước):
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)
Ghi chú tương thích
Tài liệu trước đây dùng ví dụ với đối tượng bọc { success, song_id, lyrics: [...] }. Tài liệu hiện tại lấy mảng dòng thời gian được trả về trực tiếp làm chuẩn.
Lấy khóa API
Tạo khóa API trong bảng điều khiển sau khi đăng ký. Mỗi lần tạo tốn 0,6 ¥ và trả về 2 bản nhạc, tải xuống không giới hạn và không cần số điện thoại.
Lấy khóa API Quay lại tổng quan