I believe you may be able to accomplish this by checking the humanoid’s FloorMaterial.
Whenever a player is not touching the ground, their FloorMaterial is set to “Air”. You could run a loop checking for when their FloorMaterial is no longer set to “Air” and then play a sound.
Sorry if this isn’t the solution you were looking for and best of luck!
I’m not too sure with this since I’m can’t access studio currently. But what about checking the player’s Character.HumanoidRootPart.Velocity.Y is 0 or not when Humanoid:GetState() is falling?
Though that may cause a delay… Maybe you have to alter this method a bit who knows