note-taker / app.py
msaelices's picture
Remove GPT 3.5 model as it's only a 4k tokens one, not enough for most of the real-life audios
6e20c4b
raw
history blame
No virus
2.67 kB
import os
import streamlit as st
from dotenv import load_dotenv
from engines import get_engine
import api
# Load environment variables from .env file before importing any other modules
load_dotenv()
def main():
st.set_page_config(
page_title='Note Taker',
page_icon='πŸŽ™οΈ',
layout='centered',
initial_sidebar_state='expanded',
)
title = 'πŸŽ™οΈ Meetings Note Taker πŸŽ™οΈ'
st.title(title)
st.write(
'Upload an audio file, transcribe it using WhisperX, GoogleCloud or Assembly.AI, and generate meeting notes using your selected model.'
)
openai_api_key = os.environ.get('OPENAI_API_KEY') or st.text_input(
'Enter your OpenAI API key:', type='password'
)
engine_type = os.environ.get('TRANSCRIPTION_ENGINE') or st.selectbox(
'Select a transcription engine:', ['WhisperX', 'AssemblyAI', 'Google']
)
if engine_type in ['AssemblyAI', 'WhisperX']:
engine_api_key = os.environ.get(
f'{engine_type.upper()}_API_KEY'
) or st.text_input(f'Enter your {engine_type} API key:', type='password')
else:
engine_api_key = (
None # Google doesn't need an API key but uses a credentials file
)
openai_model = os.environ.get('OPENAI_MODEL') or st.selectbox(
'Select a model:', ['gpt-3.5-turbo-16k', 'gpt-4-0613']
)
uploaded_audio = st.file_uploader(
'Upload an audio file',
type=['aac', 'm4a', 'mp3', 'webm', 'mp4', 'mpga', 'wav', 'mpeg'],
accept_multiple_files=False,
)
language = os.environ.get('AUDIO_LANGUAGE') or st.selectbox(
'Language code of the audio:', ['en', 'es']
)
if st.button('Generate Notes'):
if uploaded_audio:
if openai_api_key:
st.markdown('Transcribing the audio...')
engine = get_engine(engine_type, engine_api_key)
transcription = api.transcribe(engine, language, uploaded_audio)
st.markdown(
f'### Transcription:\n\n<details><summary>Click to view</summary><p><pre><code>{transcription}</code></pre></p></details>',
unsafe_allow_html=True,
)
st.markdown('Summarizing the transcription...')
summary = api.summarize_transcript(
openai_api_key,
transcription,
openai_model,
)
st.markdown(f'### Summary:')
st.write(summary)
else:
st.error('We need valid OpenAI API keys')
if __name__ == '__main__':
main()