SEMA / app.py
KABURAKURIA's picture
Update app.py
c671fbb verified
import os
import streamlit as st
import whisper
import time
from pydub import AudioSegment
import subprocess
# Function to check if ffmpeg is installed
def check_ffmpeg():
try:
subprocess.run(['ffmpeg', '-version'], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return True
except subprocess.CalledProcessError:
return False
# Run the setup script to install ffmpeg if not installed
if not check_ffmpeg():
st.write("Installing ffmpeg...")
os.system('bash setup.sh')
st.write("ffmpeg installed successfully!")
# Load the Whisper model
model = whisper.load_model("base")
# Title of the Streamlit app
st.title("SEMA TRANSCRIPTION AI")
# Check if ffmpeg is installed
if check_ffmpeg():
# Upload audio file
audio_file = st.file_uploader("Upload an audio file", type=["mp3", "wav", "m4a"])
if audio_file is not None:
# Save the uploaded file to disk
with open("uploaded_audio.m4a", "wb") as f:
f.write(audio_file.getbuffer())
# Convert audio to the required format
audio = AudioSegment.from_file("uploaded_audio.m4a")
audio.export("converted_audio.wav", format="wav")
# Transcribe the audio file
result = model.transcribe("converted_audio.wav")
# Split the transcription into sentences
sentences = result["text"].split(". ")
# Display each sentence with a delay
st.write("Transcription:")
for sentence in sentences:
if sentence.strip(): # Check if the sentence is not empty
st.write(sentence.strip() + ".")
time.sleep(2) # Add a short delay before displaying the next sentence
else:
st.error("ffmpeg is required but not found. Please install ffmpeg to use this app.")