Is forbidding every evil you see happening in front of you obligatory? Would only hating it very much with the heart and not speaking against it be sinful? Is it obligatory to forbid evil in matters there are difference of opinion among the scholars like the growing of beard, or playing with dice without gambling and music etc?
In Sahih Muslim, Book #1 Hadith #48 it says:
“He who amongst you sees something abominable should modify it with his hand; and if he has not enough strength to do it, then he should do it with his tongue, and if he has not strength enough to do it, even then he should abhor it from his heart, and that is the least of faith.”
Take this into account also: knowledge.
How much knowledge do you have to speak out amongst the evil that you see?
For instance, you know a brother/sister commits zina but you don’t have enough knowledge to prove it’s haram. Would you still approach him/her despite the lack of evidence? He/she won’t believe you if you just say, “you shouldn’t do this. It’s haram.”
You need to gather knowledge to detest these evils amongst society. If you don’t have knowledge, how will you convince them?
Say you do have knowledge, what then? Physically stop them. Not fighting wise, but like the Hadith says, use your hand to stop them and keep talking to them to try and convince them to think otherwise.
Keeping silent may only be the option if you don’t have enough genuine knowledge to convince/stop a person. But if you do have knowledge and still refrain from educating a person, then you will be sinful.
If they don’t listen even after doing what the Hadith says, leave it up to Allah, for you won’t be sinful since you tried your best.