The emoji announce in screen readers as "X, graphic" or "white underscore check underscore mark, graphic" (TalkBack) or "crossmark" or "white heavy checkmark" (NVDA). In Android Chrome, the emoji for the checkmark is white, no green box as you might see on Windows. This will read faster and not have the contrast issue. I would prefer blanks instead of "no", but am not sure if you have a third value for unknown and don't want to mess with that.
The emoji announce in screen readers as "X, graphic" or "white underscore check underscore mark, graphic" (TalkBack) or "crossmark" or "white heavy checkmark" (NVDA). In Android Chrome, the emoji for the checkmark is white, no green box as you might see on Windows. This will read faster and not have the contrast issue. I would prefer blanks instead of "no", but am not sure if you have a third value for unknown and don't want to mess with that.
Screen shots are from Chrome / Android.
Red X:
White check: