Enter the following in Script Editor and remember to save it as a compiled script:
tell application "iTunes"
set myFinishedList to {"Cancel"} as list -- Add Cancel to the list
set myList to (get artist of every track of playlist 1) as list ¬
-- gets every artist in first iTunes library
repeat with myItem in myList
if myFinishedList does not contain myItem then
set myFinishedList to myFinishedList & myItem ¬
-- remove any duplicate band names
end if
end repeat
end tell
tell application "SpeechRecognitionServer"
set myArtist to (listen for myFinishedList with prompt myFinishedList)
end tell
if myArtist is not "Cancel" then
tell application "iTunes"
set myTracks to get every track of playlist 1 where artist ¬
is myArtist -- playlist 1 is my mp3 library
if number of items of myTracks is 1 then
play (get first item of myTracks) ¬
-- if only one song by an artist play that one
else
set myTrackNames to {"Cancel"} & (get name of every track of playlist 1 ¬
where artist is myArtist) -- filter by artist
tell application "SpeechRecognitionServer"
set myTrack to (listen for myTrackNames with prompt ¬
myTrackNames) -- get the song
end tell
if myTrack is not "Cancel" then
set myTrackList to (get every track of playlist 1 where name is myTrack)
play (get first item of myTrackList) ¬
-- should be only one item in list but just in case play first one
end if
end if
end tell
end if
[robg adds: I haven't tested this one, as I'm currently lacking a microphone...]

