Hello OP :) Just a suggestion, but something I've done with my DS (3.5 now) which helped loads with his speech, and he loves, is at bedtime we read one story, then we have what we call a 'talking story'.
What this means is I start by saying 'once upon a time there was a little boy called...' and he says his name. Then I say 'and in the morning he got up with his mummy and he...' and he says 'had breakfast'. (Now he says 'he had toast for breakfast' etc) 'then he went to...' etc etc. We go through his whole day, with me giving prompts to say what he did at different times. We talk about everything, the colour of his shoes, the things he ate, the people he saw and the places we went.
It's given him so much confidence to name things, and also to remember things. At first he needed lots of prompts because he didn't know or didn't remember, so I gave him words for playgroup, nursery, park etc. I also use it as a time of day to tell him when he's done something great like painted a lovely picture or been really kind to his baby brother.
We started doing this about 2.5 years old by accident really, and in the last month or so he had a huge leap and started giving imaginary answers. I am amazed to see the change in him! For example, he's made up a totally different child to tell a story about, and tells me made up things they did that day - last night it was a little boy called Finlay who put on magic welly boots and flew away with a fairy when his mummy wasn't looking at the park. It's become such a lovely thing for us to do!
I think more than anything it has just been great to dedicate 10 minutes a day to talking really deliberately with him, where his input is the focus of the conversation. It takes no time at all really but has worked wonders with his speech and confidence.