Add a boolean property which is False by default. On collision, set it to True and play the sound only on collision AND if the property is equal to False.
Change the state on collision. States behave like layers, only the current active state(s) get executed. For a detailed explanation see: https://docs.blender.org/manual/en/dev/game_engine/logic/states.html