Este programa transforma archivos de audio .wav en un archivo .json, el que contiene palabras del audio pasadas por un filtro. En este caso,
el filtro corresponde a una o más letras, que deben estar dentro de la palabra. Esto mediante el uso de la librería whisper-timestamped
el cual procesa el audio y selecciona las palabras que contengan las letras elegidas (filtro). El archivo .json de salida contiene las
palabras detectadas junto con atributos como el tiempo en el que se detectó la palabra y cuánto dura esta.
- Python 3.9 o superior
- Clona este repositorio (O descárgalo como zip):
clone https://github.com/Klefur/Elan-Marker.git
- Instalación de la librería
whisper-timestamped
:
pip3 install git+https://github.com/linto-ai/whisper-timestamped
- Instalar
ffmpeg
:- En Ubuntu o Debian:
sudo apt update && sudo apt install ffmpeg
- en Arch Linux:
sudo pacman -S ffmpeg
- en MacOS usando Homebrew (https://brew.sh/):
brew install ffmpeg
- on Windows usando Chocolatey (https://chocolatey.org/):
choco install ffmpeg
- on Windows using Scoop (https://scoop.sh/):
scoop install ffmpeg
- Instalar ONNX Runtime:
pip3 install onnxruntime torchaudio
- Audio backend torchaudio:
- SoundFile for Windows
pip install soundfile
- Sox for Linux/MacOs
pip install sox
- moviepy
pip install moviepy
- pympi
pip install pympi-ling
Mover todos los archivos a procesar a la carpeta input
Los archivos .mp4 serán transformados a .wav automáticamente, para evitar la conversión se usa la flag --use_wav True
Abre la consola desde el repositorio clonado. Puedes usar el comando cd
cd ./path/Marcador-Elan
La siguiente línea de comando ejecutará el programa y marcará en la línea de tiempo las palabras que contengan las letras 's' y 'd'
python ./marcador_elan.py
--filters
: Lista de strings a filtrar (usar minúsculas)
python ./marcador_elan.py --filters s d asa
--input_folder
: Carpeta con los archivos de entrada
python ./marcador_elan.py --input_folder mp4_folder
--output_folder
: Carpeta con los archivos de salida
python ./marcador_elan.py --output_folder elan_folder
--save_temp
: Guardar archivos temporales
python ./marcador_elan.py --save_temp
--use_wav
: Saltar la conversión de .wav a .mp4
python ./marcador_elan.py --use_wav
--name_model
: Seleccionar modelo de conversión
python ./marcador_elan.py --name_model medium
--language
: Seleccionar el idioma del audio (--help para ver la lista) (default: Spanish)
python ./marcador_elan.py --language en
Los archivos generados se encontrarán en la carpeta output
- whisper-timestamped: Multilingual Automatic Speech Recognition with word-level timestamps and confidence (License AGPL-3.0).
- whisper: Whisper speech recognition (License MIT).
- dtw-python: Dynamic Time Warping (License GPL v3).
- json-to-elan: Tools and scripts for working with ELAN (License Apache-2.0).
Lucas Mesías | Joaquín Salidivia | Nicolás Aguilera
Si incorporas esto en tu investigación, haz referencia al repositorio como fuente.
@misc{mesias2023marcadorelan,
author = {Mesías, Lucas and Saldivia, Joaquín and Aguilera, Nicolás},
month = {6},
title = {Marcador-elan},
url = {https://github.com/Klefur/Marcador-Elan/},
publisher={GitHub},
year = {2023}
}
Whisper-timestamped:
@misc{lintoai2023whispertimestamped,
title={whisper-timestamped},
author={Louradour, J{\'e}r{\^o}me},
journal={GitHub repository},
year={2023},
publisher={GitHub},
howpublished = {\url{https://github.com/linto-ai/whisper-timestamped}}
}
OpenAI Whisper paper:
@article{radford2022robust,
title={Robust speech recognition via large-scale weak supervision},
author={Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
journal={arXiv preprint arXiv:2212.04356},
year={2022}
}
Dynamic-Time-Warping:
@article{JSSv031i07,
title={Computing and Visualizing Dynamic Time Warping Alignments in R: The dtw Package},
author={Giorgino, Toni},
journal={Journal of Statistical Software},
year={2009},
volume={31},
number={7},
doi={10.18637/jss.v031.i07}
}