Quiero escribir un código que reproduzca 10 segundos de audio, luego pause durante 15 segundos y luego reproduzca los siguientes 10 segundos, etc. ¿Cómo lo haría?

La forma más rápida y sencilla de hacerlo es usar un reproductor multimedia que admita opciones de línea de comandos.

mpv es mi elección para la reproducción de medios de uso general, y estoy usando FFmpeg para extraer la duración del audio.

Antes de entrar en los detalles de mi solución propuesta, debe saber que mpv admite enlaces de teclas que también podrían ser suficientes para ayudar en las tareas de transcripción / traducción:

Izquierda y derecha
Busque hacia atrás / adelante 5 segundos. Shift + flecha realiza una búsqueda exacta de 1 segundo (ver –hr-seek).

Arriba y abajo
Busque hacia adelante / hacia atrás 1 minuto. Shift + flecha realiza una búsqueda exacta de 5 segundos (ver –hr-seek).

[y]
Disminuya / aumente la velocidad de reproducción actual en un 10%.

{y}
Reducir a la mitad la velocidad de reproducción actual.

Retroceso
Restablezca la velocidad de reproducción a la normal.

p / ESPACIO
Pausa (presionar nuevamente para pausar).

Utilizo Linux como mi sistema operativo principal, pero MPV es multiplataforma, por lo que debería poder obtenerlo para cualquier sistema operativo que esté ejecutando. El siguiente es un script de shell rápido con valores estáticos que hace lo que solicitó.

#! / bin / bash

# Variables
# Archivo de audio que queremos transcribir / traducir
playfile = ~ / sample.mp3
# Longitud calculada de nuestro audio, en segundos
longitud_total = $ (($ (ffprobe -i “$ {playfile}” -show_format -v quiet | grep Duration | cut -d “=” -f2 | cut -d “.” -f1) + 1))
# Posición de juego actual
curr_pos = 0
# Longitud del segmento que queremos escuchar
paso = 10
# Pausa de longitud
pausa = 15
# Duración del búfer para volver a la reproducción de cada segmento
buffer = 2

# Bucle principal, ciclos hasta que hayamos terminado
# mientras nuestra posición de juego actual está dentro de la longitud de la muestra
mientras que [$ {curr_pos} -lt $ {total_length}]; hacer
mpv –start = $ {curr_pos} –length = $ {step} “$ {playfile}”
dormir $ {pausa}
curr_pos = $ (($ {curr_pos} + $ {step} – $ {buffer}))
hecho

Si está utilizando una Mac, debería ser trivial adaptarse. Si está utilizando Windows, no debería ser demasiado complejo, pero no puedo ayudarlo allí.

Espero eso ayude.

Según tengo entendido, básicamente quieres que algo disminuya la velocidad del habla para que no tengas que retroceder. ¿Qué pasa con el uso de una herramienta de sonido gratuita como Audacity para estirar el tiempo de la muestra, es decir, que suena un poco más lento pero no cambia el tono? No puede volverse loco con eso porque comienza a obtener demasiada distorsión, pero creo que podría reducir la velocidad lo suficiente para fines de transcripción, sin que las palabras se corten como lo harían con su enfoque. Aquí hay un artículo sobre cómo hacer esto: http://blog.audioacrobat.com/201