Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from deep_translator import GoogleTranslator | |
| from gtts import gTTS | |
| from pydub import AudioSegment | |
| import tempfile | |
| import os | |
| import speech_recognition as sr | |
| import css | |
| from voice import transcribe | |
| from transformers import pipeline as pl | |
| # from speechbrain.pretrained import EncoderClassifier | |
| # @st.cache_resource | |
| # def load_emotion_model(): | |
| # return EncoderClassifier.from_hparams( | |
| # source="emotion_model_local", | |
| # savedir="tmp_emotion_model" | |
| # ) | |
| # emotion_model = load_emotion_model() | |
| # def detect_emotion(uploaded_file): | |
| # # Save the uploaded file temporarily | |
| # # Use a more robust way to handle the temporary file lifecycle | |
| # with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file: | |
| # tmp_file.write(uploaded_file.getvalue()) | |
| # raw_path = tmp_file.name | |
| # try: | |
| # audio = AudioSegment.from_file(raw_path) | |
| # audio = audio.set_frame_rate(16000).set_channels(1) | |
| # audio.export(raw_path, format="wav") | |
| # # Predict emotion using the cleaned file | |
| # # Ensure the path is passed as a standard string | |
| # result = emotion_model.classify_file(str(raw_path)) | |
| # predicted_emotion = result[3][0] | |
| # return predicted_emotion | |
| # finally: | |
| # # Clean up the temporary file | |
| # if os.path.exists(raw_path): | |
| # os.remove(raw_path) | |
| def tone(): | |
| st.session_state.analyse=False | |
| st.markdown('<div class="middle">', unsafe_allow_html=True) | |
| with st.session_state.mid_col: | |
| css.cicle_button() | |
| if st.button("Translate"): | |
| st.session_state.analyse=True | |
| st.markdown('</div>', unsafe_allow_html=True) | |
| with st.session_state.right_col: | |
| if st.session_state.analyse: | |
| if st.session_state.inp != "Text": | |
| st.session_state.text = transcribe(st.session_state.uploaded_file) | |
| st.write(" ") | |
| st.write(" ") | |
| st.write(" ") | |
| with st.form("Tone_form"): | |
| if st.session_state.text !="" and st.session_state.text != " ": | |
| pipe = pl("text-classification", model="tabularisai/multilingual-sentiment-analysis") | |
| sentence = st.session_state.text | |
| result = pipe(sentence)[0] | |
| sentiment = result['label'] | |
| if sentiment == "Very Negative": | |
| st.error('This is Very Negative', icon="π¨") | |
| elif sentiment == "Negative": | |
| st.error('This is Negative', icon="π") | |
| elif sentiment == "Neutral": | |
| st.warning('This is Neutral', icon="π") | |
| elif sentiment == "Positive": | |
| st.success('This is Positive', icon="π") | |
| else: | |
| st.success('This is Very Positive', icon="π") | |
| else: | |
| st.warning("write something first") | |
| reset = st.form_submit_button("Reset β» ") | |
| if reset: | |
| st.session_state.analyse= False | |
| # if st.session_state.inp != "Text": | |
| # text = transcribe(st.session_state.uploaded_file) | |
| # if text !="" and text != " ": | |
| # emotion = detect_emotion(st.session_state.uploaded_file) | |
| # st.write(f"π Detected Emotion: `{emotion}`") |