As of now, this is purely a concept, however, I’m planning on getting started on making it as soon as I can.

TSL files, or “Timed Synchronized Lyrics” files, will be a file format which allows for saving the exact timestamp of syllables in a mp3 file. The TSL files will be formatted as follows:

BEGIN_HEADER[FORMAT:TSL;VERSION:{version};VOCAL_BEGINS:{ms timestamp of the start of the lyrical part of the song}]||{ms since start of song}-START<=>{example syllable here}<=>{ms since start of song}-END|{ms since start of song}-START<=>{another syllable here}<=>{ms since start of song}-END||END_HEADER

The "BEGIN_HEADER" will signify the start of the TSL file, and the "END_HEADER"  will respectively signify the end of the TSL file. This is to allow the TSL data to be injected into the lyrics section of an mp3 file's metadata. The BEGIN_HEADER will contain various data about the version, etc. Syllables will be saved with the timestamps of when they start and end. Spaces should be indicated using '[SP]' instead of just ' ', and new lines in the lyrics should be indicated using '[NL]'. The start and end of a syllable within a timestamp will be signified with a "<=>". The start and end headers will be separated from the rest of the content with a double "|" instead of a single "|" as is used in the rest of the file.

The reason for using “|” to separate syllables is because I can’t think of any instances of “|” being used in a song’s lyrics, and will therefore make it easy to parse the file in various applications. “<=>” is used to separate timestamps from contents is to allow for easier parsing of individual syllables. This decision was made with the thought of python scripts using `str.split()` to split syllables.

The files will most likely be generated by using AI to detect where provided lyrics are in an audio file. Other methods are possible but not likely.

If you would like to help me with this project, simply join my discord at https://discord.gg/cWCpPgYDQc  

Updates will be posted in the discord. This page will also be updated whenever there’s anything new.