Единственная проблема, которую я вижу с этим кодом, состоит в том, что изначально клип вашего аудиоисточника не установлен ни к чему. Таким образом, в этой строке возникнет исключение пустого ref:
yield return new WaitForSeconds(audio.clip.length);
Добавьте пустую проверку, и вы должны быть хороши до go
if (audioSource.clip != null)
{
yield return new WaitForSeconds(audioSource.clip.length);
}