Se você sempre quis mudar o tom de uma música sem alterar sua velocidade, esta postagem do blog é para você. A mudança de tom é uma tarefa comum para músicos, DJs e engenheiros de áudio. Neste tutorial, exploraremos como diminuir o tom de uma música usando Python e a biblioteca pydub e aplicar esse processo a várias músicas em uma pasta automaticamente.
Na música, mudança de tom significa mudar o tom de uma música (aumentando ou diminuindo) sem acelerá-la ou desacelerá-la. Isso pode ser útil para:
Combinando o tom de uma música com outra faixa
Transposição de músicas para instrumentos afinados em um tom diferente
Criando remixes ou mashups
Usaremos a biblioteca Python pydub para manipular arquivos de áudio. Você pode instalá-lo usando pip:
pip install pydub
Além disso, o pydub requer o ffmpeg para lidar com arquivos de áudio como MP3. Você pode instalar o ffmpeg através do terminal:
sudo apt install ffmpeg
Agora vamos mergulhar no script Python que automatiza a mudança de tom para várias músicas em uma pasta. O script percorre os arquivos em uma pasta de músicas, diminui o tom deles em meio tom (semitom = -1) e salva os novos arquivos em uma pasta de saída.
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}")
Importando bibliotecas:
Importamos os para trabalhar com diretórios de arquivos e AudioSegment do pydub para manipular arquivos de áudio.
Função Pitch-Shift:
A função pitch_shift ajusta a taxa de amostragem do áudio. Quando alteramos a taxa de amostragem, o tom muda. Neste caso, calculamos a nova taxa de amostragem para diminuir o tom em um semitom usando a fórmula:
new_sample_rate = int(audio.frame_rate * (2,0 ** (semitons / 12,0)))
Pastas de entrada e saída:
Definimos as pastas onde leremos os arquivos de áudio e salvaremos as versões com pitch shifted. Se a pasta de saída não existir, ela será criada.
Loop pelas músicas:
Usando os.listdir(), percorremos cada arquivo na pasta de músicas. O script verifica se o arquivo é um arquivo de áudio (.mp3 ou .wav) antes de processá-lo. Para cada arquivo:
Exportação e feedback:
Assim que o processamento for concluído, a música com afinação alterada é salva na pasta de saída e uma mensagem de confirmação é impressa.
Certifique-se de ter seus arquivos de áudio na pasta de músicas e execute o script:
python -m pitch_down.py
Os arquivos com pitch shift serão salvos na pasta de saída.
Você pode facilmente modificar este script para:
Aumente o áudio passando um valor positivo (por exemplo, pitch_shift(audio, 1) para meio tom acima).
Processe diferentes formatos de arquivo adicionando outras extensões como .ogg ou .flac à verificação condicional.
Mude um número diferente de semitons ajustando o argumento de semitons.
Este script é uma maneira simples, mas poderosa, de alterar o tom de vários arquivos de áudio usando Python. Com pydub e ffmpeg, você pode manipular arquivos de áudio em massa, facilitando tarefas como correção de tom ou preparação de áudio para músicos, produtores ou qualquer pessoa que trabalhe com áudio.
Sinta-se à vontade para experimentar este script e ver como você pode adaptá-lo às suas necessidades. Boa codificação!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3