import pandas as pd import os import librosa import soundfile as sf from tqdm import tqdm # --- Configurações --- TARGET_SR = 16000 # Caminhos de entrada BASE_DATA_PATH = '../data/cml/' METADATA_FILE = os.path.join(BASE_DATA_PATH, 'dev_and_test.csv') # Caminho de saída OUTPUT_PATH = '../dataset_preparado/test' OUTPUT_BR_PATH = os.path.join(OUTPUT_PATH, 'pt_br') OUTPUT_PT_PATH = os.path.join(OUTPUT_PATH, 'pt_pt') # --- Mapeamento de Labels --- ACCENT_MAP = { 'BR': 'pt_br', 'EU': 'pt_pt' } PATH_MAP = { 'pt_br': OUTPUT_BR_PATH, 'pt_pt': OUTPUT_PT_PATH } def preprocess_cml(): print("Iniciando o pré-processamento do CML...") os.makedirs(OUTPUT_BR_PATH, exist_ok=True) os.makedirs(OUTPUT_PT_PATH, exist_ok=True) try: df = pd.read_csv(METADATA_FILE, sep='|') except FileNotFoundError: print(f"Erro: Arquivo de metadados não encontrado em {METADATA_FILE}") return df = df[['wav_filename', 'accent']].dropna() df = df[df['accent'].isin(ACCENT_MAP.keys())] df['label'] = df['accent'].map(ACCENT_MAP) counters = {'pt_br': 0, 'pt_pt': 0} for _, row in tqdm(df.iterrows(), total=df.shape[0], desc="Processando áudios"): label = row['label'] source_audio_path = os.path.join(BASE_DATA_PATH, row['wav_filename']) filename = row['wav_filename'].replace('/', '_') dest_path = os.path.join(PATH_MAP[label], f"cml_{filename}") try: audio, sr = librosa.load(source_audio_path, sr=TARGET_SR, mono=True) sf.write(dest_path, audio, TARGET_SR) counters[label] += 1 except Exception as e: print(f"Aviso: Não foi possível processar {source_audio_path}. Erro: {e}") print("\nPré-processamento do CML concluído!") print(f"Amostras salvas (balanceado): {counters}") if __name__ == '__main__': preprocess_cml()