Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from st_audiorec import st_audiorec | |
| import os | |
| from datetime import datetime | |
| # Placeholder function to simulate processing and generating a medical note | |
| def process_audio_and_generate_note(audio_data_path): | |
| # In a real scenario, this function would likely perform operations such as: | |
| # 1. Converting the audio data into a suitable format for analysis. | |
| # 2. Performing speech recognition on the audio to extract text. | |
| # 3. Using the extracted text to generate a medical note. | |
| # Here, we'll simulate this with a placeholder return value. | |
| # IMPORTANT: Assume processing is done here, and we no longer need the audio file | |
| return "Path to generated medical consultation note in Word format" | |
| # Ensure the directory exists | |
| audio_dir_path = "meddictate/data/audio" | |
| os.makedirs(audio_dir_path, exist_ok=True) | |
| st.title('MedDictate: Medical Consultation Note Generator') | |
| # Display instructions and initiate the audio recorder component | |
| st.write("Click the button below to start and stop recording:") | |
| wav_audio_data = st_audiorec() # This initiates the audio recorder | |
| # Store the audio data in session state if received from the recorder | |
| if wav_audio_data is not None: | |
| st.session_state.audio_bytes = wav_audio_data | |
| # Button to submit the recording for processing | |
| if 'audio_bytes' in st.session_state and st.session_state.audio_bytes: | |
| if st.button('Process Recording', key='process_recording'): | |
| # Construct a filename with a timestamp to avoid overwriting existing files | |
| timestamp = datetime.now().strftime("%Y-%m-%dT%H-%M-%S") | |
| filename = f"recorded_audio_{timestamp}.wav" | |
| audio_file_path = os.path.join(audio_dir_path, filename) | |
| # Save the audio data to a WAV file | |
| with open(audio_file_path, "wb") as f: | |
| f.write(st.session_state.audio_bytes) | |
| # Process the audio data | |
| generated_note_path = process_audio_and_generate_note(audio_file_path) | |
| # After processing, delete the audio file as it's no longer needed | |
| os.remove(audio_file_path) | |
| st.write('Processing complete. Your medical consultation note is ready for download.') | |
| st.download_button('Download Medical Note', generated_note_path, 'medical_note.docx') | |
| else: | |
| # Prompt to record if no audio data is found | |
| st.warning('Please click the record button above to start recording your audio.') | |