File size: 1,780 Bytes
3db4aa1
 
 
 
 
 
 
 
 
 
6931c04
3db4aa1
 
 
 
 
 
 
6931c04
b9f059b
3db4aa1
 
 
 
6931c04
 
 
 
3db4aa1
 
6931c04
 
 
 
 
 
 
 
 
99b2725
 
 
 
 
b9f059b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
66
67
#!/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