Word-level time-aligned lyric support (Enhanced LRC file)

Unless there is other precedence/another standard, i think you should target doing something like Apple Music is doing (which im guessing means both start and end times for words/lines. They also have separate lyrics second singer/background vocals, idk how that works or if there’s a standard for it). For the syllables, it seems they just have it multiple timestamps inside the words when its used, treating it like two words, but without a space inbetween.

If you need any more info, Cider is an 3rd party Apple Music app which parses these lyrics (with word-by-word sync and syllables and effects), and it’d be happy to ask them if they want to share how they’re doing it

What I need is actual audio files with corresponding lyrics in those formats.

How many do you need, and how should i provide them? I can send some songs

And a couple, preferably some with slow texts and some with fast and ultra fast if possible :slight_smile:

And some with multiple voices and background at the same times. To cover all cases.

And if you have some screenshots of apple music displays the different voices and background.

Ive uploaded the files now. let me know if i can help with anything else

Where did you get those ? Most seems not really in sync, and the imagine dragon does not have any <> around the times. Does that last one work in any other app ?

Got them from Musixmatch.com. I couldn’t find an app on Linux or android that could play them, but tried a couple and maybe that fucked with it. I can over the weekend make them manually if those I provided are not good, but probably only 1 or 2 songs.

I think foobar2000 can play them on windows.

I’ll play with those but the main problem is imagine dragons.

[00:08.05] I 00:08.06 wake 00:08.11 up 00:08.17 to 00:08.25 the 00:08.73 sounds 00:09.02 of 00:09.06 the 00:09.16 silence 00:09.79 that 00:10.35 allows

Those does not have the <> around the time (in the lrc and in the file tag) I don’t think I’ve seen this format anywhere and so wonder if anything support that or it’s just a bugger file.

I think it bugged out. It should be like this:

[00:05.42] <00:05.42> Look <00:05.52>   <00:05.57> out <00:05.68>   <00:05.72> for <00:05.78>   <00:05.80> yourself 
[00:08.05] <00:08.05> I <00:08.06>   <00:08.07> wake <00:08.11>   <00:08.12> up <00:08.17>   <00:08.20> to <00:08.25>   <00:08.28> the <00:08.73>   <00:08.78> sounds <00:09.02>   <00:09.03> of <00:09.06>   <00:09.10> the <00:09.16>   <00:09.21> silence <00:09.79>   <00:09.83> that <00:10.35>   <00:10.38> allows 
[00:11.45] <00:11.45> For <00:11.63>   <00:11.77> my <00:11.83>   <00:11.87> mind <00:11.95>   <00:11.97> to <00:12.01>   <00:12.04> run <00:12.07>   <00:12.08> around <00:12.36>   <00:12.40> with <00:12.81>   <00:12.90> my <00:13.00>   <00:13.06> ear <00:13.16>   <00:13.18> up <00:13.30>   <00:13.33> to <00:13.41>   <00:13.46> the <00:13.59>   <00:13.66> ground 
[00:13.98] <00:13.98> I'm <00:14.15>   <00:14.21> searching <00:14.52>   <00:14.57> to <00:14.70>   <00:14.78> behold <00:15.08>   <00:15.11> the <00:15.28>   <00:15.33> stories <00:15.58>   <00:15.59> that <00:15.74>   <00:15.79> are <00:15.87>   <00:15.87> told 
[00:17.07] <00:17.07> When <00:17.12>   <00:17.14> my <00:17.19>   <00:17.21> back <00:17.31>   <00:17.34> is <00:17.39>   <00:17.41> to <00:17.52>   <00:17.61> the <00:17.72>   <00:17.76> world <00:18.00>   <00:18.02> that <00:18.22>   <00:18.32> was <00:18.52>   <00:18.60> smiling <00:19.04>   <00:19.06> when <00:19.16>   <00:19.23> I <00:19.26>   <00:19.33> turned 
[00:20.26] <00:20.26> Tell <00:20.44>   <00:20.49> you <00:20.85>   <00:21.06> you're <00:21.84>   <00:21.96> the <00:22.54>   <00:22.76> greatest 
[00:26.27] <00:26.27> But <00:26.77>   <00:26.93> once <00:27.53>   <00:27.76> you <00:28.34>   <00:28.61> turn, <00:29.04>   <00:29.19> they <00:29.83>   <00:30.10> hate <00:30.80>   <00:31.08> us 
[00:32.66] <00:32.66> Oh, <00:33.56>   <00:33.76> the <00:34.46>   <00:34.58> misery 
[00:35.62] <00:35.62> Everybody <00:36.07>   <00:36.12> wants <00:36.35>   <00:36.40> to <00:36.57>   <00:36.65> be <00:36.81>   <00:36.88> my <00:37.03>   <00:37.09> enemy 
[00:39.01] <00:39.01> Spare <00:39.76>   <00:39.81> the <00:40.10>   <00:40.20> sympathy 
[00:42.25] <00:42.25> Everybody <00:42.40>   <00:42.44> wants <00:42.90>   <00:42.95> to <00:43.06>   <00:43.09> be <00:43.15>   <00:43.18> my <00:43.32>   <00:43.52> enemy 
[00:44.14] <00:44.14> Be, <00:44.87>   <00:45.12> be, <00:46.00>   <00:46.15> be, <00:46.85>   <00:47.04> be <00:47.57>   <00:47.60> (look <00:47.78>   <00:47.83> out <00:47.98>   <00:48.05> for <00:48.18>   <00:48.23> yourself) 
[00:50.68] <00:50.68> My <00:51.01>   <00:51.06> enemy 
[00:52.25] <00:52.25> Be <00:52.27>   <00:52.30> (look), <00:52.33>   <00:53.23> be <00:54.12>   <00:54.14> (look), <00:54.25>   <00:54.27> be <00:54.29>   <00:54.32> (look), <00:54.78>   <00:54.80> be <00:54.86>   <00:54.91> (look <00:55.08>   <00:55.10> out <00:55.19>   <00:55.23> for <00:55.44>   <00:55.50> yourself) 
[00:56.79] <00:56.79> But <00:57.01>   <00:57.04> I'm <00:57.16>   <00:57.17> ready 
[00:57.72] <00:57.72> Your <00:57.74>   <00:57.76> words <00:57.81>   <00:57.82> up <00:57.84>   <00:57.87> on <00:57.92>   <00:57.94> the <00:58.11>   <00:58.25> wall, <00:58.61>   <00:58.65> as <00:58.73>   <00:58.76> you're <00:58.99>   <00:59.12> praying <00:59.42>   <00:59.45> for <00:59.65>   <00:59.72> my <00:59.82>   <00:59.84> fall 
[01:00.48] <01:00.48> And <01:00.53>   <01:00.55> the <01:00.63>   <01:00.70> laughter <01:01.16>   <01:01.21> in <01:01.36>   <01:01.39> the <01:01.58>   <01:01.64> halls, <01:01.96>   <01:02.01> and <01:02.13>   <01:02.19> the <01:02.33>   <01:02.34> names <01:02.44>   <01:02.46> that <01:02.65>   <01:02.70> I've <01:02.95>   <01:03.09> been <01:03.30>   <01:03.40> called 
[01:03.63] <01:03.63> I <01:03.66>   <01:03.68> stack <01:03.71>   <01:03.73> it <01:03.81>   <01:03.88> in <01:03.95>   <01:04.00> my <01:04.03>   <01:04.07> mind, <01:04.23>   <01:04.28> and <01:04.52>   <01:04.60> I'm <01:04.75>   <01:04.80> waiting <01:05.00>   <01:05.05> for <01:05.18>   <01:05.25> the <01:05.38>   <01:05.41> time 
[01:06.68] <01:06.68> When <01:06.76>   <01:06.78> I <01:06.78>   <01:06.79> show <01:06.83>   <01:06.85> you <01:06.88>   <01:06.89> what <01:07.01>   <01:07.07> it's <01:07.25>   <01:07.32> like <01:07.55>   <01:07.62> to <01:07.73>   <01:07.81> be <01:07.99>   <01:08.07> words <01:08.21>   <01:08.23> spit <01:08.34>   <01:08.36> in <01:08.44>   <01:08.51> a <01:08.56>   <01:08.59> mic 
[01:09.85] <01:09.85> Tell <01:10.15>   <01:10.20> you <01:10.27>   <01:10.32> you're <01:10.85>   <01:10.96> the <01:11.24>   <01:11.29> greatest 
[01:15.53] <01:15.53> But <01:15.78>   <01:15.83> once <01:16.27>   <01:16.43> you <01:16.58>   <01:16.65> turn <01:17.41>   <01:17.53> they <01:18.19>   <01:18.32> hate <01:18.67>   <01:19.24> us 
[01:21.97] <01:21.97> Oh, <01:22.64>   <01:22.95> the <01:23.78>   <01:23.90> misery 
[01:25.77] <01:25.77> Everybody <01:26.32>   <01:26.48> wants <01:26.83>   <01:26.90> to <01:27.09>   <01:27.21> be <01:27.44>   <01:27.54> my <01:27.73>   <01:27.86> enemy 
[01:29.35] <01:29.35> Smell <01:29.95>   <01:30.05> the <01:30.44>   <01:30.54> sympathy 
[01:31.96] <01:31.96> Everybody <01:32.33>   <01:32.43> wants <01:32.77>   <01:32.84> to <01:33.04>   <01:33.12> be <01:33.27>   <01:33.55> my <01:33.97>   <01:34.07> enemy 
[01:35.06] <01:35.06> Be <01:35.13>   <01:35.28> (look), <01:35.94>   <01:35.99> be <01:36.02>   <01:36.05> (look), <01:36.50>   <01:36.67> be <01:36.80>   <01:36.85> (look), <01:37.33>   <01:37.42> be <01:37.60>   <01:37.66> (look <01:37.90>   <01:37.96> out <01:38.26>   <01:38.31> for <01:38.58>   <01:38.60> yourself) 
[01:39.55] <01:39.55> My <01:39.83>   <01:39.90> enemy 
[01:41.56] <01:41.56> Be <01:41.59>   <01:41.63> (look), <01:41.74>   <01:41.76> be <01:41.84>   <01:41.86> (look, <01:42.38>   <01:42.44> yeah), <01:43.04>   <01:43.11> be <01:43.17>   <01:43.29> (look), <01:43.68>   <01:43.75> be <01:43.92>   <01:43.97> (look <01:44.24>   <01:44.27> out <01:44.39>   <01:44.49> for <01:44.72>   <01:44.75> yourself) 
[01:46.02] <01:46.02> Uh, <01:46.12>   <01:46.14> look, <01:46.17>   <01:46.19> okay 
[01:47.39] <01:47.39> I'm <01:47.40>   <01:47.45> hoping <01:47.50>   <01:47.52> that <01:47.60>   <01:47.64> somebody <01:47.89>   <01:47.92> pray <01:48.15>   <01:48.20> for <01:48.28>   <01:48.28> me 
[01:49.43] <01:49.43> I'm <01:49.45>   <01:49.52> praying <01:49.58>   <01:49.62> that <01:49.71>   <01:49.73> somebody <01:50.01>   <01:50.05> hope <01:50.20>   <01:50.23> for <01:50.34>   <01:50.36> me 
[01:50.85] <01:50.85> I'm <01:50.88>   <01:50.90> staying <01:51.00>   <01:51.01> where <01:51.13>   <01:51.16> nobody <01:51.41>   <01:51.47> 'posed <01:51.68>   <01:51.71> to <01:51.76>   <01:51.78> be 
[01:52.44] <01:52.44> P- <01:52.45> p- <01:52.47> posted, <01:52.50>   <01:52.52> being <01:52.57>   <01:52.59> a <01:52.60>   <01:52.62> wreck <01:52.69>   <01:52.70> of <01:52.74>   <01:52.78> emotions 
[01:53.98] <01:53.98> Ready <01:53.99>   <01:53.99> to <01:54.00>   <01:54.02> go <01:54.05>   <01:54.07> whenever <01:54.33>   <01:54.35> just <01:54.42>   <01:54.43> let <01:54.53>   <01:54.58> me <01:54.66>   <01:54.68> know 
[01:55.63] <01:55.63> The <01:55.64>   <01:55.64> road <01:55.66>   <01:55.69> is <01:55.71>   <01:55.72> long, <01:55.77>   <01:55.79> so <01:55.81>   <01:55.82> put <01:55.86>   <01:55.87> the <01:55.92>   <01:55.96> pedal <01:56.04>   <01:56.06> into <01:56.14>   <01:56.17> the <01:56.32>   <01:56.32> floor 
[01:57.12] <01:57.12> The <01:57.14>   <01:57.19> enemy's <01:57.24>   <01:57.25> on <01:57.30>   <01:57.32> my <01:57.35>   <01:57.37> trail, <01:57.47>   <01:57.50> my <01:57.55>   <01:57.57> energy <01:57.80>   <01:57.87> unavailable 
[01:58.54] <01:58.54> I'ma <01:58.61>   <01:58.63> tell <01:58.77>   <01:58.81> 'em, <01:58.89>   <01:58.92> "Hasta <01:59.07>   <01:59.09> luego" 
[02:00.50] <02:00.50> They <02:00.53>   <02:00.56> wanna <02:00.60>   <02:00.64> plot <02:00.68>   <02:00.69> on <02:00.74>   <02:00.76> my <02:00.81>   <02:00.84> trot <02:01.06>   <02:01.11> to <02:01.18>   <02:01.23> the <02:01.34>   <02:01.34> top 
[02:02.48] <02:02.48> I've <02:02.50>   <02:02.51> been <02:02.53>   <02:02.55> outta <02:02.56>   <02:02.58> shape, <02:02.60>   <02:02.64> thinkin' <02:02.68>   <02:02.70> out <02:02.71>   <02:02.73> the <02:02.76>   <02:03.05> box 
[02:03.77] <02:03.77> I'm <02:03.79>   <02:03.80> an <02:03.81>   <02:03.83> astronaut, <02:03.86>   <02:03.87> I <02:03.88>   <02:03.89> blasted <02:03.96>   <02:03.97> off <02:04.04>   <02:04.06> the <02:04.11>   <02:04.12> planet <02:04.21>   <02:04.24> rock 
[02:05.32] <02:05.32> To <02:05.33>   <02:05.34> cause <02:05.35>   <02:05.39> catastrophe <02:05.42>   <02:05.44> and <02:05.45>   <02:05.47> it <02:05.49>   <02:05.56> matters <02:05.64>   <02:05.69> more 
[02:06.54] <02:06.54> Because <02:06.57>   <02:06.59> I <02:06.59>   <02:06.60> had <02:06.62>   <02:06.63> it, <02:06.65>   <02:06.67> not <02:06.68>   <02:06.70> I <02:06.73>   <02:06.75> had <02:06.88>   <02:06.90> I <02:06.93>   <02:06.98> thought <02:07.25>   <02:07.27> about <02:07.32>   <02:07.33> wreakin' <02:07.66>   <02:07.70> havoc 
[02:08.02] <02:08.02> On <02:08.04>   <02:08.05> an <02:08.05>   <02:08.09> opposition, <02:08.12>   <02:08.16> kinda <02:08.20>   <02:08.21> shockin' <02:08.33>   <02:08.34> they <02:08.42>   <02:08.44> wanted <02:08.56>   <02:08.60> static 
[02:09.51] <02:09.51> With <02:09.53>   <02:09.55> precision, <02:09.56>   <02:09.57> I'm <02:09.58>   <02:09.60> automatic <02:09.76>   <02:09.80> quarterback 
[02:11.39] <02:11.39> I <02:11.39>   <02:11.40> ain't <02:11.40>   <02:11.42> talkin' <02:11.43>   <02:11.45> sacking, <02:11.48>   <02:11.50> pack <02:11.52>   <02:11.53> it, <02:11.55>   <02:11.56> pack <02:11.61>   <02:11.62> it <02:11.64>   <02:11.65> up, <02:11.68>   <02:11.70> I <02:11.71>   <02:11.74> don't <02:11.85>   <02:11.89> panic, <02:12.10>   <02:12.41> badder 
[02:12.71] <02:12.71> Batter <02:12.73>   <02:12.74> up, <02:12.75>   <02:12.76> who <02:12.76>   <02:12.78> the <02:12.80>   <02:12.84> baddest? <02:12.88>   <02:12.90> It <02:12.95>   <02:12.96> don't <02:13.10>   <02:13.15> matter, <02:13.20>   <02:13.24> 'cause <02:13.28>   <02:13.31> we <02:13.36>   <02:13.41> at <02:13.50>   <02:13.58> ya <02:13.64>   <02:13.68> throat 
[02:15.43] <02:15.43> Everybody <02:15.56>   <02:15.57> wants <02:15.74>   <02:15.79> to <02:15.86>   <02:15.87> be <02:15.91>   <02:15.94> my <02:15.99>   <02:16.01> enemy 
[02:18.77] <02:18.77> Spare <02:19.20>   <02:19.27> the <02:19.41>   <02:19.53> sympathy <02:20.01>   <02:20.09> (oh) 
[02:21.75] <02:21.75> Everybody <02:22.33>   <02:22.38> wants <02:22.59>   <02:22.64> to <02:22.74>   <02:22.79> be <02:22.93>   <02:23.01> my <02:23.24>   <02:23.34> enemy 
[02:24.92] <02:24.92> Oh, <02:25.14>   <02:25.34> the <02:25.59>   <02:25.70> misery <02:26.67>   <02:26.77> (oh) 
[02:28.02] <02:28.02> Everybody <02:28.32>   <02:28.37> wants <02:28.67>   <02:28.74> to <02:28.87>   <02:28.94> be <02:29.04>   <02:29.10> my <02:29.27>   <02:29.34> enemy 
[02:31.38] <02:31.38> Spare <02:31.99>   <02:32.10> the <02:32.30>   <02:32.40> sympathy 
[02:34.19] <02:34.19> Everybody <02:34.43>   <02:34.48> wants <02:34.78>   <02:34.85> to <02:34.98>   <02:35.03> be <02:35.15>   <02:35.20> my <02:35.33>   <02:35.43> enemy 
[02:37.40] <02:37.40> They <02:37.47>   <02:37.50> say <02:37.60>   <02:37.61> pray <02:38.08>   <02:38.21> it <02:38.31>   <02:38.35> away, <02:38.48>   <02:38.51> I <02:38.54>   <02:38.58> swear, <02:39.00>   <02:39.04> I'll <02:39.33>   <02:39.45> never <02:39.84>   <02:39.89> be <02:39.99>   <02:40.06> a <02:40.08>   <02:40.14> saint, <02:40.52>   <02:40.57> no <02:40.77>   <02:40.96> way 
[02:42.63] <02:42.63> My <02:42.93>   <02:42.96> enemy 
[02:43.86] <02:43.86> They <02:43.94>   <02:43.97> say <02:44.06>   <02:44.07> pray <02:44.31>   <02:44.42> it <02:44.57>   <02:44.66> away, <02:45.04>   <02:45.07> I <02:45.16>   <02:45.21> swear, <02:45.42>   <02:45.45> I'll <02:45.55>   <02:45.59> never <02:45.85>   <02:45.90> be <02:46.03>   <02:46.08> a <02:46.18>   <02:46.27> saint 
[02:47.76] <02:47.76> Look <02:47.85>   <02:47.90> out <02:48.04>   <02:48.09> for <02:48.16>   <02:48.17> yourself 

What full syllable lyrics can give :wink:

5 Likes

Looks good. Will we be able to switch between syllable/word timed lyrics and line timed lyrics?
Word timed and especially syllable timed lyrics might be problematic/less enjoyable in use cases such as UPnP casting as the time sync (at least for me with Raspberry Pis running upmpdcli) is relatively imprecise (even line synced lyrics shift slightly in and out of sync although the lyrics are perfectly synced).

Yes you can disable karaoke mode.

2 Likes

Question how do I set this up or is this in development this is awesome and are you adding karaoke mode :smiling_face_with_sunglasses:

Will it allow for multiple lines to be displayed at once? This is one of my biggest gripes with current apps that display lyrics (or maybe Symfonium does already and I’m actually an idiot)

I should not take the bait :stuck_out_tongue:

And it depends on your files and format and many other things, but your test files where all out of sync and without that anyway.

Sorry for that. I couldn’t find a way to see word-synced lyrics, so I couldn’t check them. But I can manually sync a song that has multiple words spoken at the same time and send it some time later today. You want of the format with start and end times for each word right?

I need the format that most people use to support them. With the details about the said format.
There’s specific formats to support translations, or multi line or quite a few different cases.

Lyrics are a total mess.

What are these lrc I need to do the apple music lyrics and what is the best plugin for beets I can get these lrc files :grin:

Is this simply for lyrics tags / formatting or can this be used to denote visibly in synced lyrics which artist is speaking.

I copied one set of lyrics in this thread with Karaoke style lyrics with the v1 v2 but there’s no visual indication that someone different is speaking. The Karaoke style lyrics are really cool though.

It’s in the changelog :wink: Open a proper issue.