Would you consider to make a listening course? Currently program displays a sentence with a missing word and user should fill the blank place with the correct word. Then your program vocalize the whole sentence. My suggestion is, program will only vocalize the whole sentence and user will write the whole sentence. I am not saying that existing program should be changed in this way, i am suggesting that you can create another independent course.
I personally hate this kind of learning because it is frustrating if you had the entire sentence right except one word and it just gets counted as wrong, but if you really want to annoy yourself you could try Duolingo. ;)
They use all kinds of learning methods and some of their features aren't that bad, but I prefer Lingivst's simple "one word at a time" approach.