Unten ist ein Signal, das eine Aufzeichnung von jemandem darstellt, der spricht. Darauf aufbauend möchte ich eine Reihe kleinerer Audiosignale erstellen. Die Idee ist, zu erkennen, wann "wichtiger" Sound beginnt und endet, und diese für Marker zu verwenden, um ein neues Audio-Snippet zu erstellen. Mit anderen Worten, ich möchte die Stille als Indikator dafür verwenden, wann ein Audiobaustein gestartet oder gestoppt wurde, und neue Audiopuffer auf dieser Basis erstellen.
So zum Beispiel, wenn eine Person sich selbst sagt
Hi [some silence] My name is Bob [some silence] How are you?
dann möchte ich drei audio clips daraus machen. Einer, der sagt Hi
, einer, der sagt My name is Bob
und einer, der sagt How are you?
.
Meine ursprüngliche Idee ist es, den Audiopuffer ständig zu durchlaufen und zu überprüfen, wo Bereiche mit geringer Amplitude vorhanden sind. Vielleicht könnte ich dies tun, indem ich die ersten zehn Proben nehme, die Werte mittle und wenn das Ergebnis niedrig ist, es als still bezeichne. Ich würde den Puffer durchsehen, indem ich die nächsten zehn Proben überprüfe. Auf diese Weise konnte ich feststellen, wo Umschläge beginnen und enden.
Wenn jemand Ratschläge zu einem guten, aber einfachen Weg hat, wäre das großartig. Für meine Zwecke der Lösung kann recht rudimentär sein.
Ich bin kein Profi bei DSP, verstehe aber einige grundlegende Konzepte. Außerdem würde ich dies programmatisch tun, um über Algorithmen und digitale Samples zu sprechen.
Danke für all die Hilfe!
EDIT 1
Bisher großartige Antworten! Ich wollte nur klarstellen, dass dies nicht für Live-Audio gedacht ist, und ich werde die Algorithmen selbst in C oder Objective-C schreiben, sodass Lösungen, die Bibliotheken verwenden, eigentlich keine Option sind.