Hi snamina,
It’s great to see that you are challenging yourself. You also have a solid concept, so I’m sure you’ll be able to make your idea work. 
I agree with you. A dedicated method for enabling/disabling sound would be great because, at the moment, there is a lot of duplicated code, which makes changing details bothersome because you would have to do that “everywhere”.
Do you know method overloading? Here is an example:
void PrintName (string yourParameterName)
{
Debug.Log(yourParameterName);
}
// When calling the method:
PrintName("Rick");
With this, you could create a method which is supposed to start/stop the audio source and do not have to copy and paste the same lines of code all over the place. Instead, you could write one method for it.
If you want to make the same audio source play another sound, the PlayOneShot method might be interesting for you. Look it up in the API. Alternatively, override the clip value of the AudioSource object during runtime. There is an example in the API.
Clips cannot be stopped. Only the AudioSource can. Like a radio.
I hope this helped a bit. I don’t want to write too much because I feel that you might want to solve this problem yourself. If you need more advice, feel free to ask. 
See also:
- DotNetPerls: C# Overload Method
- Forum User Guides : How to apply code formatting within your post
- Forum User Guides : How to mark a topic as solved