File size: 1,510 Bytes
2931768
461ed82
2931768
 
65071f8
 
461ed82
 
 
 
 
65071f8
 
 
 
 
461ed82
 
 
 
 
 
 
 
2931768
461ed82
 
 
2931768
461ed82
 
 
 
 
2931768
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461ed82
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
44
45
46
47
48
49
50
51
52
53
54
import json
import os
import requests
import json
import streamlit as st

EXAMPLE_PATH = []
for f in os.listdir('data/'):
    EXAMPLE_PATH.append(f)

st.sidebar.image('img/love_emoji_128.png')
st.sidebar.title('EMOVoice')
st.sidebar.write('Welcome to EMOVoice, a tool for Speech Emotion Recognition based on the Wav2Vec2 model.')

st.title('EMOVoice')
st.write("This is a work in progress, stay tuned!")

st.sidebar.subheader('Model input')
input_mode = st.sidebar.radio('Select your input mode:', ['Upload audio', 'Select example'])

file = None

if input_mode == 'Upload audio':
    file = st.sidebar.file_uploader("Choose a file", type=['mp3', 'mp4', 'wav', 'flac'])
    file_size = file.size if file else None
elif input_mode == 'Select example':
    example_selected = st.sidebar.selectbox('Choose an audio example', EXAMPLE_PATH)
    file = open('data/' + example_selected, 'rb')
    file_size = os.stat('data/' + example_selected).st_size

if file is not None:
    st.write('Audio added!')
    audio_bytes = file.read()
    st.audio(audio_bytes)


    url = "https://api-inference.huggingface.co/models/ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition"

    payload=file
    headers = {
        'Content-Type': 'audio/mp3',
        'Authorization': 'Bearer ' + st.secrets['API_TOKEN']
    }

    response = requests.request("POST", url, headers=headers, data=audio_bytes)

    response.request

    decoded_response = json.loads(response.text)
    st.write(decoded_response)


    file.close()