es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dividir audio sin pydub.

Necesito dividir un archivo mp3 en trozos de 30 segundos sin pydub.
El archivo tiene una duración de 3:38 y la última parte no debe ser de 30 segundos, solo se debe cortar cada 30 segundos.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Dividir MP3 en fragmentos de 30 segundos sin Pydub

    Si desea dividir un archivo MP3 en fragmentos de 30 segundos sin utilizar la biblioteca Pydub, puede lograrlo mediante el uso de la biblioteca estándar de Python. Aquí están los pasos a seguir:

    1. Instalar el módulo wave
      Para trabajar con archivos de audio en Python, necesitamos utilizar el módulo wave. Para instalarlo, abra su terminal o símbolo del sistema y ejecute el comando:
    pip install wave
    
    1. Abrir el archivo MP3
      Para abrir el archivo MP3, necesitamos utilizar el método wave.open. Pasamos el nombre del archivo y modo “rb” (leer en binario) a él.
    import wave
    
    nombre_archivo = "ejemplo.mp3"
    with wave.open(nombre_archivo, 'rb') as archivo_wave:
        # código para dividir archivo de audio
    
    1. Establecer parámetros
      Una vez que el archivo está abierto, debemos establecer algunos parámetros, como el número de canales de audio, el ancho de muestra, la velocidad de cuadro y el número de fotogramas. Estos parámetros son esenciales para calcular la duración del archivo de audio.
    # establecer parámetros
    canales = archivo_wave.getnchannels()
    ancho = archivo_wave.getsampwidth()
    velocidad_cuadro = archivo_wave.getframerate()
    fotogramas = archivo_wave.getnframes()
    
    1. Calcular la duración
      Para calcular la duración del archivo de audio, dividimos el número de fotogramas por la velocidad de fotogramas.
    # calcular duración
    duracion = fotogramas / float(velocidad_cuadro)
    
    1. Dividir el audio
      Después de calcular la duración del archivo de audio, ahora podemos dividirlo en fragmentos de 30 segundos. Primero, definimos una variable para almacenar la posición de inicio del fragmento de audio. Luego, recorremos la duración del archivo de audio y extraemos fragmentos de audio de 30 segundos.
    # dividir audio
    pos_inicio = 0
    pos_fin = velocidad_cuadro * 30 # 30 segundos
    for i in range(0, int(duracion // 30)):
        nombre_dividido = f"fragmento{i}.mp3"
        with open(nombre_dividido, "wb") as archivo_salida:
            nuevo_wave = wave.open(archivo_salida, "wb")
            nuevo_wave.setparams((canales, ancho, velocidad_cuadro, pos_fin - pos_inicio, "NONE", "not compressed"))
            archivo_wave.setpos(pos_inicio)
            nuevo_wave.writeframes(archivo_wave.readframes(pos_fin - pos_inicio))
            pos_inicio = pos_fin # establecer posición de inicio para el próximo fragmento
            pos_fin += velocidad_cuadro * 30 # establecer posición de fin para el próximo fragmento
    

    En el bucle, definimos un nuevo nombre de archivo para cada fragmento y escribimos los fotogramas del archivo de audio original en el nuevo archivo. Después de escribir los fotogramas, establecemos las nuevas posiciones de inicio y fin para el siguiente fragmento.

    Este código creará varios archivos de audio, cada uno conteniendo 30 segundos de datos de audio, excepto el último fragmento, que puede ser más corto que 30 segundos.

Comments are closed.