File size: 1,372 Bytes
31b3285
ec7471c
b457f96
 
31b3285
ec7471c
 
3d74153
b457f96
 
 
 
 
 
ec7471c
 
 
 
6f473bc
7d671a1
ec7471c
110b7d6
ec7471c
 
b457f96
6f473bc
ec7471c
 
b457f96
31b3285
ec7471c
 
 
b457f96
 
 
ec7471c
 
6f473bc
 
 
b457f96
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
41
42
43
import streamlit as st
from transformers import pipeline
from pydub import AudioSegment
import io

# Load the audio classification pipeline
audio_classification_pipeline = pipeline("audio-classification", model="MIT/ast-finetuned-audioset-10-10-0.4593")

def convert_mp3_to_wav(audio_bytes):
    # Convert MP3 bytes to WAV format
    audio = AudioSegment.from_file(io.BytesIO(audio_bytes), format="mp3")
    wav_bytes = audio.export(format="wav").read()
    return wav_bytes

def classify_audio(audio_file):
    # Perform audio classification
    results = audio_classification_pipeline(audio=audio_file)
    return results

def main():
    st.title('Hugging Face Audio Classification')

    # File uploader for audio file
    st.subheader('Upload Audio File:')
    audio_file = st.file_uploader("Choose an MP3 file", type=["mp3"])

    # Check if audio file is uploaded
    if audio_file is not None:
        st.audio(audio_file, format='audio/mp3')

        # Button to classify audio
        if st.button('Classify'):
            with st.spinner('Classifying...'):
                # Convert MP3 to WAV and classify
                wav_bytes = convert_mp3_to_wav(audio_file.read())
                results = classify_audio(wav_bytes)
            st.success('Classification complete!')
            st.write("Prediction:", results)

if __name__ == '__main__':
    main()