Sox für Spracherkennung und Streaming verwenden

8

Zur Zeit verwende ich sox wie folgt:

%Vor%

Als Referenz wird hier Audio vom Standardmikrofon aufgenommen und ein kleines Endian-Ulaw-formatiertes Audio mit 8 Bit und einer 8k-Rate ausgegeben. Der Effektfilter trimmt Audio, bis das Geräusch 0,3 Sekunden lang einen Schwellenwert erreicht, und nimmt dann solange auf, bis 0,3 Sekunden Stille vorhanden sind. All dies streamt zu stdout, die ich verwende, um zu einem entfernten Server zu streamen.

Ich benutze all das, um ein bisschen Stimme aufzunehmen und zu beenden, wenn ich mit dem Sprechen fertig bin. Um Sox auszulösen, verwende ich spezielle Hardware, um den Start der Aufzeichnung auszulösen. Ich kann fast jedes Audioformat oder Codec verwenden, solange es die Formatierung / Codierung im laufenden Betrieb unterstützt. Meine Zielplattform ist Raspbian auf der Raspberry Pi 2 B.

Meine ideale Lösung wäre es, mit vad die Aufzeichnung zu stoppen, wenn der Benutzer mit dem Sprechen fertig ist. Meine Hoffnung ist, dass dies auch mit Hintergrundgeschwätz funktionieren würde. Die sox-Dokumentation zum vad-Effekt besagt dies jedoch:

  

Die Verwendung des Normeffekts wird empfohlen, aber denken Sie daran, dass keiner von beiden verwendet wird   Umgekehrt oder Norm ist für die Verwendung mit Streaming-Audio geeignet.

Ich konnte die Parameter nicht zusammenfügen, um VAD- und Streaming-Funktionen zu erhalten. Ist es möglich, den vad-Effekt zu verwenden, um die Aufnahme von Audio zu stoppen, während die stdin- & gt; sox- & gt; stdout-Verrohrung beibehalten wird? Gibt es bessere Alternativen?

    
Jim Cortez 02.05.2015, 19:34
quelle

1 Antwort

1
  

Ist es möglich, den vad-Effekt zu verwenden, um die Aufnahme von Audio zu stoppen, während die stdin- & gt; sox- & gt; stdout-Verrohrung beibehalten wird?

Nein. Der vad -Effekt kann die Stille nur von der Vorderseite des Audiosignals abschneiden. Sie konnten es also nur verwenden, um den Beginn der Aufnahme und nicht das Ende und die Pausen zu erkennen.

Die Filter reverse und norm benötigen alle Eingabedaten, bevor sie Ausgabedaten erzeugen, daher können sie nicht mit Streaming verwendet werden.

Der Schlüssel ist, einen guten Schwellenwert für den silence -Filter auszuwählen, so dass "Hintergrund-Chatter" als Stille verwendet wird.

Sie könnten auch noisered (mit einem Profil basierend auf vorherigen Aufnahmen) vor silence verwenden, um das Rauschen zu reduzieren, das die Aufzeichnung auslöst, aber dies wirkt sich auch auf die Ausgabe aus und wird wahrscheinlich "Hintergrund-Chatter" nicht als Rauschen verwenden. p>     

mik 12.05.2015, 09:09
quelle