translator / src /streamlit_app.py
lecyanh's picture
Rename src/app.py to src/streamlit_app.py
70ba1a9 verified
Raw
History Blame Contribute Delete
2.18 kB
import streamlit as st
import tempfile
import os
from processor import translate_and_dub
st.set_page_config(page_title="Video Translator", page_icon="📺")
st.title("📺 Video Translator")
# --- SIDEBAR ---
with st.sidebar:
mode = st.radio("Chuyển ngữ", ('Tiếng Việt -> Trung Quốc', 'Trung Quốc -> Tiếng Việt'))
gender = st.radio("Giọng", ('Nữ', 'Nam'))
target_lang = "Chinese" if mode == 'Tiếng Việt -> Trung Quốc' else "Vietnamese"
# --- MAIN ---
uploaded_file = st.file_uploader("Upload Video", type=['mp4', 'mov'])
if uploaded_file is not None:
# Save Upload
tfile = tempfile.NamedTemporaryFile(delete=False, suffix='.mp4')
tfile.write(uploaded_file.read())
video_path = tfile.name
st.video(video_path) # Show original
if st.button('🚀 Dịch video'):
with st.spinner('Đang xử lý...'):
try:
# Get paths for Video and Subtitle file
dubbed_video, subtitle_file, segments = translate_and_dub(video_path, target_lang, gender)
st.success("Dịch thành công!")
st.subheader("Video đã dịch (Bật CC 💬 trong player)")
# THIS IS THE KEY CHANGE:
# We pass the video AND the subtitle file path
st.video(dubbed_video, subtitles=subtitle_file)
col1, col2 = st.columns(2)
with col1:
with open(dubbed_video, 'rb') as f:
st.download_button('⬇️ Tải Video', f, file_name="dubbed_video.mp4")
with col2:
with open(subtitle_file, 'rb') as f:
st.download_button('⬇️ Tải Subtitles', f, file_name="subtitles.vtt")
# Show text transcript below
with st.expander("Xem bản dịch"):
for seg in segments:
st.write(f"**{seg['start']}s**: {seg['text']}")
except Exception as e:
st.error(f"Error: {e}")