refactored to account for speaking from res stream or a file