Analyse a song on Audial and press Get lyrics: you get its lyrics as timed lines with a start and end time for every word, highlighted as the song plays on the website and returned as JSON by the API, the Python SDK (audial.lyrics) and the get_lyrics MCP tool.
$10 a month or $100 a year. Unlimited runs, cancel any time. 2 free runs to try it first.
Audial transcribes a song's lyrics from the mix you already have. Analyse the track, which finds its sections, tempo and bars in about half a minute, then press Get lyrics. In the background the analysis has already prepared the vocal part, and the words are read from that, so the beat and the synths do not get in the way. The result is the whole lyric as timed lines, each word with its own start and end time in seconds on the track's own timeline.
On the website the current word lights up as the song plays, and clicking a line jumps to it. Over the API the same data comes back as JSON: the lines and their words, the lyrics of each section of the analysis, and where the vocals start. That is enough to drive a karaoke-style highlight, write subtitles or an LRC file, find the bar where the hook first lands, or line a vocal chop up with its word.
The language is detected automatically and the words come back in the language they are sung in; nothing is translated. Lyrics are an add-on on an analysis, so they are included in its run.
What you get
- Timed lines with a start and end time for every word
- Read from the vocal part the analysis prepares, not from the full mix
- The lyrics of each section, and the time the vocals start
- Word highlight on the website as the song plays; click a line to jump to it
- Instrumentals are recognised: no lines, and the page says so
- Included in the analysis's run; on the website, by REST, in Python and through MCP
Hear it
The demo mix, and the vocal part an analysis prepares from it in the background. Get lyrics transcribes that vocal and times every word on the mix's own timeline.
Audial vs doing it by hand
| Task | Audial | By hand |
|---|---|---|
| Getting the words | Audial: Transcribed from the separated vocal | By hand: Listen and type, rewinding every unclear line |
| Timing every word | Audial: A start and end time for each word, on the track's timeline | By hand: Scrub to each word and note the time; slow enough that most people only time lines |
| Lyrics per section | Audial: Matched to the analysis's sections, with the time the vocals start | By hand: Work out where each section starts, then split the lyric to fit |
| Getting it right | Audial: Can mishear mumbled, processed or stacked vocals | By hand: You know what was sung, especially if it is your own song |
| Published lyrics | Audial: Transcribes what is sung; it does not look lyrics up | By hand: You can copy published lyrics, but they come without any timing |
Use it from code
# 1. Analyse the mix. Keep the exeId from the answer.
curl -X POST "https://api.audialmusic.ai/api/functions/run/segmentation" \
-H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id" \
-F "userId=your_user_id" \
-F "original=@/path/to/song.mp3"
# 2. Lyrics on that analysis. 409 STEMS_NOT_READY means the vocal is still
# being prepared: send the same request again a minute later.
curl -X POST "https://api.audialmusic.ai/api/functions/run/lyrics" \
-H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id" \
-F "userId=your_user_id" \
-F "analysisExeId=exe_12345abcde"
# 3. Once addons.lyrics.state on GET /api/db/{userId}/execution/{exeId} is "completed",
# song_analysis.lyrics_lines holds the lines; each word is [word, start, end] in seconds.
curl "https://api.audialmusic.ai/api/db/your_user_id/execution/exe_12345abcde/analysis" \
-H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id"import audial # audial-sdk 1.7 or later
audial.config.set_api_key("your_api_key")
audial.config.set_user_id("your_user_id")
analysis = audial.segment("song.mp3")
lyrics = audial.lyrics(analysis["analysis_id"]) # waits while the vocal is prepared
for line in lyrics["lines"]:
for word, start, end in line["words"]:
print(f"{start:8.2f} {end:8.2f} {word}")# In Claude, Cursor or any MCP client with audial-mcp 0.6.0 or later installed:
"Get the lyrics of ~/Music/song.mp3 with their word timings, then save them as an LRC file."Frequently asked questions
Upload the song on the Audio Analysis tab and press Get lyrics. Every line appears with its timing, and the current word lights up as the song plays. From code, analyse the track with /functions/run/segmentation, then call /functions/run/lyrics with the analysis's exeId, or call audial.lyrics in Python.
Both. Each line has a start and an end, and each word in it comes as [word, start, end] in seconds on the track's own timeline, so a player's current time picks out the word directly.
Not as a file from Audial. The JSON has everything those formats need, and the conversion is a few lines of code: one LRC line per lyric line from its start time, or word-level timing from each word's start. An assistant using the Audial MCP server can write the file for you.
The language is detected automatically, and the words come back in the language they are sung in. Nothing is translated. Clear lead vocals transcribe best, in any language.
It is a transcription, so expect mistakes where a careful listener would struggle too: mumbled or heavily processed vocals, stacked backing vocals over the lead, words lost under the mix. Read the result through before you print it on a lyric sheet.
The result says the track is instrumental (is_instrumental: true) and has no lines, and the website shows No vocals in this track.
