Audio Endless Loop c#

When script plays an audioclip when the timer runs out, however it keeps playing the sound endlessly on every frame and it sounds bad and makes the game lag. I have the audio’s loop value set to false. Does anybody know how to fix this?

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class audioTimer : MonoBehaviour
 {
 
     bool okayToPlayAudio;
     public float timeLeft = 10f; //time in seconds
     public AudioSource theaterVoice;
     public AudioClip audioClip;
    public void Update()
     {
         
         if (timeLeft > 0.0)
         {
 
             timeLeft -= Time.deltaTime;
             
 
         }
         else
         {
 
             okayToPlayAudio = true;
                       
         }
         if(okayToPlayAudio)
         {
 
             theaterVoice.PlayOneShot(audioClip, 1.0f);
             okayToPlayAudio = false;
         }
         
     }

@BakedSteakGames,
you are not resetting your timer after is has expired, so you always go into the else statement once that has happened.
If you want the timer to reset, change

if (okayToPlayAudio)
{
    theaterVoice.PlayOneShot(audioClip, 1.0f);
    okayToPlayAudio = false;
}

To

if (okayToPlayAudio)
{
    theaterVoice.PlayOneShot(audioClip, 1.0f);
    okayToPlayAudio = false;
    timeLeft = 10.0f;
}

There is a slightly more elegant way to get a timer though:

 public class AudioTimer : MonoBehaviour
    {
        public float timeLeft = 10f; //time in seconds
        public AudioSource theaterVoice;
        public AudioClip audioClip;
        void Start ()
        {
            StartCoroutine(DoTimer(timeLeft));
        }
    
        IEnumerator DoTimer(float time)
        {
            yield return new WaitForSeconds(time);
            theaterVoice.PlayOneShot(audioClip, 1.0f);
        }
    }