File size: 1,904 Bytes
755d2a6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
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() |