Play audio clip on more than one object from another gameobject

Hey guys/girls.

I want to play a audio file on more than one gameObjects(with audioSource attached to them)

I am creating an empty object and attaching this script

public class AudioPlayScript : MonoBehaviour {

	public GameObject[] obj;
	public AudioClip song;
	bool check = true;
	
	void Start ()
	{
		check = true;
		obj = GameObject.FindGameObjectsWithTag("Audio");
	}
	
	void Update () 
	{
		if (Input.GetKeyDown (KeyCode.P) && check == true)
		{
			foreach(object o in obj)
			{
                //For each Obj from the array will be called PlaySound 
                //function
				//I need some help here.
			}
				check = false;
		}

	}
	
	public  void PlaySound (AudioClip sound)
	{

		audio.clip = sound;
		audio.Play ();
	}


	public void PauseSound (AudioClip sound)
	{
		audio.clip = sound;
		audio.Pause ();
	}
}

The array will contain all those gameObjects spread into my scenes from where will be played my Only mp3 file.

The problem is that by playing more than one sound at the same time in my scene (same mp3 file) will give me an echo and I dont want it to be.

I need help of how to do this.

Attach the script you have now to each gameobject you want sound to come from, then use AudioPlayScript.PlaySound(); you may have to change the PlaySound function in your script from public void to public static void, in another script put AudioPlayScript.PlaySound();, the only thing is you’ll have to create a script for each sound.
OR use this, i modified your script for you

  using UnityEngine;
    using System.Collections;
    
    public class AudioPlayScript : MonoBehaviour {
    	
    	public GameObject[] SoundSource;
    	public AudioClip song;
    	bool check = true;
    	
    	void Start ()
    	{
    		for(int i = 0; i < SoundSource.Length; i++) {
    			
    		
    		SoundSource = GameObject.FindGameObjectsWithTag("Audio"); // You may have to select the SoundSources in the inspector
    		}
    	}
    	
    	void Update ()
    	{
    		if (Input.GetKeyDown (KeyCode.P))
    		{
    			PlaySound(song);
    		
    		}
    		
    	}
    	
    	public void PlaySound (AudioClip sound)
    	{
    		for(int i = 0; i < SoundSource.Length; i++) {
    			
    			SoundSource*.audio.clip = sound;*

_ SoundSource*.audio.Play();_
_
}_
_
}*_

* public void PauseSound (AudioClip sound)*
* {*
* for(int i = 0; i < SoundSource.Length; i++) {*
_ SoundSource*.audio.clip = sound;
SoundSource.audio.Pause ();
}
}
}*_

I’m not sure if this is what your looking for, but could you just reduce the max distance under 3D sound settings in the audio source component?