jiaaro / pydub

Manipulate audio with a simple and easy high level interface
http://pydub.com
MIT License
8.82k stars 1.04k forks source link

Pydub Library Support - Performance Issues in .mp3 to .wav Conversion #812

Open marcelo061981 opened 1 month ago

marcelo061981 commented 1 month ago

Dear Robert,

Good morning.

I am reaching out to request assistance regarding a performance issue we've encountered with the pydub library.

In our operations, we convert .mp3 audio files to .wav format for transcription and analysis. Recently, we've noticed a significant drop in performance during the conversion process. We tested the process on different machines to rule out hardware issues, but the slowdown persists.

If there are any updates or solutions available, we would greatly appreciate it if you could share them with us.


import os import configparser from pydub import AudioSegment

diretorio_entrada = 'DownloadsNXT' diretorio_saida = 'Arquivos_Audio'

os.makedirs(diretorio_saida, exist_ok=True)

arquivos_mp3 = [f for f in os.listdir(diretorio_entrada) if f.endswith('.mp3')]

taxa_amostragem = 44100 config = configparser.ConfigParser() config.read('par.ini') duracao_segmento_ms = int(config.get('Geral', 'duracao_segmento_ms'))

total_arquivos = len(arquivos_mp3)

for arquivo_index, arquivo_mp3 in enumerate(arquivos_mp3, start=1): caminho_mp3 = os.path.join(diretorio_entrada, arquivo_mp3) audio = AudioSegment.from_mp3(caminho_mp3)

contador_arquivo = 1

for inicio_segmento in range(0, len(audio), duracao_segmento_ms):
    segmento = audio[inicio_segmento:inicio_segmento + duracao_segmento_ms]

    nome_base = os.path.splitext(arquivo_mp3)[0]

    nome_saida = f'{nome_base}-{contador_arquivo:04d}.wav'  # Usando :04d para formatar o índice com 4 dígitos

    caminho_saida = os.path.join(diretorio_saida, nome_saida)
    segmento.export(caminho_saida, format='wav', codec='libvorbis', parameters=['-ar', str(taxa_amostragem)])

    nome_formatado = f'{nome_saida}'

    print(f'Convertendo: {nome_formatado} (Contagem Geral: {arquivo_index}/{total_arquivos})')

   contador_arquivo += 1

print("\nProcesso de Conversão Finalizado com sucesso...")


Best regards,

Marcelo Lima