| import numpy as np | |
| import noisereduce as nr | |
| import soundfile as sf | |
| from pydub import AudioSegment | |
| import io | |
| def preprocess_audio(file_bytes): | |
| # Charger l'audio | |
| audio = AudioSegment.from_file(io.BytesIO(file_bytes)) | |
| # Convertir en mono, 16kHz | |
| audio = audio.set_channels(1).set_frame_rate(16000) | |
| # Exporter en wav bytes | |
| wav_io = io.BytesIO() | |
| audio.export(wav_io, format='wav') | |
| wav_io.seek(0) | |
| # Charger en numpy | |
| y, sr = sf.read(wav_io) | |
| # Réduction de bruit | |
| y_denoised = nr.reduce_noise(y=y, sr=sr) | |
| # Sauvegarder en wav bytes | |
| out_io = io.BytesIO() | |
| sf.write(out_io, y_denoised, sr, format='WAV') | |
| out_io.seek(0) | |
| return out_io |