siliconflow / audio_text.py
Nocigar's picture
Update audio_text.py
c13571b verified
from openai import OpenAI
import streamlit as st
def audio_transcription(api_key, audio_file):
api_key = api_key
base_url = "https://api.siliconflow.cn/v1"
client = OpenAI(api_key=api_key, base_url=base_url)
transcription = client.audio.transcriptions.create(
model="FunAudioLLM/SenseVoiceSmall",
file=audio_file
)
return transcription
def audioText(api_key: str):
if "uploaded_audio" not in st.session_state:
st.session_state.uploaded_audio = None
if "input_audio" not in st.session_state:
st.session_state.input_audio = None
if st.session_state.uploaded_audio == None and st.session_state.input_audio == None:
disable = True
elif st.session_state.uploaded_audio != None and st.session_state.input_audio == None:
disable = False
elif st.session_state.uploaded_audio == None and st.session_state.input_audio != None:
disable = False
audio_uploader = st.file_uploader("Upload an Audio", type=["MP3", "WAV"], key="audio_uploader", disabled=st.session_state.input_audio!=None)
if audio_uploader is not None:
st.session_state.uploaded_audio = audio_uploader
elif audio_uploader is None:
st.session_state.uploaded_audio = None
audio_input = st.audio_input("Record an Audio", key="audio_input", disabled=st.session_state.uploaded_audio!=None)
if audio_input is not None:
st.session_state.input_audio = audio_input
elif audio_input is None:
st.session_state.input_audio = None
transcript_btn = st.button("Transcript", "transcript_btn", type="primary")
transcription_str = ""
if transcript_btn:
if st.session_state.uploaded_audio is not None and st.session_state.input_audio is None:
try:
with st.spinner("Processing..."):
transcription = audio_transcription(api_key, st.session_state.uploaded_audio)
if transcription:
transcription_str = transcription.text
except Exception as e:
st.error(f"Error occured: {e}")
elif st.session_state.uploaded_audio is None and st.session_state.input_audio is not None:
try:
with st.spinner("Processing..."):
transcription = audio_transcription(api_key, st.session_state.input_audio)
if transcription:
transcription_str = transcription.text
except Exception as e:
st.error(f"Error occured: {e}")
elif st.session_state.uploaded_audio is None and st.session_state.input_audio is None:
st.info("Please upload an audio or record an audio!")
if transcription_str:
with st.container(border=True, key="trans_container"):
st.markdown(transcription_str)