Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import whisper | |
| from moviepy.editor import * | |
| import requests | |
| from bs4 import BeautifulSoup | |
| from diffusers import StableDiffusionPipeline | |
| import torch | |
| import arabic_reshaper | |
| from bidi.algorithm import get_display | |
| from googletrans import Translator | |
| import os | |
| # --- Setup UI --- | |
| st.title("گۆرانی بۆ شۆرت - ئۆتۆماتیکی") | |
| st.write("فایلی گۆرانییەکە ئەپلۆد بکە و چاوەڕێ بکە...") | |
| uploaded_file = st.file_uploader("گۆرانییەکە هەڵبژێرە", type=["mp3", "wav"]) | |
| if uploaded_file is not None: | |
| st.audio(uploaded_file, format='audio/mp3') | |
| if st.button('دەستپێکردن'): | |
| with st.spinner('خەریکی گوێگرتنە لە گۆرانییەکە...'): | |
| # 1. Save Audio | |
| with open("temp_audio.mp3", "wb") as f: | |
| f.write(uploaded_file.getbuffer()) | |
| # 2. Transcribe (Whisper) | |
| model = whisper.load_model("base") # مۆدێلی سووک | |
| result = model.transcribe("temp_audio.mp3") | |
| transcribed_text = result["text"] | |
| st.success(f"تێکست دۆزرایەوە: {transcribed_text[:50]}...") | |
| # 3. Google Search (Simple Simulation for demo) | |
| # لێرەدا کۆدی گەڕان لە گوگڵ دێت (پێویستی بە API هەیە ئەگەر زۆر ورد بێت) | |
| # بۆ ئێستا تێکستەکە خۆی بەکاردێنین | |
| final_lyrics = transcribed_text | |
| with st.spinner('خەریکی دروستکردنی وێنەیە...'): | |
| # 4. Generate Images (Stable Diffusion) | |
| # تێبینی: ئەمە لەسەر CPUی خۆڕایی هێواشە. | |
| translator = Translator() | |
| english_prompt = translator.translate(final_lyrics[:100], dest='en').text | |
| # بەکارهێنانی مۆدێلی بچووک بۆ خێرایی | |
| pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float32) | |
| # ئەگەر GPU نەبێت، ئەم بەشە زۆر هێواش دەبێت لە Hugging Face Free | |
| # بۆیە پێشنیار دەکەم API وێنە بەکاربێنیت نەک لۆکاڵ | |
| st.info("بەهۆی قورسی مۆدێلی وێنە، لەم نموونەیەدا وێنەی ڕەنگ بەکاردێنین. (بۆ وێنەی AI دەبێت API ببەستین)") | |
| # Generate Dummy Video for Demo | |
| # 5. Create Video with MoviePy | |
| audio_clip = AudioFileClip("temp_audio.mp3").subclip(0, 15) # تەنها ١٥ چرکە بۆ تێست | |
| # دروستکردنی تێکستی فارسی | |
| reshaped_text = arabic_reshaper.reshape(final_lyrics[:30]) | |
| bidi_text = get_display(reshaped_text) | |
| # دروستکردنی کلیپ | |
| txt_clip = TextClip(bidi_text, fontsize=50, color='white', font='Arial') # دەبێت فۆنت ئەپلۆد بکرێت | |
| txt_clip = txt_clip.set_pos('center').set_duration(15) | |
| video = ColorClip(size=(720, 1280), color=(0,0,0), duration=15) | |
| video = video.set_audio(audio_clip) | |
| video = CompositeVideoClip([video, txt_clip]) | |
| video.write_videofile("final_short.mp4", fps=24) | |
| st.success("تەواو!") | |
| st.video("final_short.mp4") |