If I may add to that:
You can integrate mute/unmute functionality into the same command:
Volume [1..5,10;mute;unmute]Begin Text Compare : [{CMDSEGMENT:1}] Equals 'mute'
Mute application [*Winamp*] audio
Mute application [Streamlabs Chatbot] audio
Mute application [Pretzel] audio
Else If Text Compare : [{CMDSEGMENT:1}] Equals 'unmute'
Unmute application [*Winamp*] audio
Unmute application [Streamlabs Chatbot] audio
Unmute application [Pretzel] audio
Else
Set application [Streamlabs Chatbot] audio volume to [{CMDSEGMENT:1}]
Set application [Pretzel] audio volume to [{CMDSEGMENT:1}]
End Condition
Play sound, '{VA_SOUNDS}\KICS Sounds\KICS_Beep1.mp3'
The command phrase is built so it will extrapolate numeric values from 10 to 50, as in your original example(1..5, multiplied by 10), and adds "mute" and "unmute" to the same segment.
The order of compares is important here, as it's a process of elimination; First you eliminate the options that require separate actions, in this case "mute" and "unmute", once those have 'been checked, the only phrase options remaining should all contain a number, so you can process them without doing additional checks to make sure of that.
The command in the OP cannot work, as you're comparing the spoken phrase to only part of itself:
Begin Text Compare : [{LASTSPOKENCMD}] Equals '10'
E.G. This would compare "volume 10" to "10", which is not the same literal string.
If you used "Contains" instead, it should work.