You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
val ctx =WhisperContext.createContextFromFile("model.gguf")
val info = ctx.getModelInfo()
println("Model: ${info.modelName} (${info.quantizationName})")
println("Is IQ-quant: ${info.isIqQuant}")
val result = ctx.transcribe(audioData)
println(result.fullText)
ctx.release()
3. تحميل نموذج من HuggingFace
// تحميل تلقائي مع استئناف وتحققval ctx =WhisperContext.createFromDownload(
model =WhisperModel.LARGE_V3_TURBO_Q5_K_M,
cacheDir = context.filesDir,
onProgress = { progress ->println("Download: ${progress.percent}%")
}
)
// أو استخدام أي ملف ggufval ctx =WhisperContext.createContextFromFile("/path/to/model.gguf")
4. Speculative Decoding — تسريع 2x
val spec =SpeculativeDecodingContext.create(
mainModelPath ="ggml-large-v3-turbo-q5_k_m.gguf",
draftModelPath ="ggml-tiny-q5_k_m.gguf"
)
// الـ draft model يتنبأ → الـ main model يتحقق// النتيجة = دقة large-v3-turbo بسرعة ~2xval result = spec.transcribe(audioData, TranscribeConfig(language ="ar"))
println(result.fullText)
spec.release()
5. Tinydiarize — كشف المتحدثين
// يتطلب نموذج tinydiarize (ggml-tiny-tdrz.gguf أو ggml-base-tdrz.gguf)val config =TranscribeConfig(
enableDiarize =true// تفعيل كشف المتحدثين
)
val ctx =WhisperContext.createContextFromFile("ggml-base-tdrz.gguf")
val result = ctx.transcribe(audioData, config)
result.segments.forEach { seg ->val speaker =if (seg.speakerTurnNext) " >> SPEAKER_TURN"else""println("[${toTimestamp(seg.t0Ms)}]: ${seg.text}$speaker")
}
ctx.release()
6. Thermal-Aware Threading — منع السخونة
importandroid.os.PowerManager// بدء مراقبة الحرارةval pm = getSystemService(PowerManager::class.java)
ThermalAwareThreading.startMonitoring(lifecycleScope, pm, intervalMs =5000)
// الآن numThreads يتكيف تلقائياً مع حرارة الجهازval config =TranscribeConfig(
numThreads =ThermalAwareThreading.currentThreadCount // يتحدث تلقائياً
)
val ctx =WhisperContext.createContextFromFile("ggml-medium-iq4_xs.gguf")
val result = ctx.transcribe(longAudioData, config)
// عند الانتهاءThermalAwareThreading.stopMonitoring()
ctx.release()
7. استخدام متقدم — كل المميزات
val config =TranscribeConfig(
numThreads =4,
maxTextCtx =256,
language ="ar",
detectLanguage =false,
enableVad =true,
vadThreshold =0.4f,
carryInitialPrompt =true,
initialPrompt ="المحادثة تتحدث عن الذكاء الاصطناعي",
enableHushWords =true,
enableDiarize =false,
flashAttn =true
)
val ctx =WhisperContext.createContextFromFile("ggml-large-v3-turbo-q5_k_m.gguf")
val result = ctx.transcribe(audioData, config)
println(result.fullText)
ctx.release()
8. Local Agreement Policy — منع تذبذب النص
val policy =LocalAgreementPolicy(minConfirmations =2)
// في حلقة البث المباشر:val result = ctx.transcribeStream(currentChunk, config)
val stableText = policy.process(result)
textView.text = stableText
9. النماذج المتاحة / Available Models
WhisperModel.TINY_Q5_K_M// 75MB, اختبار سريعWhisperModel.BASE_Q5_K_M// 142MB, توازن جيدWhisperModel.SMALL_Q5_K_M// 466MB, دقة عالية — موصى بهWhisperModel.MEDIUM_Q4_K_M// 769MB, أفضل دقة/حجمWhisperModel.MEDIUM_IQ4_XS// ~600MB, IQ-quants — أصغر مع imatrixWhisperModel.LARGE_V3_Q5_K_M// 1024MB, أعلى دقةWhisperModel.LARGE_V3_TURBO_Q5_K_M// 809MB, توازن مثالي — الأفضل للإنتاجWhisperModel.TINY_TDRZ// 75MB, diarizeWhisperModel.BASE_TDRZ// 142MB, diarize أفضل