Here is a suggestion someone made to me once.
When you're learning a new language, you're going to make mistakes. You know it,and the people you are speaking with know it. Start out by just apologizing at first for any mistakes you make. It's not for the people you are speaking to, really - most times they are glad you are trying, and they don't mind if you make a mistake. The apology is to give you confidence. Once you have done that, the listener will almost always tell you to go ahead, the mistakes won't matter. Once that happens, just speak - mistakes and all. Let them correct you if they need to, but don't worry about the mistakes. If they correct you, take it as learning, and keep speaking.
One more that helps me: Maybe in a social situation, have a drink of wine or something like that with friends you trust. I am like you in that I read and write my second language better than I speak it. I actually understand when people speak to me, too. I once spoke the language pretty well, but now I have a problem stuttering because I was away from here for so long. Now when I start speaking, I often think word by word, and because I worry too much about using the right verb ending and things like that, it winds up being broken. The drink with my sisters-in-law and brothers-in-law loosens me up just enough that I stop worrying about those things, and I just speak - like I really need to do anyway. Obviously, this is not something you can do all the time, and if you drink too much, it is counterproductive to practice that helps you long-term, but a glass of wine, beer, (or in my case, makgeolli) is not enough to seriously impair learning, but is IS enough to loosen my tongue and get me talking without worrying about the structure too much.