Lguyogiro's picture
update recorder ui
3d7dd0d
import os
import sys
import datetime
import streamlit as st
from asr import load_model, inference
from audiorecorder import audiorecorder
@st.cache_resource
def load_asr_model():
return load_model()
processor, asr_model = load_asr_model()
def save_audio_file(audio_bytes, file_extension):
"""
Save audio bytes to a file with the specified extension.
:param audio_bytes: Audio data in bytes
:param file_extension: The extension of the output audio file
:return: The name of the saved audio file
"""
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
file_name = f"audio_{timestamp}.{file_extension}"
with open(file_name, "wb") as f:
f.write(audio_bytes)
return file_name
def transcribe_audio(file_path):
"""
Transcribe the audio file at the specified path.
:param file_path: The path of the audio file to transcribe
:return: The transcribed text
"""
with open(file_path, "rb") as audio_file:
transcript = inference(processor, asr_model, audio_file)
return transcript
def main():
"""
"""
st.title("Anishinaabemowin Transcription")
tab1, tab2 = st.tabs(["Record Audio", "Upload Audio"])
# Record Audio tab
with tab1:
audio = audiorecorder("Click to start recording", "Click to stop recording")
if len(audio) > 0:
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
fname = f"audio_{timestamp}.wav"
audio.export(fname, format="wav")
# st.audio(audio_bytes, format="audio/wav")
# fname = save_audio_file(audio_bytes, "wav")
# Upload Audio tab
with tab2:
audio_file = st.file_uploader("Upload Audio", type=["wav"])
if audio_file:
file_extension = audio_file.type.split('/')[1]
fname = save_audio_file(audio_file.read(), file_extension)
# Transcribe button action
if st.button("Click to transcribe uploaded audio."):
# Transcribe the audio file
transcript_text = transcribe_audio(fname)
# Display the transcript
st.header("Transcript")
st.write(transcript_text)
# Save the transcript to a text file
with open("transcript.txt", "w") as f:
f.write(transcript_text)
# Provide a download button for the transcript
st.download_button("Download Transcript", transcript_text)
if __name__ == "__main__":
# Set up the working directory
working_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(working_dir)
# Run the main function
main()