Instantiate audiosources as gameobjects?

I am making a pistol for an FPS, which has a high rate of fire. The shot sound that goes along with it usually restarts whenever the fire button is clicked, making it sound off. If I were to instantiate audiosources as gameobjects (shown below) would that fix it, allowing for the 1st sound to play out and finish, while the second one starts and continues? And how will I destroy the audiosources when they’re done playing? (The AudioSources will have “play on awake” checked.

public GameObject sound; 
public GameObject SoundOrigin; 

void Update () {
       if (Input.GetButtonDown("Fire1") {
                 Instantiate(sound, SoundOrigin.transform.position, SoundOrigin.transform.rotation); 
       }
}

I’m new to this myself but maybe you could simply do this?

 public AudioSource bulletSound; 
 
 void Update () {
        if (Input.GetButtonDown("Fire1") 
        {
                 bulletSound.Play ();
        }
 }