File size: 1,603 Bytes
c98921d
4875d3e
a2dc581
4875d3e
c98921d
a2dc581
 
4875d3e
c98921d
4875d3e
 
 
a2dc581
4875d3e
 
a2dc581
4875d3e
c98921d
4875d3e
 
 
 
 
 
 
 
 
 
c98921d
 
7fb6824
4875d3e
47bbe5d
4875d3e
 
 
7fb6824
 
a2dc581
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
import gradio as gr
import librosa
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import torch

# Carregar o modelo e o processador pré-treinados para reconhecimento de fala
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-960h")

def transcribe_audio(audio_file):
    # Carregar o arquivo de áudio
    y, sr = librosa.load(audio_file, sr=16000)  # Wav2Vec2 espera áudio com taxa de amostragem de 16kHz
    input_values = processor(y, return_tensors="pt", padding="longest").input_values
    logits = model(input_values).logits
    predicted_ids = torch.argmax(logits, dim=-1)
    transcription = processor.batch_decode(predicted_ids)[0]
    return transcription

def identify_song_and_lyrics(audio_file):
    transcription = transcribe_audio(audio_file)
    # Placeholder para lógica de identificação da música e obtenção das letras e cifras
    song_info = {
        "title": "Título da Música (Placeholder)",
        "artist": "Artista (Placeholder)",
        "lyrics": transcription,  # Usar a transcrição como placeholder
        "chords": "Cifra (Placeholder)"
    }
    return song_info

# Configurar a interface Gradio
iface = gr.Interface(
    fn=identify_song_and_lyrics,
    inputs=gr.Audio(type="file"),
    outputs="json",
    title="Identificação de Música e Exibição de Letras e Cifras",
    description="Carregue um arquivo de áudio para identificar a música e visualizar a cifra e a letra."
)

iface.launch(share=True)  # share=True para gerar um link público