ConcertBuddy / app.py
keivalya's picture
Update app.py
6113e88 verified
raw
history blame
2.72 kB
import gradio as gr
from gradio.themes import Soft
import os
# from dotenv import load_dotenv
from transcript import transcribe_audio # Import the transcription function
import numpy as np
import requests
from scipy.io.wavfile import write
# Load environment variables from .env file
# load_dotenv()
def analyze_song(mp3_file):
# Call the transcription function and get the transcription
transcription = transcribe_audio(mp3_file) # Pass the mp3 filename to transcript.py
os.makedirs("out", exist_ok=True)
write('test.wav', audio[0], audio[1])
data = {
'api_token': '171afdabea68ffcdbd7f102b8611ac63',
'return': 'apple_music,spotify',
}
files = {
'file': open('test.wav', 'rb'),
}
result = requests.post('https://api.audd.io/', data=data, files=files)
if result is not None:
artist = result.json()['result']['artist']
title = result.json()['result']['title']
genre = result.json()['result']['apple_music']['genreNames']
image_url = result.json()['result']['spotify']['album']['images'][0]['url']
else:
artist, title, genre, image_url = None, None, None, None
# Placeholder for song analysis logic
# title = "Sample Title"
# artist = "Sample Artist"
# genre = "Sample Genre"
instrumentation = "Sample Instrumentation"
lyrics = transcription # Use the transcription as lyrics
tempo_key = "Sample Tempo/Key"
history = "History"
return title, artist, genre, instrumentation, lyrics, tempo_key, mp3_file, image_url, history # Return the mp3 file for replay
# Custom CSS to set a fun musical theme image as background
css = """
body {
background-image: url('https://example.com/path/to/your/musical-theme-image.jpg'); /* Replace with your image URL */
background-size: cover; /* Cover the entire background */
background-repeat: no-repeat; /* Prevent repeating the image */
background-position: center; /* Center the image */
}
"""
demo = gr.Interface(
fn=analyze_song,
inputs=gr.Audio(label="Record Audio", type="filepath", format="mp3"), # Record audio in MP3 format
outputs=[
gr.Textbox(label="Title"),
gr.Textbox(label="Artist"),
gr.Textbox(label="Genre"),
gr.Textbox(label="Instrumentation"),
gr.Textbox(label="Lyrics"),
gr.Textbox(label="Tempo/Key"),
gr.Textbox(label="History"),
gr.Audio(label="Replay Recorded Audio") # Add an output for replaying the recorded audio
gr.Image(label="Cover") # Gives the Cover image
],
theme=Soft(), # Apply the Soft theme
title="Concert Buddy πŸ˜„πŸŽ΅πŸͺ©" # Apply custom CSS for background image
)
demo.launch()