demorrha / core /audio_isolation.py
rick
add audio isolation feature
b9f059b unverified
raw
history blame
1.78 kB
#!/usr/bin/env python3
#coding: utf-8
# FEATURE:
# Removes background noise from audio
# REQUIREMENT:
# That use the ELEVENLABS API
from typing import Optional
from typing import Union
from typing import IO
from typing import List
from typing import Dict
from typing import Any
import requests
import json
import os
import tempfile
from io import BytesIO
from pydub import AudioSegment
from dotenv import load_dotenv
from elevenlabs import ElevenLabs
def isolate_audio(fichier_audio: str):
load_dotenv()
client = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
buffer = BytesIO()
with open(fichier_audio, 'rb') as audio_file:
isolated_audio_iterator = client.audio_isolation.audio_isolation(audio=audio_file)
for chunk in isolated_audio_iterator:
buffer.write(chunk)
buffer.seek(0)
return buffer
#if __name__ == "__main__":
# buffer = isolate_audio("audio.mp3")
# with open("audio_isole.mp3", "wb") as output_file:
# output_file.write(buffer.read())
def isolate_audio(audio: AudioSegment) -> AudioSegment:
"""
Isoler la voix dans un extrait audio.
Args:
audio (AudioSegment): L'audio original.
Returns:
AudioSegment: L'audio avec la voix isolée.
"""
# Implémentez ici votre algorithme d'isolation
# Par exemple, utiliser un filtre passe-bande pour conserver les fréquences vocales
# Ceci est un exemple simplifié
# Définir les fréquences de coupure pour la voix humaine
low_freq = 80 # Fréquence minimale en Hz
high_freq = 3000 # Fréquence maximale en Hz
# Appliquer le filtre passe-bande
isolated_audio = audio.low_pass_filter(high_freq).high_pass_filter(low_freq)
return isolated_audio