Spaces:
Sleeping
Sleeping
from pydub import AudioSegment | |
from io import BytesIO | |
from PIL import Image | |
import streamlit as st | |
import requests | |
import dill | |
# load icon image | |
im = Image.open("AudioToText.png") | |
# config | |
st.set_page_config( | |
page_title="BARTAOUCH Khalid Audio To Text App", | |
layout="wide", | |
initial_sidebar_state="expanded", | |
page_icon=im, | |
menu_items={ | |
'About': "# BARTAOUCH KHALID Audio To Text APP. This is a free app!" | |
} | |
) | |
# title | |
title = """ | |
<h1 style="color: orange; text-align:center;"> تحويل أوديو إلى نص </h1> | |
</div> | |
""" | |
st.markdown(title,unsafe_allow_html=True) | |
#Author | |
author=""" | |
<style> | |
a:link, a:visited{ | |
color: black; | |
background-color: white; | |
text-decoration: underline; | |
} | |
a:hover, a:active { | |
color: red; | |
background-color: white; | |
text-decoration: underline; | |
} | |
.author{ | |
width:auto; | |
text-align: center; | |
padding: 10px; | |
z-index: 999999999; | |
} | |
</style> | |
<div class="author"> | |
<p>Developed with ❤ by <a href="https://www.linkedin.com/in/bartaouchkhalid" target="_blank">BARTAOUCH Khalid</a></p> | |
</div> | |
""" | |
st.markdown(author,unsafe_allow_html=True) | |
# layout define | |
col1, col2, col3 = st.columns([5,4,3]) | |
x=0 | |
# credentials | |
with open('API_URL_MEDIUM.pkl', 'rb') as file: | |
API_URL_MEDIUM = dill.load(file) | |
with open('API_URL_BASE.pkl', 'rb') as file2: | |
API_URL_BASE = dill.load(file2) | |
with open('headers.pkl', 'rb') as file3: | |
headers = dill.load(file3) | |
def query_base(data): | |
response = requests.post(API_URL_BASE, headers=headers, data=data) | |
return response.json() | |
def query_medium(data): | |
response = requests.post(API_URL_MEDIUM, headers=headers, data=data) | |
return response.json() | |
def convert_to_mp3(audio_data): | |
audio = AudioSegment.from_file(audio_data, format=audio_data.name.split('.')[-1]) | |
mp3_data = BytesIO() | |
audio.export(mp3_data, format="mp3") | |
return mp3_data | |
# layout | |
with col3: | |
option = st.selectbox( | |
'إختر__الخوارزمية__المناسبة__لك', | |
('دقة مناسبة، وقت أسرع', 'دقة أكثر، وقت معالجة أكثر')) | |
if option == 'دقة أكثر، وقت معالجة أكثر' : | |
option = 'medium' | |
else : | |
option = 'base' | |
audio = st.file_uploader("إرفع المقطع الصوتي", type=["mp3", "wav", "ogg", "flac", "m4a", "aac"]) | |
with col2: | |
if audio is not None: | |
if not audio.name.lower().endswith('.mp3'): | |
st.write('converting ...') | |
audio = convert_to_mp3(audio) | |
st.audio(audio, format='audio/mp3') | |
st.write('\n') | |
with st.spinner("...طلبكم قيد المعالجة"): | |
if option == 'base': | |
st.info('...لم يتبقى الكثير، المرجو الإنتظار') | |
result = query_base(audio.read()) | |
else : | |
st.info('...لم يتبقى الكثير، المرجو الإنتظار') | |
result = query_medium(audio.read()) | |
st.header("النتيجة") | |
st.success(result["text"]) | |
x=1 | |
with col1: | |
if x==1: | |
st.subheader("لنسخ النص") | |
st.code(result["text"]) | |
#footer | |
hide_streamlit_style = """ | |
<style> | |
#MainMenu {visibility: hidden;} | |
footer {visibility: hidden;} | |
</style> | |
""" | |
st.markdown(hide_streamlit_style, unsafe_allow_html=True) | |
#footer End |