c# Footsteps are not working

So i got this far with doing footstep sounds for my project but it’s just not working can any one help

using UnityEngine;
using System.Collections;

public class Footsteps : MonoBehaviour {
	
	public AudioClip[] footsteps;
	public float nextStep;

	IEnumerator Start () 
	{
		CharacterController controller = GetComponent<CharacterController>();
		
		while(true)
		{
			if(controller.isGrounded  controller.velocity.magnitude > 0.3F)
			{
				audio.PlayOneShot(footsteps[Random.Range (0, footsteps.Length)]);
				yield return new WaitForSeconds(nextStep);
			}
			else
			{
				yield return 0;
			}
		}	
	}
}

I’m a bit confused here.
Start would normally be the function that gets called ONCE when the object is instantiated but in your code it looks like you’re expecting Start to be called multiple times so you can do repeated speed checks. You might consider moving your code into the Update function where it will run once per frame or starting a co-routine that periodically does your speed check.