In Sri Lanka there are lots people who want to speak English. After learning English as a second language in school for more than a decade, most of them still find it impossible to speak the language even at a basic level. So, after leaving school, they start looking for a book or course that will teach them to speak fluent English.
If you happen to be one of them, my sincerest advice to you is not to expect any single book or course to make you fluent. Your situation is typical of a lot of Sri Lankans due to the wrong approach they adopt in learning a language. Please don't get me wrong; I'm not saying it's your fault - it's the wrong way people are made to learn a second language in this country in general. (Sorry if this sounds a bit condescending.)
Though I don't claim to have a magic bullet to fluency, as someone who has learned to speak a couple of languages fluently I'll try to give you some tips that might help you.
1. Try to express your ideas in English whenever possible. If you can find others who are already fluent to practise with, so much the better. Or else, at least finding another learner with whom you can have regular chats will give you a chance to use what you already know theoretically. Regular practice is essential to fluency. Don't be afraid to make mistakes as you definitely will make mistakes while practising. Find a setting that lets you make mistakes without feeling embarrassed. You'll learn to correct your errors as you get more familiar with good usage by following the steps below.
2. Try to think in English sometimes. This will also make you find ways to express yourself - at least in your thoughts. Don't overdo this though by forcing yourself to do so all the time, as it would be quite an effort initially; things will start coming more easily to you as time goes by.
3. When learning English, always try to learn in chunks. Don't just learn individual words; always learn whole phrases or sentences that are used to express some idea. This will make it much easier for you to use such expressions when you need to say something similar yourself.
4. Read as much as possible, especially stories where you find real-life situations. This will give you the much-needed exposure to everyday language, which will come handy in your own speech. As I said earlier, make it a point to pick up whole expressions rather than just words.
5. Watch movies and TV serials that have true-to-life storylines. You can pick up lots of useful expressions from them too. But be aware that some expressions you hear in such shows may be typical of certain communities or age groups and they may not be considered acceptable in common usage. Also keep in mind that the pronunciation of certain words you hear, especially in the American movies that we generally find, may be a bit different from how they are pronounced here in Sri Lanka.
Please remember that this list is by no means comprehensive and it's not meant to be THE right way to learn to speak a language. But I do hope that some of these steps will help you in some manner. If you wish, you can also go to the external links below and see if you find anything interesting there.
1. How to Speak English Well: 10 Simple Tips for Extraordinary Fluency
2. How to Speak Fluent English: Top 10 Tips
3. Polyglot Conference Budapest 2013 - Anthony Lauder "PolyNot" (video)
Image credit: Ron Mader