I ask this question every few years, and the answer has so far remained: "you can't".
I thought about trying to write something to scrape MetroLyrics since their HTML isn't too bad, but wow what a pain in the ass. I don't want to do that. (Before you suggest buying the MetroLyrics app, read the reviews: it's bullshit.)
There are hundreds of apps out there that will display a pop-up window of the lyrics already contained in the ID3 tags of the currently-playing song; and some of them try to search the web for lyrics; but the dozens of them that I've tried have sucked at this, badly. Also, none of them will do it in bulk. Do you use one that doesn't suck?
Since most of my library doesn't have lyrics, I want to bulk-download as many as possible, non-interactively, without having to play each song first, and without having to click, like, 50,000 times.
It's hard to search for this shit because it's a morass of spammers and "free ringtone" malware.
Apparently the music labels don't offer embedded lyrics within the legal MP3s sold by Amazon and Apple because that would undermine their profitable sideline of suing aforementioned lyrics malware websites.
Update: This year, the current best option appears to be Get Lyrical. It's not very good, but it seems to be the best of a bad set of options. It gets its info from Lyrics Wikia, from which several of the other apps also pull.
Update, 2013: I wrote my own.
If you do end up scraping...
I, uh, are you sure? It's pretty bad, even for a lyrics site. I don't know if A-Z Lyrics carries much of the stuff you're looking for, but I'd try to start with that. If you do end up scraping. Compare.
Nah, both of those are easy. At least it's not flash, or images of text, or AJAX skullfuckery like a lot of those sites are.
(Sorry if this is a dupe, I don't know what happened to my first attempt.)
I've successfully scraped http://www.tunewiki.com/lyrics/?artist=%s&title=%s (look for a <p class="lyric-lines"> tag). I don't know if they do rate-limiting; I've only done it at proof-of-concept scale. I have a working Python script using Beautiful Soup, but you'll never know if it tastes like pumpkin pie.
Hmm, I was going to suggest MusicBrainz might help here - they did have links to sites such as LyricsWiki which apparently have/had licences for lyrics), and it might therefore be possible to get MusicBrainz's Picard tagger to pull them in.
But I don't see any evidence of the data documented here http://musicbrainz.org/doc/Has_Lyrics_At_Relationship_Type
Hmm, OK there are at least some tracks ("works" in MusicBrainz parlance) with lyrics links, but that some might be a small number. http://musicbrainz.org/work/94d345d3-cf6c-4e25-a080-8f000a4e5433
Bah, my first attempt at a reply got eaten by your spamfilter. Trying again, this time with no embedded links:
About 3 years back, I got all OCD and decided to re-tag all of my various and sundry mp3/m4a files. The tool I used was a musicbrainz client called Jaikoz, and I noticed after I was done that it had helpfully embedded lyrics in a large subset of the files I'd retagged. This is apparently a supported feature; possibly if I'd been paying any attention at all to it I would have ended up with lyrics in most/all of the files.
Disclaimer: costs money and is (god help us) a java app. (Yes, someone was still making Swing apps in 2009; the mind reels.) I was pretty happy with its performance as a mass tag editor, but put zero effort into the lyrics feature so it might suck.
I've had good luck with Get Lyricial: http://shullian.com/get_lyrical.php
It pulls from http://lyrics.wikia.com/Lyrics_Wiki. I didn't watch the network traffic to see if it tries other sources.
Yeah, that's what I use. Does 90-95% of the job, but my music isn't really hipster or anything, so, you know, other people have heard of it...
Well, it's pretty flaky so far, but it's better than nothing I guess ("nothing" being my plan B).
Get Lyrical is the best I have found since I switched to MACOSX as well.
It's kinda slow (especially if you try to bulk retrieve 200+ songs), quite choosy about the title of the song (but once it finished it creates a playlist of un-tagged songs thus you can double-check for spelling or missing hits), sometimes (not that often) it hangs and you have to force-quit.
On the other hand, it integrate farily well with iTunes and you can multiple select songs.
i am doing right now artist by artist during night time and to the date I have tagged about one third of my library this way.
I haven't really done any statistics, but out of some 20,000, my understanding is that it got the right lyrics for some 15,000, read as 70-80%.
Get Lyrical.appuses an embedded PHP script
Contents/Resources/go.phpto retrieve lyrics. Whatever that script echo's to stdout will become the song's lyrics.
Well, that was an interesting read.
On a windows PC, I had some luck with Zortam: http://www.zortam.com/. The website and software is just amatuerish enough that you'll swear it's a malware site, but I didn't notice any odd behavior afterward and my identity still hasn't been stolen going on at least 6 months now.
It had a success rate of roughly 75% factoring in the bad lyrics that it pulled. I have no idea what its source of lyrics is. You'll still have problems with wildly inconsistent formatting (e.g. some lyrics have extra hard returns between every line, some were apparently entered on keyboards without shift keys, sometimes there will be extra-lyrical info in there like composer, etc.)
Zortam for me has pulled about 80% of lyrics and covers into my mp3's.
No Mac version. Useless to me.
The google is lousy with mac-only software that claims to do this. Not having a mac, I can't confirm any of it works. This seems promising for mac: http://www.cultofmac.com/58650/automatically-add-lyrics-to-all-songs-in-your-itunes-library/. Similar setup described here: http://www.makeuseof.com/tag/add-lyrics-itunes-automatically-mac/
I'm going to have this comment printed on a bronze plaque:
There should be a dozen different "best of jwz.org/blog" bronze plaques scattered around the city for future generations to discover and ponder.
This google method is suitable for one's father-in-law who forwards you "virus alerts" and other gems that have been circulating about the Internet for years.
Use tagalacious for Mac. It's the best.
Well, it only lasted 60 seconds before crashing, and in that time it suggested that some song should be edited to be by Ashley Simpson (it was not, needless to say, by Ashley Simpson) and there appears to be no way to tell it to just do lyrics and not molest any of my other tags. So given that they want you to pay $15 before you can even test it on more than 10 tracks, I'm gonna go with "fail" here.
This doesn't solve your problem but on a side note; i recently bought a Logitech Squeezebox, it plays music stored on a Logitech Media Server (software on Nas or Pc) and can be controlled by iPeng on your iPhone/iPad.
Logitech Media Server has a lyrics plugin that pulls lyrics of the current playing song from Musixmatch.com or Chartlyrics.com and shows them on your iPad.
I'm very happy with this system and would recommend it to people looking for an audio player...
This doesn't solve your problem but I shall go into great detail describing my solution to a completely different one.
Would lyricfind.com work? They power the live lyrics on an iPhone app called soundHound pretty well.
As far as I can tell, they provide no mechanism to download lyrics into your ID3 tags, so no, they're useless.
#musicbrainz suggested beets, with its lyrics plugin: http://beets.readthedocs.org/en/latest/plugins/lyrics.html
I'm not sure that beets can tag the lyrics without tagging everything though. Anyway, it's worth looking at.
SongGenie will do it and you can leave every other field alone. However the last time I tried it I think you could only do single fields if you approved the change one file at a time, which is pretty sub-optimal. However it works and it was the only app of its sort that I ever found that didn't toss its cookies when I pointed it at my ~24000 song NAS-resident library.
Which is not to say it and its sibling, CoverScout, work -quickly- on it. But it did a pretty good job.
It always angers me to have to write software to un-fuck other people's software, but if you find a solution that won't leave your other fields alone you COULD write something to back up the fields using Applescript, I think. IIRC every file in itunes has a unique ID that doesn't change; store the fields you care about, run the lyrics app, then clear&clobber every other field.