This is my emulator of choice: Retro Virtual Machine
It does all 3 Amstrad CPC models, all 3 Spectrum models (+2 and +3 are lumped together), plus a couple of Spectrum clones.
It also has emulation for several different types of screens, handy for some Amstrad CPC games and demos where they programmed the CRTC to create custom resolutions (Arkanoid is a good example as they used vertical overscan to replicate the aspect ratio of the arcade machine, which none of the other 8-bit or even 16-bit conversions did).
RVMv2 emulates all video signal generation at low level, virtual machines generate H-Sync V-Sync signals as well as the video signal.
The virtual monitor is responsible for displaying the final image, also emulates the mix of frames that is usually produced in an interlaced signal.
RVMv2 also uses the correct pixel aspect ratio. In the analog world there is nothing exactly square
They have versions for macOS, Windows and Linux.