Dies ist eine Python-Bibliothek und ein Befehlszeilentool, das Ihnen bei der Suche nach einem Wort oder einer Phrase in einer Audiodatei (WAV-Format) hilft. Es baut auch auf der anfänglichen Suchfunktion auf und bietet einige [sogenannte] erweiterte Suchfunktionen!
Um die Dokumentation zu lesen, klicken Sie hier.
Öffnen Sie ein Terminal und geben Sie Folgendes ein:
pip installiere SimpleAudioIndexer
Details zur Installation finden Sie in den Dokumentationen hier.
Im Repo ist eine Docker-Datei enthalten, falls Sie keine native Installation durchführen können oder sich auf einem Windows-System befinden.
Öffnen Sie ein Terminal und geben Sie Folgendes ein:
pip deinstalliert SimpleAudioIndexer
Die Deinstallation von sox hängt jedoch davon ab, ob Sie ein Linux- oder Mac-System verwenden. Weitere Informationen finden Sie hier.
Angenommen, Sie haben diese Audiodatei:
Laden Sie es der Einfachheit halber in ein leeres Verzeichnis herunter. Wir würden dieses Verzeichnis als SRC_DIR und den Namen dieser Audiodatei als small_audio.wav bezeichnen.
So können Sie es durchsuchen.
Öffnen Sie ein Terminal und betreten Sie es.
$ sai --mode "ibm" --username_ibm BENUTZERNAME --password_ibm PASSWORD --src_dir SRC_DIR --search "aufgerufen" {'called': {'small_audio.wav': [(1.25, 1.71)]}}
Ersetzen Sie USERNAME und PASSWORD durch Ihre IBM Watson-Anmeldeinformationen und SRC_DIR durch den absoluten Pfad zu dem Verzeichnis, das Sie gerade vorbereitet haben.
Die Ausgabe wäre, wie oben, ein Wörterbuch, das die Abfrage, die Datei(en), in der sie vorkommt, und alle (Anfangssekunde, Endsekunde) dieser Abfrage enthält.
Beachten Sie, dass alle Befehle einheitlich für andere Engines (z. B. Pocketsphinx) funktionieren. Der obige Befehl kann beispielsweise wie folgt eingegeben werden:
$ sai --mode "cmu" --src_dir SRC_DIR --search "lives" {'lives': {'small_audio.wav': [(3.12, 3.88)]}}
Was Pocketsphinx anstelle von Watson verwenden würde, um die Zeitstempel zu erhalten. Beachten Sie, dass die Qualität/Genauigkeit von Pocketsphinx viel geringer ist als die von Watson.
Anstatt nach einem Wort zu suchen, können Sie auch ein Regex-Muster finden, zum Beispiel:
$ sai --mode ibm --src_dir SRC_DIR --username_ibm BENUTZERNAME --password_ibm PASSWORT --regexp " [az][az] " {u' in ': {'small_audio.wav': [(2.81, 2.93)]}, {u' bis ': {'small_audio.wav': [(1.71, 1.81)]}}
Das war das Ergebnis der Suche nach Wörtern mit zwei Buchstaben. Beachten Sie, dass Ihre Ergebnisse mit beliebigen beliebigen regulären Ausdrücken übereinstimmen würden.
Sie können die indizierten Daten auch über das Befehlszeilenskript speichern und laden. Weitere Informationen finden Sie hier.
Angenommen, Sie haben diese Datei
>> > from SimpleAudioIndexer import SimpleAudioIndexer as sai
Anschließend sollten Sie eine Instanz von Sai erstellen
>> > indexer = sai ( mode = "ibm" , src_dir = "SRC_DIR" , username_ibm = "USERNAME" , password_ibm = "PASSWORD" )
Jetzt können Sie alle verfügbaren Audiodateien indizieren, indem Sie die Methode index_audio aufrufen:
>> > indexer . index_audio ()
Sie könnten einen Suchgenerator haben:
>> > searcher = indexer . search_gen ( query = "called" )
>> > print ( next ( searcher ))
{ 'Query' : 'called' , 'File Name' : 'small_audio.wav' , 'Result' : ( 1.25 , 1.71 )}
Jetzt sind noch einige weitere Argumente für search_gen implementiert. Angenommen, Sie möchten, dass bei Ihrer Suche die Groß-/Kleinschreibung beachtet wird (standardmäßig ist dies nicht der Fall). Oder sagen Sie, Sie wollten nach einer Phrase suchen, aber es gibt eine Zeitlücke und der Indexer hat sie nicht richtig erfasst. Sie könnten „timing_error“ angeben. Oder sagen wir, dass ein Wort völlig fehlt, dann könnten Sie „missing_word_tolerance“ usw. angeben.
Eine vollständige Liste finden Sie hier in der API-Referenz
Beachten Sie, dass Sie auch die Methode search_all aufrufen können, um in allen Audiodateien nach einer Liste von Abfragen zu suchen:
Endlich könnten Sie eine Regex-Suche durchführen!
>> > print ( indexer . search_regexp ( pattern = "[A-Z][^l]* " )
{ u'Americans are ca' : { 'small_audio.wav' : [( 0.21 , 1.71 )]}}
Es sind weitere Funktionalitäten implementiert. Ausführliche Erläuterungen finden Sie in der Dokumentation hier.
Wenn Sie Code oder Ideen beisteuern, eine Fehleranforderung einreichen oder Feedback geben möchten, besuchen Sie die Datei „CONTRIBUTING“.
Siehe auch die Liste der Mitwirkenden dieses Projekts.
Dieses Projekt ist unter der Apache v2.0-Lizenz lizenziert – weitere Einzelheiten finden Sie in der LIZENZ-Datei.