Your battery voltage sounds low. A freshly and fully-charged battery will have a surface charge level higher than normal. 13 to 14 volts is common. Remove the surface charge by turning the headlights on high beam for 1 minute. Shut the lights off and test voltage, looking for 12.6-12.8V. Stabilized voltage on a battery that has been sitting one or more days should show 12.6-12.7V at room temperature. Charge level can also be checked by the electrolyte (battery acid) specific gravity, with a fully charged battery at 1.270, and a dead battery at 11.5V and 1.07sg. Just for reference, a 12.5V reading like you got indicates an 80% charge, if
it was not a surface charge.
I would do a cranking voltage test, with the voltmeter attached to the battery terminals. Normal minimum is 10.5 volts within a 10-second cranking period. Absolute minimum is 9.6V in worst conditions. Do not crank longer than 10 seconds without a 1-minute rest for starter cooling. Bad test results mean a trip to test the battery.
However, if the voltage stays within spec during the cranking test, yet the starter is slow, that indicates resistance in the starting circuit, or a bad starter. Warmth anywhere in the system indicates excessive resistance, and warmth in the starter is normal, but in the battery, cables, and connections is not. Feel everything in the starting circuit (battery, heavy cables, ground straps and connectors) for signs of heat after cranking. Repair any warm spots.
Likewise, you can also use the voltmeter to find resistance as voltage drops, by connecting off each end of a singe cable (so you are also testing the connection), and cranking the engine a few moments. For example, probes to the battery (+) post and the starter relay post would test the cable and both if its connections. Any reading above 0.1V in any one section or in the relay is of concern.
Let us know what you find.