Walking sound on collision problem (script included)

I made this script to create sound when I am walking on diferent terrains using collision but the problem is when I go forward it plays the right sound of the tagget object but when I walk sideways it plays the sound of the first taged object.
Can someone help me to fix this problem?

here is the script: Its atached to the FirstPersonControler.

var AudioTimer : float = 0;

 var GroundSound : AudioClip;
 var MetalSound : AudioClip;
 var ConcreteSound : AudioClip;



function Update () {

if( AudioTimer > 0){

AudioTimer -= Time.deltaTime;

}

if( AudioTimer < 0){

AudioTimer = 0;

}

}


function OnControllerColliderHit( col: ControllerColliderHit){

if(col.gameObject.CompareTag("Metal") && Input.GetAxis("Vertical") && AudioTimer == 0 || Input.GetAxis("Horizontal") && AudioTimer == 0 ){


audio.clip = MetalSound;
audio.PlayOneShot( MetalSound);
AudioTimer = 0.65;

}

if(col.gameObject.CompareTag("Concrete") && Input.GetAxis("Vertical") && AudioTimer == 0 || Input.GetAxis("Horizontal") && AudioTimer == 0 ){


audio.clip = ConcreteSound;
audio.PlayOneShot( ConcreteSound);
AudioTimer = 0.65;

}


if(col.gameObject.CompareTag("Ground") && Input.GetAxis("Vertical") && AudioTimer == 0 || Input.GetAxis("Horizontal") && AudioTimer == 0 ){


audio.clip = GroundSound;
audio.PlayOneShot( GroundSound);
AudioTimer = 0.65;

}


}

if(col.gameObject.CompareTag(“Metal”) && Input.GetAxis(“Vertical”) && AudioTimer == 0 || Input.GetAxis(“Horizontal”) && AudioTimer == 0 ){

you forgot to put another col.gameobject.comparetag(metal) to the other side of the ||