There is probably something you did wrong, because that's exactly the purpose of adjusting the duration. Duration can only be a multiple of the polling frequency, but if your server is polled every 300 seconds and you put a CPU Monitoring configuration to a duration of 600, you should only get an alarm if the CPU is above the specified threshold for two consecutive pollings. There's one thing to consider however: Spectrum is doing real-time/instant monitoring: if the CPU is 0 all over the 10 minutes and 100 % used only for 5 seconds every 5 minutes and the metric is polled precisely during those 5 seconds, it will tell you that you're above the threshold (which is true in that case) but it's probably not what the server admin want.
Instead of monitoring the CPU Usage for cases where the load is pretty inconsistent and unpredictable, you should rely on the CPU Load on 15 minutes for example. If the load (already aggregated at the server level) is above a limit that would be more accurate.