Solution_2 / playground /test_st_audio2.py
voldemortuk's picture
Upload 113 files
5cc1949 verified
import os
import sys
import datetime
import openai
import dotenv
import streamlit as st
from audio_recorder_streamlit import audio_recorder
# import API key from .env file
dotenv.load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def transcribe(audio_file):
transcript = openai.Audio.transcribe("whisper-1", audio_file)
return transcript
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 = transcribe(audio_file)
return transcript["text"]
def main():
"""
Main function to run the Whisper Transcription app.
"""
st.title("Whisper Transcription")
tab1, tab2 = st.tabs(["Record Audio", "Upload Audio"])
# Record Audio tab
with tab1:
audio_bytes = audio_recorder()
if audio_bytes:
st.audio(audio_bytes, format="audio/wav")
save_audio_file(audio_bytes, "mp3")
# Upload Audio tab
with tab2:
audio_file = st.file_uploader("Upload Audio", type=["mp3", "mp4", "wav", "m4a"])
if audio_file:
file_extension = audio_file.type.split('/')[1]
save_audio_file(audio_file.read(), file_extension)
# Transcribe button action
if st.button("Transcribe"):
# Find the newest audio file
audio_file_path = max(
[f for f in os.listdir(".") if f.startswith("audio")],
key=os.path.getctime,
)
# Transcribe the audio file
transcript_text = transcribe_audio(audio_file_path)
# 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()