I'm not sure that understand you correctly, but maybe you just need to use geom_col() instead of geom_bar() and set y = Percent:
ndat5 %>%
ggplot(aes(x = Person, y = Percent, fill = SPE)) +
geom_col(stat = "identity", color = "grey", position = position_dodge()) +
geom_text(aes(label = Percent),
vjust= -0.25,
position = position_dodge(0.9)) +
theme(legend.position = "top") +
theme_light()