For competence, once you've got past the basics of grammar, it's mostly about memory. Create a database of words, phrases, and example sentences, and use some kind of Spaced Repetition System (e.g. Anki) to keep reviewing them.
Fluency is harder. First, what does it mean to be fluent?
Last time you were in a shop and the shopkeeper handed you your change, what did you say?
Thank you.
Did you plan ahead? Did you think, "Oh heck. The shop keeper's just given me some change. What should I say now?" Of course not. The words just came to your lips. You were following a script that you'd internalised at a subconscious level. That's fluency.
So you need to internalise more scripts. How are you going to do that? Learn them. Seriously ... that's all there is to it. Just memorise huge chunks of text. Songs, movies, passages from your English textbook, and so on.
In particular, try shadowing. (I.e. speaking in synchrony with the audio version.) At first, do it with the printed version in front of you. Then do it purely from memory. Try exaggerating the accent when you do it, too. It may sound ridiculous, but to native speakers it will sound better than your normal Italian accent.
You'll see the benefits of all this hard work when you're in conversation. Fragments of memorised dialogue will pop into your head exactly when you need them, just like when you said Thank you. to the cashier.
By the way, children do this instinctively. That's why they love to watch the same movie, or hear the same story, over and over again.
(Yes, "tape" is a colloquialism - I realize they probably use solid state media.)
Before going full force into computer programming, I was mainly interested in linguistics, and threw myself into learning languages and traveling. So I wouldn't be surprised if my digital communications set off various automated flags, since I chat with friends around the world (Europe, China, Latin America, some in the Arab world, notably Saudi Arabia) on a daily basis in ~4 languages. I hope they take me off their lists when they realize we are just making small talk or discussing English grammar or {{ their language }}'s grammar.
Someone gave me great advice once, they said to pronounce French with a French accent. When you think about it, it's obvious why that results in good spoken French.
If that isn't an option:
For listening comprehension, and eventually speaking, practice "shadowing." Have her listen to interest-appropriate TV shows and say exactly what the speaker is saying, in real time. (You can also do this exercise with transcription.) It will be maddeningly difficult at first, but with literally hours a day of doing it, she will see radical gains.
This is a large part of the training for professional translators/interpreters. In my experience it works very well. It is also some of the most frustrating work I've ever done.
It sounds like (3) may be a problem for your wife because of her lack of confidence. Forcing herself to speak English, as if there is no option, will make the difference.
If you two were to speak English to each other, so that she could literally stay in English-only mode all day, every day, that would help. Don't call mom. Does she read a newspaper? Read the Chronicle or NY Times or Guardian. Listen to the radio? Listen to NPR, or BBC. Etc.
BTW, do not set as a goal to speak American-accented perfectly idiomatic English. That will never happen, and is not necessary or even desirable. Italian accents rock.
In your case this won't work, but try to stay away from other speakers of your native language. I see students at UC Berkeley who end up getting roommates from their same country. This is a very bad idea because they won't be forced to adapt their brain to the new language. I always found that having a girlfriend who speaks the language I'm trying to learn was a good idea.
Reading books will help your vocabulary but it probably won't help your understanding of spoken language. What I did when I was living in a foreign country trying to learn the language was to watch children's TV shows. Once I was able to speak and understand at a 5 year old's level I felt like I was ready to expand my horizons.
I wrote a FAQ comment about that a while ago that became one of my most popular ever comments. I'll link to that here rather than repeat all the text again.
https://news.ycombinator.com/item?id=6302816
Good luck!
I would recommend that she volunteer somewhere (a non-profit or a clinic) where she'd be talking to people for most of the day. The best way to improve is just by practicing. I think that'll be more efficient and effective than any of these language sites/products.
On the other hand, I bet her English is actually better than she thinks it is. I've met a lot of non-native English speakers who have unnecessarily apologized for perfectly intelligible (if accented) English.
Older TV shows tend to be more dialogue-centric. If you have the TV Land channel, I'd suggest: MASH, All in the Family, I Love Lucy, The Honeymooners, The Dick Van Dyke Show, &c.
Contemporary shows that would be good for this purpose might be: Modern Family, NCIS, Mad Men, Big Bang Theory, Parks and Recreation, Arrested Development, Parenthood (advanced: lots of simultaneous talking).
Here's what worked for me:
1. Get an acceptable grasp using traditional methods (you are already here).
2. Read about three books while looking up every single word you don't understand. This may be easier when reading on a tablet. Warning: This will be slow going. Perhaps pick some favourite books you've already read.
3. Read another twenty or so books, but you shouldn't have to use the dictionary very often. Concentrate on flow.
This will take care of your vocabulary and grammar. To master conversational English and pronunciation you have to speak to people, but the foundation you built above will help.
Four months is an ambitious goal if you're looking for complete fluency, but you should see solid improvements.
However, that was bit silly and a lot more time consuming.
The best to improve English is to be part of a community (an online forum). it's up to you which you want to join. Only join the one which interests you. Get involved in lengthy debates and discussiona, I know it's not cool, but just for the sake of learning and improving your English.
If you follow up above advice, your English skills will skyrocket in a very short time compared to traditional methods.
Otherwise most people will ignore your mistakes, rather than risk insulting you.
I live in Saudi Arabia and as a non Arab I had a very difficult time speaking Arabic. I too spent a lot of time trying to learn the language before hand but it's nowhere effective to what you learn in a real situation with people.
It took me about 2-3 years to get truly fluent. Get out there, speak English with everyone, get yourself in uncomfortable situations, immerse yourself in the language completely. That's the only way to really get it.
I think Pitarou's answer is spot on, if you need to improve the language skills in a short time though.
(Set up hotkeys to toggle subtitle files, to go back 15 or 30 seconds. Space bar pauses.)
Materials: - DVDs of several TV programs with multiple seasons (make them subject relevant if she has a specific subject-matter goal) - Several regular talk radio/podcasts - You. Apparently, you know English. Stop speaking to her in anything but English. Just stop.
Method: - The goal here is to bludgeon the language faculty of your wife's brain with English. It'll feel kinda uncomfortable, but you want to create an experience that so surrounds her with English that the brain is forced to do work it's already good at – that is, figuring out language. - So, every day, listen to talk radio. It creates the same experience as being dropped into a conversation in a foreign country where you don't know the language. She just needs to try to follow the conversation. This has the added benefit of not taking place in a bar or cafe, with a lot of back noise. Encourage her to take note of words that get repeated a lot, to look them up, and to listen again, but don't waste her time with exercises that answer questions about the content, b/c the content is irrelevant. - Next, pick a TV series and start watching. Have your wife choose a character to 'follow'. She is to repeat everything that character says, in as close to the same accent as it was produced. Most TV shows are about 30-60 minutes, so have her do this with a few shows, just make sure the shows feature a few characters that do a lot of talking, so that she get's more practice. - Lastly, go out together, a lot. Meet people. Language exists between people first and foremost, so the best way to build on her practice is in the field. Beforehand, she can prepare the 20 or so important things that she might want to say/talk about, and discuss them with you. Then, take her to an event to meet people and abandon her to fend for herself in a conversation.
All this sounds kinda ego-crushing, but it really is the fastest way to get to a high level of speaking/listening fluency. Think about this, a language class will be populated with other people learning English, whereas a bar will be filled with chatty people. A class will have her sitting, passively absorbing a lesson with occasional practice, whereas the methods described above involve active processes. Finally, if you cease to provide an Italian-language safe zone, her brain will naturally begin to adjust. It's an uncomfortable process, but I achieved a high degree of spoken/listening fluency with both German and Turkish this way, as a native English speaker. Compared to two years of classroom Arabic, and I can hardly say my name.
Good luck. Let us know how it goes.
Above all speak and write it. As you spend more time with it you will gain confidence.
In my travels through language learning I have come upon two dominant models for language acquisition:
1- The academic model - learning about phonemes, IPA, SOV (Subject-Object-Verb) versus SVO etc. Somewhere along the line the hope is that everything will click and you will develop good pronunciation, comprehension and the rest. This works for some people but the vast majority do not end up with basic comprehension or even decent pronunciation. Fluency is rare and often a land far far away.
2- Mimicry - This is how infants acquire languages and also how we get our accents. This model almost invariably works - witness the billions of infants who speak the language(s) of the lands they were born into without any training in IPA. This is also why it is hard to learn english from a native english speaker who lacks formal training in imparting language education. Ditto learning to catch frisbees from dogs.
Mimicry has two steps namely discernment and replication. In discernment, just like in learning to play music one has to "hear" it before one can replicate it. The process below will help you learn to discern the sound. Once you get proficient at hearing it you can then try to replicate it. Again just like learning to play music, you now try to replicate the sound you have learnt to discern.
Quite a few commenters have suggested following along to tv/radio/movies in the english language to grok enunciation, syntax and vocabulary. FWIW, this is stellar advice which will serve you better than most language learning packages.
Here is a pragmatic way to go about the above advice:
#1 Voice of America (VOA) news readers are the closest to an American version of the BBC's newscasters "received english" accents. VOA has a great language learning resource where their newscasters read out news stories in carefully enunciated english: http://learningenglish.voanews.com/.
#2 Pick a news item for example "English Level 1 --> "Remembering Nelson Mandela..." and download the mp3 file from "Play or download..."
#3 Download VLC player: http://www.videolan.org/vlc/index.html.
#4 Play the downloaded mp3 and read the article aloud trying to replicate the enunciation. VLC player comes in handy wherein under playback you can slow down the playback speed to really understand the enunciation and replicate it. Stop and replay as often as needed. In some versions of VLC player like on Android you might have to turn on equalization in VLC to overcome the distortion when you slow-dow/speed-up the playback.
As indicated by many commenters, doing this for 1-2 hours/day will get you results in a very short period. Short period here would mean weeks to months. If you do try this please post the results of your process and what worked and did not work for you.