Il s'agit d'une bibliothèque Python et d'un outil de ligne de commande qui vous aide à rechercher un mot ou une phrase dans un fichier audio (format wav). Il s'appuie également sur la capacité de recherche initiale et fournit des capacités de recherche [soi-disant] avancées !
Pour lire la documentation, visitez ici.
Ouvrez un terminal et saisissez :
pip installer SimpleAudioIndexer
Les détails d’installation peuvent être trouvés dans les documentations ici.
Un fichier docker est inclus dans le dépôt si vous ne parvenez pas à effectuer une installation native ou si vous êtes sur un système Windows.
Ouvrez un terminal et saisissez :
pip désinstaller SimpleAudioIndexer
Cependant, la désinstallation de sox dépend du fait que vous soyez sur un système Linux ou Mac. Pour plus d’informations, visitez ici.
Supposons que vous ayez ce fichier audio :
Téléchargez-le dans un répertoire vide pour plus de simplicité. Nous appellerons ce répertoire SRC_DIR et le nom de ce fichier audio small_audio.wav.
Voici comment vous pouvez y effectuer une recherche.
Ouvrez un terminal et entrez.
$ sai --mode "ibm" --username_ibm USERNAME --password_ibm PASSWORD --src_dir SRC_DIR --search "appelé" {'appelé' : {'small_audio.wav' : [(1.25, 1.71)]}}
Remplacez USERNAME et PASSWORD par vos informations d'identification IBM Watson et SRC_DIR par le chemin absolu du répertoire que vous venez de préparer.
La sortie serait, comme ci-dessus, un dictionnaire contenant la requête, le(s) fichier(s) dans lequel elle apparaît et tous les éléments (seconde de début, seconde de fin) de cette requête.
Notez que toutes les commandes fonctionnent de manière uniforme pour les autres moteurs (c'est-à-dire Pocketsphinx), par exemple la commande ci-dessus peut être saisie comme :
$ sai --mode "cmu" --src_dir SRC_DIR --search "lives" {'lives' : {'small_audio.wav' : [(3.12, 3.88)]}}
Ce qui utiliserait Pocketsphinx au lieu de Watson pour obtenir les horodatages. Notez que la qualité/précision de Pocketsphinx est bien inférieure à celle de Watson.
Au lieu de rechercher un mot, vous pouvez également faire correspondre un modèle d'expression régulière, par exemple :
$ sai --mode ibm --src_dir SRC_DIR --username_ibm USERNAME --password_ibm PASSWORD --regexp " [az][az] " {u' dans ' : {'small_audio.wav' : [(2.81, 2.93)]}, {u' à ' : {'small_audio.wav' : [(1.71, 1.81)]}}
C'était le résultat d'une recherche de mots à deux lettres. Notez que vos résultats correspondraient à n’importe quelle expression régulière arbitraire.
Vous pouvez également enregistrer et charger les données indexées à partir du script de ligne de commande. Pour plus d’informations, visitez ici.
Dis que tu as ce fichier
>> > from SimpleAudioIndexer import SimpleAudioIndexer as sai
Ensuite, vous devez créer une instance de sai
>> > indexer = sai ( mode = "ibm" , src_dir = "SRC_DIR" , username_ibm = "USERNAME" , password_ibm = "PASSWORD" )
Vous pouvez maintenant indexer tous les fichiers audio disponibles en appelant la méthode index_audio :
>> > indexer . index_audio ()
Vous pourriez avoir un générateur de recherche :
>> > searcher = indexer . search_gen ( query = "called" )
>> > print ( next ( searcher ))
{ 'Query' : 'called' , 'File Name' : 'small_audio.wav' , 'Result' : ( 1.25 , 1.71 )}
Il y a maintenant quelques arguments supplémentaires implémentés pour search_gen. Supposons que vous souhaitiez que votre recherche soit sensible à la casse (ce n'est pas le cas par défaut). Ou, disons que vous vouliez rechercher une phrase mais qu'il y a un écart temporel et que l'indexeur ne l'a pas correctement captée, vous pouvez spécifier timing_error. Ou, disons qu'un mot est complètement manqué, vous pouvez alors spécifier Missing_word_tolerance, etc.
Pour une liste complète, consultez la référence API ici
Notez que vous pouvez également appeler la méthode search_all pour rechercher une liste de requêtes dans tous les fichiers audio :
Enfin, vous pouvez faire une recherche regex !
>> > print ( indexer . search_regexp ( pattern = "[A-Z][^l]* " )
{ u'Americans are ca' : { 'small_audio.wav' : [( 0.21 , 1.71 )]}}
Il y a plus de fonctionnalités implémentées. Pour des explications détaillées, lisez la documentation ici.
Si vous souhaitez contribuer au code ou aux idées, déposer une demande de bug ou donner votre avis, visitez le fichier CONTRIBUTING.
Voir aussi la liste des contributeurs à ce projet.
Ce projet est sous licence Apache v2.0 - voir le fichier LICENSE pour plus de détails.