عن المشروع
SenseVoice هو نموذج أساسي للكلام يتمتع بقدرات متعددة لفهم الكلام: التعرف التلقائي على الكلام (ASR)، وتحديد لغة الكلام (LID)، والتعرف على عواطف الكلام (SER)، واكتشاف الأحداث الصوتية (AED).
نطاق نقطة التحقق المُصدرة: يدعم SenseVoiceSmall التعرف على الكلام وتحديد اللغة للماندرين والكانتونية والإنجليزية واليابانية والكورية، بالإضافة إلى وسوم العواطف والأحداث الصوتية. يبلغ العمل البحثي الأوسع لـ SenseVoice عن تدريب على أكثر من 400,000 ساعة ودعم لأكثر من 50 لغة، لكن نقطة التحقق الصغيرة المُصدرة تغطي اللغات الخمس المذكورة أعلاه. فصل المتحدثين ليس مخرجًا لنقطة التحقق بحد ذاتها؛ بل هو خط أنابيب FunASR مركّب يستخدم نماذج FSMN-VAD و CAM++ منفصلة.
أبرز المزايا
- نسخ غني: وسوم التعرف على العواطف واكتشاف الأحداث الصوتية لأحداث مثل الموسيقى الخلفية، والتصفيق، والضحك، والبكاء، والسعال، والعطس.
- استدلال فعّال: إطار عمل شامل غير تلقائي التتابع من النهاية إلى النهاية لاستدلال منخفض الكمون. في إعداد القياس الخاص بالمشروع، يُذكر أن SenseVoiceSmall يعمل أسرع بأكثر من 5 مرات من Whisper-Small وأسرع بـ 15 مرة من Whisper-Large عند عدد معلمات مشابه.
- نصوص وأساليب ضبط دقيق للتكيف مع البيانات الطويلة الذيل.
- خط أنابيب نشر خدمة يدعم الطلبات المتزامنة المتعددة، مع لغات من جهة العميل تشمل Python و C++ و HTML و Java و C#.
الاستخدام
ثبّت التبعيات باستخدام pip install -r requirements.txt. تتطلب الأمثلة ومسار فصل المتحدثين المركب funasr>=1.3.26 (مسار النشر الحالي يوصي بـ funasr==1.4.14).
يستخدم الاستدلال الأساسي AutoModel من FunASR مع نموذج iic/SenseVoiceSmall، وتقسيمًا اختياريًا عبر FSMN-VAD للصوت الطويل، واختيار اللغة (auto، zh، en، yue، ja، ko، nospeech)، وتطبيع النص العكسي، وتجميعًا ديناميكيًا، ودمج VAD. تساعد أداة rich_transcription_postprocess في تنسيق المخرج الخام.
الصوت الطويل بدون VAD: تمرير موجة صوتية لساعة كاملة إلى استدعاء generate واحد يمكن أن ينمّي ذاكرة المُرمِّز إلى ما هو أبعد بكثير من حجم الصوت. يقوم نص long_audio_no_vad.py بفك الترميز عبر ffmpeg وتشغيل SenseVoice على نوافذ ثابتة مدتها 30 ثانية مع تداخل ثانيتين، مع حفظ مخرجات الأجزاء الخام في ملف JSONL. تصف إزاحات النوافذ حدود الإدخال، وليس طوابع زمنية للكلمات، والحدود الثابتة يمكن أن تؤثر على التعرف حول موضع القطع.
فصل المتحدثين: يتم تركيبه عبر FunASR مع FSMN-VAD ووسوم المتحدثين CAM++ ونموذج ترقيم. وسوم المتحدثين هي مجموعات مجهولة الهوية، وليست هويات شخصية معروفة. مع output_timestamp=True، تكون الطوابع الزمنية أزواج [start_ms, end_ms] متوافقة واحدًا لواحد مع الكلمات.
التصدير والنشر على الأجهزة الطرفية: مسارات تصدير ONNX و Libtorch موثقة، ووقت تشغيل llama.cpp/GGUF يتيح تشغيل SenseVoice كملف ثنائي مستقل مع FSMN-VAD مدمج وبدون Python في وقت التشغيل، موجهًا لوحدات المعالجة المركزية والأجهزة الطرفية.
الخدمة والحاويات: نشر FastAPI يستمع على المنفذ 50000، وتدعم ملفات Docker/Docker Compose تشغيل وحدة المعالجة المركزية ووحدة معالجة الرسومات مع وحدة تخزين مؤقتة للنموذج.
الضبط الدقيق: إعداد البيانات يستخدم سجلات JSONL مع حقول key و source و target و language و emotion و event؛ وتقوم أوامر مساعدة بتحويل ملفات wav.scp و text إلى ملفات train/val JSONL. تشمل وسوم العواطف HAPPY و SAD و ANGRY و NEUTRAL و FEARFUL و DISGUSTED و SURPRISED؛ وتشمل وسوم الأحداث BGM و Speech و Applause و Laughter و Cry و Sneeze و Breath و Cough. يتم توفير نص finetune.sh وعرض توضيحي webui.py.
المعايير: يقارن المشروع التعرف متعدد اللغات على الكلام مع Whisper على AISHELL-1 و AISHELL-2 و Wenetspeech و LibriSpeech و Common Voice، ويذكر مزايا للتعرف على الصينية والكانتونية. بالنسبة للتعرف على العواطف، يذكر نتائج تنافسية بدون تدريب على مجموعات اختبار صينية وإنجليزية، مع عقد تقييم SER قابل للتكرار. بالنسبة لاكتشاف الأحداث الصوتية، يقارن مع BEATS و PANN على ESC-50، مشيرًا إلى فجوات مقارنة بنماذج AED المتخصصة.
النظام البيئي: SenseVoice جزء من عائلة FunAudioLLM إلى جانب FunASR و Fun-ASR و CosyVoice. تشمل عمليات الدمج من جهات خارجية نشر Triton/TensorRT، و sherpa-onnx (الداعم للعديد من لغات البرمجة ومنصات مثل iOS و Android و Raspberry Pi)، و SenseVoice.cpp، و streaming-sensevoice، و OmniSenseVoice، ومتغيرات محسّنة بالكلمات الساخنة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.