Esta es una biblioteca de Python y una herramienta de línea de comandos que le ayuda a buscar una palabra o frase dentro de un archivo de audio (formato wav). ¡También se basa en la capacidad de búsqueda inicial y proporciona algunas [llamadas] capacidades de búsqueda avanzadas!
Para leer la documentación, visite aquí.
Abra una terminal e ingrese:
instalación de pip SimpleAudioIndexer
Los detalles de instalación se pueden encontrar en la documentación aquí.
Hay un archivo acoplable incluido en el repositorio si no puede realizar una instalación nativa o está en un sistema Windows.
Abra una terminal e ingrese:
pip desinstalar SimpleAudioIndexer
Sin embargo, la desinstalación de sox depende de si estás en un sistema Linux o Mac. Para obtener más información, visite aquí.
Digamos que tienes este archivo de audio:
Descárguelo en un directorio vacío para simplificar. Nos referiríamos a ese directorio como SRC_DIR y al nombre de este archivo de audio como small_audio.wav.
Así es como puedes buscarlo.
Abre una terminal y entra.
$ sai --mode "ibm" --username_ibm NOMBRE DE USUARIO --password_ibm CONTRASEÑA --src_dir SRC_DIR --buscar "llamado" {'llamado': {'small_audio.wav': [(1.25, 1.71)]}}
Reemplace NOMBRE DE USUARIO y CONTRASEÑA con las credenciales de IBM Watson y SRC_DIR con la ruta absoluta al directorio que acaba de preparar.
La salida sería, como arriba, un diccionario que tiene la consulta, los archivos en los que aparece y todo (empezando por el segundo, terminando por el segundo) de esa consulta.
Tenga en cuenta que todos los comandos funcionan de manera uniforme para otros motores (es decir, Pocketsphinx); por ejemplo, el comando anterior se puede ingresar como:
$ sai --mode "cmu" --src_dir SRC_DIR --buscar "vidas" {'vive': {'small_audio.wav': [(3.12, 3.88)]}}
Lo cual usaría Pocketsphinx en lugar de Watson para obtener las marcas de tiempo. Tenga en cuenta que la calidad/precisión de Pocketsphinx es mucho menor que la de Watson.
En lugar de buscar una palabra, también puedes hacer coincidir un patrón de expresiones regulares, por ejemplo:
$ sai --mode ibm --src_dir SRC_DIR --username_ibm NOMBRE DE USUARIO --password_ibm CONTRASEÑA --regexp " [az][az] " {u' en ': {'small_audio.wav': [(2.81, 2.93)]}, {u' a ': {'small_audio.wav': [(1.71, 1.81)]}}
Ese fue el resultado de buscar palabras de dos letras. Tenga en cuenta que sus resultados coincidirían con cualquier expresión regular arbitraria.
También puede guardar y cargar los datos indexados desde el script de línea de comando. Para obtener más información, visite aquí.
Di que tienes este archivo
>> > from SimpleAudioIndexer import SimpleAudioIndexer as sai
Luego, debes crear una instancia de sai.
>> > indexer = sai ( mode = "ibm" , src_dir = "SRC_DIR" , username_ibm = "USERNAME" , password_ibm = "PASSWORD" )
Ahora puedes indexar todos los archivos de audio disponibles llamando al método index_audio:
>> > indexer . index_audio ()
Podrías tener un generador de búsqueda:
>> > searcher = indexer . search_gen ( query = "called" )
>> > print ( next ( searcher ))
{ 'Query' : 'called' , 'File Name' : 'small_audio.wav' , 'Result' : ( 1.25 , 1.71 )}
Ahora hay bastantes argumentos más implementados para search_gen. Supongamos que desea que su búsqueda distinga entre mayúsculas y minúsculas (de forma predeterminada no lo es). O bien, digamos que desea buscar una frase pero hay un intervalo de tiempo y el indexador no la detectó correctamente, puede especificar timing_error. O, digamos que se omite por completo alguna palabra, entonces podría especificar falta_palabra_tolerancia, etc.
Para obtener una lista completa, consulte la referencia de API aquí
Tenga en cuenta que también puede llamar al método search_all para buscar una lista de consultas dentro de todos los archivos de audio:
¡Finalmente, podrías hacer una búsqueda de expresiones regulares!
>> > print ( indexer . search_regexp ( pattern = "[A-Z][^l]* " )
{ u'Americans are ca' : { 'small_audio.wav' : [( 0.21 , 1.71 )]}}
Hay más funcionalidades implementadas. Para explicaciones detalladas, lea la documentación aquí.
Si desea contribuir con código o ideas, presentar una solicitud de error o dar comentarios, visite el archivo CONTRIBUCIÓN.
Vea también la lista de contribuyentes a este proyecto.
Este proyecto tiene la licencia Apache v2.0; consulte el archivo LICENCIA para obtener más detalles.