sound_music / app.py
eldavid's picture
Update app.py
47bbe5d verified
raw
history blame contribute delete
No virus
1.6 kB
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