Колбек использует то значение стейта что было на момент создания колбека.
Соответственно хоть speak вызван после setCounts значение там предыдущее.
Есть два решения:
1. Не вызывать speak вручную по клику а добавить useEffect отслеживающий изменение count и вызвать speak в нем.
2. Вместо useState использовать useRef, тогда значение count.current будет всегда браться актуальное по ссылке
Upd.
Ещё можно передать аргументом в колбек speak что мы хотим озвучить. На мой взгляд это самое явное и прямолинейное решение