| import streamlit as st |
| import soundfile as sf |
| from transformers import pipeline |
| import sentence_transformers |
| import chromadb |
|
|
| |
| speech_to_text = pipeline("automatic-speech-recognition", model="openai/whisper-small") |
|
|
| |
| chroma_client = chromadb.PersistentClient(path="./dataset") |
| collection = chroma_client.get_collection("subtitles") |
|
|
| |
| def convert_audio_to_text(audio_file): |
| audio_data, samplerate = sf.read(audio_file) |
| result = speech_to_text(audio_data) |
| return result["text"] |
|
|
| |
| def search_subtitles(query): |
| results = collection.query(query_texts=[query], n_results=5) |
| return results["documents"][0] if results["documents"] else ["No matching subtitles found."] |
|
|
| |
| st.title("π¬ Video Subtitle Search Engine") |
|
|
| st.write("Upload an audio file to search for matching subtitles.") |
|
|
| |
| uploaded_file = st.file_uploader("Upload Audio File", type=["wav", "mp3", "ogg"]) |
|
|
| if uploaded_file is not None: |
| st.audio(uploaded_file, format="audio/wav") |
| |
| with st.spinner("Converting speech to text... π"): |
| query_text = convert_audio_to_text(uploaded_file) |
| st.write("*Detected Text:*", query_text) |
|
|
| with st.spinner("Searching subtitles... π"): |
| subtitles = search_subtitles(query_text) |
| st.write("*Matching Subtitles:*") |
| for subtitle in subtitles: |
| st.write("- ", subtitle) |