import streamlit as st from transformers import pipeline from openai import OpenAI # ----------------------------- # Hugging Face API Token (Secrets-də saxla!) # ----------------------------- HF_TOKEN = st.secrets["HF_TOKEN"] client = OpenAI(base_url="https://router.huggingface.co/v1", api_key=HF_TOKEN) # ----------------------------- # ASR Pipeline (Whisper) # ----------------------------- @st.cache_resource def load_asr(): return pipeline("automatic-speech-recognition", model="openai/whisper-large-v3") asr = load_asr() # ----------------------------- # Streamlit UI # ----------------------------- st.title("🏥 AZ Medical Speech → Insight") st.write("Audio faylı yükləyin və tibbi insight çıxarın.") uploaded_file = st.file_uploader("Audio seçin (.wav, .mp3, .ogg, .m4a)", type=["wav","mp3","ogg","m4a"]) if uploaded_file is not None: st.audio(uploaded_file, format='audio/wav') with st.spinner("Audio tanınır..."): az_text = asr(uploaded_file, generate_kwargs={"task":"transcribe","language":"az"})["text"].strip() en_text = asr(uploaded_file, generate_kwargs={"task":"translate","language":"az"})["text"].strip() st.subheader("🎧 Transcripts") st.write("AZ:", az_text) st.write("EN:", en_text) # ----------------------------- # LLM → Insight # ----------------------------- messages = [ { "role": "system", "content": ( "Sən tibbi köməkçi modelsən. Məqsədin xəstənin danışığından simptomları, " "həyati əlamətləri və təcili prioriteti müəyyən etməkdir. " "Qısa və analitik cavab ver, tibbi anlayışlara əsaslan." ) }, { "role": "user", "content": f"Mətn: {az_text}\n\nXəstənin vəziyyəti barədə tibbi təhlil ver:" } ] with st.spinner("Tibbi insight hazırlanır..."): completion = client.chat.completions.create( model="Intelligent-Internet/II-Medical-8B-1706:featherless-ai", messages=messages, max_tokens=400, temperature=0.4 ) llm_response = completion.choices[0].message.content.strip() st.subheader("💡 MODEL INSIGHT") st.write(llm_response)