Also potentially relevant. This code runs immediately before the new, erroring text is set. I'm free later in the afternoon on Monday if you were interested in doing any kind of screen share to look at code being run on a system where the error is guaranteed to pop.
public void SetSpeed()
{
var multiplier = charConvVoice.GetTextSpeedMultiplier() * ReadSpeedMultiplier;
// invert speed multiplier, then reduce the slope of the curve to get framerate mult
var frameMult = 1 + (1 / multiplier - 1) * 0.4f;
if (charConvShaderAnimation != null)
charConvShaderAnimation.FrameLengthMultiplier = frameMult;
superTextMesh.speedReadScale = multiplier;
if (multiplier == 1 && superTextMesh.isSpeedReading)
superTextMesh.RegularRead();
else if (multiplier != 1 && !superTextMesh.isSpeedReading)
superTextMesh.SpeedRead();
}