Spaces:
Sleeping
Sleeping
import os | |
import sys | |
import datetime | |
import streamlit as st | |
from asr import load_model, inference | |
from audiorecorder import audiorecorder | |
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() | |