Ich habe in der Vergangenheit Spektralfluss verwendet und es scheint gut zu funktionieren. Die Grundidee ist, ein Spektrogramm Ihres Signals über die Bänder zu erstellen, die Sie interessieren. Nehmen wir an , dass Ihre Frequenz auf der y-Achse ist, und die Zeit ist auf der x-Achse, wie so .
Dies bedeutet, dass Ihr Spektrogramm eine Matrix ist. Jede Spalte repräsentiert den absoluten Wert der FFT eines Schnappschusses Ihres Signals, und jede Zeile repräsentiert, wie sich die Energie eines Bandes mit der Zeit ändert.
Nehmen Sie nun einfach den Unterschied der Spalten. Nehmen Sie also eine Spalte und subtrahieren Sie die vorhergehende Spalte von sich selbst und tun Sie dies für alle Spalten. (Offensichtlich die Startspalten alleine lassen). Dann summiere über alle Bands. Das heißt, summieren Sie einfach alle Zeilen zusammen.
Am Ende erhalten Sie ein 1-D-Signal, das Ihren Signaleintritt codiert . Hier erfahren Sie, wo Ihre Stimme beginnt.
BEARBEITEN:
Wenn Sie nun das Gegenteil feststellen möchten (d. H., Wenn ein Signal keine Aktivität mehr aufweist), erhalten Sie diese Informationen durch den Spektralfluss. Wo immer Sie einen Beginn haben, werden Sie einen positiven Peak haben, und wo immer Sie einen 'Deset' haben (mangels eines besseren Wortes), werden Sie einen negativen Peak haben.
Ich würde einfach den ersten positiven Peak und den letzten negativen Peak nehmen, um die Gesamtstart- und -stoppzeiten meines Signals zu markieren.