I have used spectral-flux in the past and it seems to work nicely. The basic idea is, create a spectrogram of your signal, across the bands you care about. Let us assume that your frequency is on the y-axis, and your time is on the x-axis, like so.
This means that your spectrogram is a matrix. Each column represents the absolute value of the FFT of one snap-shot in time of your signal, and each row represents how energy from one band changes over time.
Now, simply take the difference of columns. That is, take a column, and subtract from itself the column before it, and do for all columns. (Leaving the start columns alone obviously). Then sum across all the bands. That is, just sum all the rows together.
You will end up with a 1-D signal that codifies your signal onsets. This will tell you where your voice starts.
Now that you have detected onsets, if you want to detect the opposite, (that is, when a signal goes from having activity to none), the spectral flux actually gives you that information. Wherever you have an onset, you will have a positive peak, and wherever you have a 'deset' (for lack of a better word), you will have a negative peak.
I would simply take the first positive peak, and the last negative peak, to mark the total start and stop times of my signal.