| import whisper | |
| import os | |
| import streamlit as st | |
| import time | |
| def load_whisper_model(model_name="base"): | |
| # Create a placeholder for notifications | |
| notify = st.empty() | |
| notify.info(f"Loading Whisper '{model_name}' model for transcription... This may take a moment.", icon="⏳") | |
| whisper_model = whisper.load_model(model_name) | |
| notify.success(f"Whisper '{model_name}' model loaded successfully!") | |
| time.sleep(2) # Show success for 2 seconds | |
| notify.empty() # Clear the notification | |
| return whisper_model | |
| whisper_model_instance = load_whisper_model("base") | |
| def transcribe_audio(audio_path): | |
| try: | |
| result = whisper_model_instance.transcribe(audio_path) | |
| return result["text"] | |
| except Exception as e: | |
| st.error(f"Error during Whisper transcription: {e}") | |
| return "" # Return empty string if transcription fails | |
| # @st.cache_resource | |
| # def load_whisper_model(model_name="base"): | |
| # status_placeholder = st.empty() | |
| # with status_placeholder.status(f"Loading Whisper '{model_name}' model...", expanded=True) as status: | |
| # st.write("Initializing model download and setup...") | |
| # try: | |
| # whisper_model = whisper.load_model(model_name) | |
| # status.update(label=f"Whisper '{model_name}' model loaded successfully!", state="complete", expanded=False) | |
| # # st.session_state is available even in cached functions if they are part of the app's scope | |
| # st.session_state['whisper_model_loaded'] = True | |
| # return whisper_model | |
| # except Exception as e: | |
| # status.update(label=f"Error loading Whisper '{model_name}' model: {e}", state="error") | |
| # st.error("Model loading failed! Please check your internet connection or try again.") | |
| # st.session_state['whisper_model_loaded'] = False # Mark as failed | |
| # raise # Re-raise the exception to propagate it | |
| # # Load the desired Whisper model globally within this module | |
| # whisper_model_instance = load_whisper_model("base") | |
| # def transcribe_audio(audio_path): | |
| # """ | |
| # Transcribes the audio file. | |
| # """ | |
| # try: | |
| # result = whisper_model_instance.transcribe(audio_path) | |
| # return result["text"] | |
| # except Exception as e: | |
| # st.error(f"Error during Whisper transcription: {e}") | |
| # return "" | |
| # @st.cache_resource | |
| # def load_whisper_model(model_name="base"): | |
| # # st.info(f"Loading Whisper '{model_name}' model for transcription... This may take a moment.", icon="⏳") | |
| # whisper_model = whisper.load_model(model_name) | |
| # # st.success(f"Whisper '{model_name}' model loaded successfully!") | |
| # return whisper_model | |
| # whisper_model_instance = load_whisper_model("base") | |
| # def transcribe_audio(audio_path): | |
| # try: | |
| # result = whisper_model_instance.transcribe(audio_path) | |
| # return result["text"] | |
| # except Exception as e: | |
| # st.error(f"Error during Whisper transcription: {e}") | |
| # return "" # Return empty string if transcription fails | |
| # @st.cache_resource | |
| # def load_whisper_model(model_name="base"): | |
| # with st.status(f"Loading Whisper '{model_name}' model...", expanded=True) as status: | |
| # st.write("Initializing model download and setup...") | |
| # try: | |
| # whisper_model = whisper.load_model(model_name) | |
| # # Update the status once complete | |
| # status.update(label=f"Whisper '{model_name}' model loaded successfully!", state="complete", expanded=False) | |
| # return whisper_model | |
| # except Exception as e: | |
| # # Update the status on error | |
| # status.update(label=f"Error loading Whisper '{model_name}' model: {e}", state="error") | |
| # st.error("Model loading failed! Please check your internet connection or try again.") | |
| # raise # Re-raise the exception to propagate it | |
| # # Load the desired Whisper model globally within this module | |
| # whisper_model_instance = load_whisper_model("base") | |
| # def transcribe_audio(audio_path): | |
| # try: | |
| # result = whisper_model_instance.transcribe(audio_path) | |
| # return result["text"] | |
| # except Exception as e: | |
| # st.error(f"Error during Whisper transcription: {e}") | |
| # return "" |