songlab-melody / app.py
ageraustine's picture
Create app.py
4bc7c2a verified
raw
history blame
1.49 kB
import streamlit as st
import librosa # Library for audio processing
def main():
"""
This function creates a Streamlit app for uploading an audio file and processing it.
"""
# Title and description
st.title("Audio Uploader and Processor")
st.write("Upload your audio file below:")
# File uploader with specific file types allowed
uploaded_file = st.file_uploader("Choose an audio file", type=["mp3", "wav"])
if uploaded_file is not None:
# Display uploaded file details
st.write("Uploaded file details:")
st.write(" - Name:", uploaded_file.name)
st.write(" - Type:", uploaded_file.type)
st.write(" - Size:", uploaded_file.size, "bytes")
# Read the audio bytes
audio_bytes = uploaded_file.read()
# Load audio as NumPy array using librosa
try:
audio, sample_rate = librosa.load(audio_bytes, sr=None) # Load without resampling
except Exception as e:
st.error(f"Error loading audio: {e}")
return
# Get the first 15 seconds of audio (assuming sample rate is available)
if sample_rate:
duration = 15
first_15_seconds = audio[:int(sample_rate * duration)]
# Display the NumPy array (optional)
# st.write("First 15 seconds as NumPy array:", first_15_seconds)
# You can now perform further processing on the 'first_15_seconds' array
# ...
else:
st.warning("Could not determine sample rate. Skipping 15-second extraction.")
if __name__ == "__main__":
main()