Yes. However, "silence" will be relative to what the speech recognition hears. Especially if you have a microphone that picks up a lot of environmental noise (including, for example, the pressing of keyboard keys), it may not detect silence often enough for the command to work reliably.
If you really want to try such a command, look into the "Start an Indefinite Loop" action to have the command running in the background, and the "Set a Date/Time Value" action combined with the "Date/Time" tab of the "Begin a Conditional (If Statement) Block" action for the timeout.
This command is intended to allow dictation until the speech recognition engine detects silence, but as it shows most of the principles you're likely to need, it can serve as an example:
Start Dictation Mode (Clearing Dictation Buffer)
Set date [~speechTimeout] to [~speechTimeout] plus [5] seconds
Start Indefinite Loop
Begin Text Compare : [{STATE_SPEECHACTIVE}] Equals '0'
Begin Date Compare : [~speechTimeout] Is Before Current Date/Time
Stop Dictation Mode
Write [Blue] '{DICTATION}' to log
End Condition - Exit when condition met
Else
Set date [~speechTimeout] value to the current date/time
Set date [~speechTimeout] to [~speechTimeout] plus [3] seconds
End Condition
End Loop