Logo Lanfrica

adamacoulibalyad670-droid/bambara-w-bay-l-mali

Domaine:

natural language processing

Type de record:

softwaretools
Créateur:
ada
Hôte:
A ka fisa dɔɔnin # ============================================================ # Bambara Professional Video Dubber - صوت نقي بالوقار والثبات # ============================================================ import streamlit as st import tempfile import os from pathlib import Path import numpy as np import soundfile as sf import librosa from moviepy.editor import VideoFileClip, AudioFileClip import re # -------------------- إعداد الصفحة -------------------- st.set_page_config( page_title="دبلجة فيديو إلى البامبارا - صوت نقي", page_icon="🎬", layout="centered" ) st.title("🎬 دبلجة فيديو احترافية إلى البامبارا") st.markdown(""" **صوت نقي جداً • بدون قرقرة • بالوقار والثبات • قراءة صحيحة للأرقام والنص** """) # -------------------- تحميل النماذج -------------------- @st.cache_resource(show_spinner="جاري تحميل نماذج MALIBA-AI...") def load_models(): from whosper import WhosperTranscriber from maliba_ai.tts.inference import BambaraTTSInference from maliba_ai.config.settings import Speakers asr = WhosperTranscriber(model_id="MALIBA-AI/bambara-asr-v3") tts = BambaraTTSInference() return asr, tts, Speakers try: asr_model, tts_model, Speakers = load_models() speakers_list = list(Speakers) except Exception as e: st.error(f"فشل تحميل النماذج: {e}") st.stop() # -------------------- دوال مساعدة -------------------- def extract_audio(video_path: str, audio_path: str): video = VideoFileClip(video_path) if video.audio is None: raise ValueError("الفيديو لا يحتوي على صوت") video.audio.write_audiofile(audio_path, logger=None, verbose=False) duration = video.duration video.close() return duration def time_stretch(y, sr, target_duration): current = librosa.get_duration(y=y, sr=sr) if current str: """تنظيف النص وتجهيزه للقراءة النقية""" text = text.strip() text = re.sub(r'\s+', ' ', text) # إزالة الرموز الغريبة مع الحفاظ على علامات الترقيم الأساسية text = re.sub(r'[^\w\s\.,!?;:؟٪%0-9ɛɔɲŋƐƆƝŊ\-]', ' ', text) return text.strip() def split_into_sentences(text: str): """تقسيم النص إلى جمل قصيرة لجودة أع …