Dividir un archivo de audio cuando el altavoz hace una pausa

Estoy buscando un programa que pueda, dado un archivo de audio que contiene la grabación del discurso de alguien, dividir el archivo de audio cada vez que el orador hace una pausa durante algún tiempo (idealmente configurable).

Preferiría que el programa pudiera:

  • procesar por lotes muchos archivos de audio.
  • divide el archivo de audio al final de cada oración (en lugar de dividirlo cada vez que el hablante se detiene durante X segundos).

Cualquier licencia, precio y sistema operativo está bien.

Para la larga espera: el caso de uso descrito es bastante parecido a la digitalización de discos de música, donde el software necesita encontrar los "huecos" para dividir las pistas. ¿Quizás se pueda engañar a dicho software para que haga el trabajo de ese "libro de audio grabado"? GramoFile era un software de este tipo, pero no estoy seguro de si todavía se mantiene.
¡Como el de Steve! Si pensabas que el mío era "aventurero", el suyo realmente me sorprendió, absolutamente razonable, ¡pero quién había pensado en eso! :)
@Izzy sí. Otra idea que exploraré pronto: github.com/jiaaro/pydub
No menciona los métodos de detección en su página principal, ¡pero suena muy interesante!
@Izzy tal vez este método: github.com/jiaaro/pydub/blob/…
Como parece que lo investigas, supongo que veremos tu respuesta si funciona :)

Respuestas (1)

Sugeriría usar MoviePy y una variación de estas 30 líneas de código que hace lo contrario para los archivos de video (detectando altos niveles de sonido para extraer y unir archivos de video para obtener lo más destacado de los partidos de fútbol) .

Los cambios necesarios serían:

  • usar AudioFileClipen lugar de VideoFileClip.
  • Busque pausas (bajos) en lugar de picos en los niveles de sonido.
  • Divida desde el final de la pausa hasta el comienzo de la siguiente en lugar de justo antes del comienzo hasta justo después del final del máximo.
  • Guarde cada división con un nombre de archivo diferente en lugar de concatenar.
  • Agregue un umbral para la duración de las pausas.

Esta solución utiliza:

  1. Python necesita ser instalado primero
  2. MoviePy : instalado con pip install MoviePy, esto también instala las siguientes bibliotecas de Python, si faltan:
    1. Es posible que los usuarios de Numpy - Windows deban descargarlo e instalarlo manualmente desde aquí .
    2. decorador
    3. imagenio
    4. Almohada
    5. olefile (solo requisito de Windows para Pillow)
    6. tqdm
  3. FFMPEG : MoviePy lo instala automáticamente en la primera ejecución si no se encuentra.

Todos los elementos mencionados anteriormente son:

  • Gratis, gratis y de código abierto
  • Multiplataforma (con la excepción de olefileque no se requiere en máquinas que no sean Windows)
  • Con licencia permisiva.
  • Compacto (las descargas de lo anterior, en orden y en mi máquina, son de 30 MB, 18 MB (incluidas las dependencias) y 48 MB)

Para detectar realmente el final de la oración en lugar de las pausas, se requeriría un enfoque mucho más complejo que involucra la conversión de voz a texto, el análisis del lenguaje natural, etc. obtenga las marcas de tiempo y extraiga el audio entre esas marcas de tiempo.