I have used the tensorflow.js model MediaPipe Facemesh to estimate the head pose in real time using the device's camera as used in snake-face. The direction in which the head is pointing at start is estimated as a reference point. Subsequent estimates are compared to this to angle.
The head direction is estimated by calculating the vectors connecting the centre of the lips to the left and right cheeks. These two vectors lie on a plane that approximates the surface of the face. The cross product of these vectors is normal to this plane and thus points approximately in the direction of the head.