Poniżej znajduje się sygnał reprezentujący nagranie osoby mówiącej. Na tej podstawie chciałbym stworzyć serię mniejszych sygnałów audio. Chodzi o to, aby wykryć, kiedy „ważny” dźwięk zaczyna się i kończy, i użyć ich do markerów do stworzenia nowego fragmentu dźwięku. Innymi słowy, chciałbym użyć ciszy jako wskaźników, kiedy „fragment” audio zaczął się lub zatrzymał i na tej podstawie tworzyć nowe bufory audio.
Na przykład, jeśli ktoś nagrywa siebie mówiącego
Hi [some silence] My name is Bob [some silence] How are you?
chciałbym z tego zrobić trzy klipy audio. Ten, który mówi Hi
, ten, który mówi My name is Bob
i ten, który mówi How are you?
.
Moim początkowym pomysłem jest ciągłe sprawdzanie bufora audio, gdzie są obszary o niskiej amplitudzie. Może mógłbym to zrobić, pobierając pierwsze dziesięć próbek, uśredniając wartości, a jeśli wynik jest niski, oznacz to jako ciche. Przejdę do bufora, sprawdzając kolejne dziesięć próbek. Zwiększając w ten sposób mogłem wykryć, gdzie koperty zaczynają się i kończą.
Jeśli ktoś ma jakieś porady na temat dobrego, ale prostego sposobu na zrobienie tego, byłoby świetnie. Dla moich celów rozwiązanie może być dość szczątkowe.
Nie jestem profesjonalistą w DSP, ale rozumiem kilka podstawowych pojęć. Robiłbym to również programowo, więc najlepiej byłoby mówić o algorytmach i próbkach cyfrowych.
Dzięki za wszelką pomoc!
EDYCJA 1
Jak dotąd świetne odpowiedzi! Chciałem tylko wyjaśnić, że nie dotyczy to audio na żywo i sam będę pisał algorytmy w C lub Objective-C, więc wszelkie rozwiązania korzystające z bibliotek nie są tak naprawdę opcją.