Take me for example, I know my singing skills very well, but no one has ever said that only people with good singing skills can sing. Although I sing badly, I have a heart that loves music. So even if your roommate sings badly, you have no right to deprive him of the freedom to sing. After all, it is his own business.
But singing loudly in the dormitory, I don't think it is appropriate to sing well or not. Dormitory is a place for people to rest, and it is often necessary to keep quiet so as not to disturb others' study and rest. You can't sing recklessly in the dormitory just because you sing well, and it's even worse if you sing badly.
So your roommate's problem is not because he sings badly, but because he sings in the dormitory. From this point of view, you can tell him directly, please stop singing, or please choose a suitable time, you are a little disturbing my rest. This statement is reasonable and won't hurt him because he doesn't like his poor singing.
As for how to make him realize that he can't sing well, it's easier. If there is someone who sings well in your dormitory, invite him to sing a song occasionally, or when talking about music and other issues, single out the roommates who sing well and praise them. After a long time, roommates who sing badly will naturally know that they are not as good as others, and understand the fact that they sing badly from another angle.
Some things are suitable for direct saying, but some things are suitable for euphemistic expression. I think we should choose a more tactful way to mention the roommate singing.