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