Si alguna vez quisiste cambiar el tono de una canción sin alterar su velocidad, esta publicación de blog es para ti. El cambio de tono es una tarea común para músicos, DJ e ingenieros de audio. En este tutorial, exploraremos cómo bajar el tono de una canción usando Python y la biblioteca pydub y aplicar este proceso a varias canciones en una carpeta automáticamente.
En música, el cambio de tono significa cambiar el tono de una canción (subirlo o bajarlo) sin acelerarlo ni ralentizarlo. Esto puede ser útil para:
Hacer coincidir la clave de una canción con otra pista
Transponer canciones para instrumentos afinados en una clave diferente
Creación de remezclas o mashups
Usaremos la biblioteca de Python pydub para manipular archivos de audio. Puedes instalarlo usando pip:
pip install pydub
Además, pydub requiere ffmpeg para manejar archivos de audio como MP3. Puedes instalar ffmpeg a través de la terminal:
sudo apt install ffmpeg
Ahora profundicemos en el script de Python que automatiza el cambio de tono para varias canciones en una carpeta. El script recorre los archivos en una carpeta de canciones, los baja medio tono (semitono = -1) y guarda los nuevos archivos en una carpeta de salida.
import os from pydub import AudioSegment # Function to shift pitch down def pitch_shift(audio, semitones): # Adjust sample rate to shift pitch new_sample_rate = int(audio.frame_rate * (2.0 ** (semitones / 12.0))) return audio._spawn(audio.raw_data, overrides={'frame_rate': new_sample_rate}).set_frame_rate(audio.frame_rate) # Input and output folders input_folder = './songs' output_folder = './output' # Ensure the output folder exists os.makedirs(output_folder, exist_ok=True) # Loop through all files in the songs folder for filename in os.listdir(input_folder): # Check if the file is an audio file (e.g., mp3 or wav) if filename.endswith(".mp3") or filename.endswith(".wav"): # Construct the full file path input_path = os.path.join(input_folder, filename) output_path = os.path.join(output_folder, filename) # Load the audio file audio = AudioSegment.from_file(input_path) # Shift pitch down by a half-step (semitone = -1) shifted_audio = pitch_shift(audio, -1) # Export the pitch-shifted audio to the output folder shifted_audio.export(output_path, format="mp3") print(f"Processed and saved: {output_path}")
Importación de bibliotecas:
Importamos sistema operativo para trabajar con directorios de archivos y AudioSegment desde pydub para manipular archivos de audio.
Función de cambio de tono:
La función pitch_shift ajusta la frecuencia de muestreo del audio. Cuando cambiamos la frecuencia de muestreo, el tono cambia. En este caso, calculamos la nueva frecuencia de muestreo para bajar el tono un semitono usando la fórmula:
new_sample_rate = int(audio.frame_rate * (2.0 ** (semitonos / 12.0)))
Carpetas de entrada y salida:
Definimos las carpetas donde leeremos los archivos de audio y guardaremos las versiones con cambio de tono. Si la carpeta de salida no existe, se creará.
Recorrido en bucle de canciones:
Usando os.listdir(), recorremos cada archivo en la carpeta de canciones. El script comprueba si el archivo es un archivo de audio (.mp3 o .wav) antes de procesarlo. Para cada archivo:
Exportación y comentarios:
Una vez finalizado el procesamiento, la canción con el tono cambiado se guarda en la carpeta de salida y se imprime un mensaje de confirmación.
Asegúrate de tener tus archivos de audio en la carpeta de canciones y luego ejecuta el script:
python -m pitch_down.py
Los archivos con cambio de tono se guardarán en la carpeta de salida.
Puedes modificar fácilmente este script para:
Sube el tono del audio pasando un valor positivo (p. ej., pitch_shift(audio, 1) para subir medio tono).
Procese diferentes formatos de archivo agregando otras extensiones como .ogg o .flac a la verificación condicional.
Cambie un número diferente de semitonos ajustando el argumento de los semitonos.
Este script es una forma simple pero poderosa de cambiar el tono de múltiples archivos de audio usando Python. Con pydub y ffmpeg, puedes manipular archivos de audio de forma masiva, lo que facilita tareas como la corrección de tono o la preparación de audio para músicos, productores o cualquier persona que trabaje con audio.
Siéntete libre de experimentar con este script y ver cómo puedes adaptarlo a tus necesidades. ¡Feliz codificación!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3