Character Physics movement = no velocity?
Problem
The &quot;Character&quot; Physics Type does not imply that this object uses the build-in Physics engine. Regarding the Physics engine this kind of object is still a static object.
Therefore you can't apply velocities or forces, nor can you read them. The object teleports within the scene by its own, rather than it is moving in terms of the physics engine.
Solution
Physics engine
Either you use a real (moving) physics type (rigid body, soft body, dynamic),
Character physics
or you record the position at each frame. This way you can calculate the traveled distance from frame to frame via Python. It is simply the difference between the current's frame position and the position of the previous frame.
Remarks
In my eyes

Rigid Body, Soft Body, Dynamic and Static are real physics types.
Sensor and No Collision are attributes (or attribute sets) of physics types
Character, Navigation Mesh and Occluder have nothing to do with physics and should not be at this place. These setting should be at object level not at physics level.