مجموعة أدوات التعرف على الكلام الشاملة المستندة إلى ModelScope، تدعم التعرف على الكلام، واكتشاف النشاط الصوتي، واستعادة علامات الترقيم، والعديد من الوظائف الأخرى
FunASR - مجموعة أدوات أساسية للتعرف على الكلام من البداية إلى النهاية
نظرة عامة على المشروع
FunASR هي مجموعة أدوات أساسية للتعرف على الكلام، توفر وظائف متعددة بما في ذلك التعرف على الكلام (ASR)، اكتشاف النشاط الصوتي (VAD)، استعادة علامات الترقيم، نماذج اللغة، التحقق من المتحدث، فصل المتحدثين، والتعرف على الكلام لعدة متحدثين (Multi-speaker ASR). تم تطوير هذا المشروع بواسطة أكاديمية علي بابا ديمو (Alibaba DAMO Academy) بهدف بناء جسر بين البحث الأكاديمي والتطبيقات الصناعية.
عنوان المشروع: https://github.com/modelscope/FunASR
الميزات الأساسية
1. معالجة الكلام متعددة الوظائف
- التعرف على الكلام (ASR): يدعم التعرف المتدفق (streaming) وغير المتدفق (non-streaming)
- اكتشاف النشاط الصوتي (VAD): يكتشف مقاطع النشاط الصوتي
- استعادة علامات الترقيم: يضيف علامات الترقيم تلقائيًا
- التعرف على المتحدث: يدعم التحقق من المتحدث وفصله
- التعرف على المشاعر: تحليل المشاعر الصوتية
- اكتشاف الكلمات المفتاحية: يدعم تنشيط الكلمات المفتاحية
2. مكتبة النماذج المدربة مسبقًا
نشرت FunASR عددًا كبيرًا من النماذج المدربة مسبقًا على المستويين الأكاديمي والصناعي على ModelScope و Hugging Face، وتشمل بشكل أساسي:
اسم النموذج | وصف الوظيفة | بيانات التدريب | عدد المعلمات |
---|---|---|---|
SenseVoiceSmall | قدرات فهم صوتي متعددة، بما في ذلك ASR، ITN، LID، SER، و AED | 300 ألف ساعة | 234 مليون |
paraformer-zh | التعرف على الكلام الصيني، مع طوابع زمنية، غير متدفق | 60 ألف ساعة، صيني | 220 مليون |
paraformer-zh-streaming | التعرف على الكلام الصيني، متدفق | 60 ألف ساعة، صيني | 220 مليون |
paraformer-en | التعرف على الكلام الإنجليزي، غير متدفق | 50 ألف ساعة، إنجليزي | 220 مليون |
ct-punc | استعادة علامات الترقيم | 100 مليون إدخال، صيني وإنجليزي | 290 مليون |
fsmn-vad | اكتشاف النشاط الصوتي | 5000 ساعة، صيني وإنجليزي | 0.4 مليون |
Whisper-large-v3 | التعرف على الكلام متعدد اللغات | متعدد اللغات | 1550 مليون |
3. مقدمة عن النماذج الأساسية
Paraformer
Paraformer-large هو نموذج للتعرف على الكلام من البداية إلى النهاية غير ذاتي الانحدار (non-autoregressive)، يتميز بدقة عالية وكفاءة عالية وسهولة النشر، ويدعم بناء خدمات التعرف على الكلام بسرعة.
SenseVoice
SenseVoice هو نموذج أساسي للكلام يتمتع بقدرات فهم صوتي متعددة، بما في ذلك ASR، LID، SER، و AED، ويدعم لغات متعددة مثل الصينية والكانتونية والإنجليزية واليابانية والكورية وغيرها.
التثبيت والاستخدام
طرق التثبيت
التثبيت عبر pip
pip3 install -U funasr
التثبيت من الكود المصدري
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
تثبيت دعم مكتبة النماذج (اختياري)
pip3 install -U modelscope huggingface_hub
البدء السريع
1. الاستخدام عبر سطر الأوامر
funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav
2. واجهة برمجة تطبيقات Python - نموذج SenseVoice
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
model = AutoModel(
model=model_dir,
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cuda:0",
)
# التعرف على الإنجليزية
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="auto", # "zn", "en", "yue", "ja", "ko", "nospeech"
use_itn=True,
batch_size_s=60,
merge_vad=True,
merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])
print(text)
3. واجهة برمجة تطبيقات Python - نموذج Paraformer
from funasr import AutoModel
# paraformer-zh هو نموذج ASR متعدد الوظائف
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad",
punc_model="ct-punc",
# spk_model="cam++", # التعرف على المتحدث اختياري
)
res = model.generate(
input=f"{model.model_path}/example/asr_example.wav",
batch_size_s=300,
hotword='魔搭' # كلمة ساخنة
)
print(res)
4. التعرف المتدفق
from funasr import AutoModel
import soundfile
import os
chunk_size = [0, 10, 5] # [0, 10, 5] إعداد تأخير 600 مللي ثانية
encoder_chunk_look_back = 4
decoder_chunk_look_back = 1
model = AutoModel(model="paraformer-zh-streaming")
wav_file = os.path.join(model.model_path, "example/asr_example.wav")
speech, sample_rate = soundfile.read(wav_file)
chunk_stride = chunk_size[1] * 960 # 600 مللي ثانية
cache = {}
total_chunk_num = int(len((speech)-1)/chunk_stride+1)
for i in range(total_chunk_num):
speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]
is_final = i == total_chunk_num - 1
res = model.generate(
input=speech_chunk,
cache=cache,
is_final=is_final,
chunk_size=chunk_size,
encoder_chunk_look_back=encoder_chunk_look_back,
decoder_chunk_look_back=decoder_chunk_look_back
)
print(res)
نشر الخدمات
تدعم FunASR نشر النماذج المدربة مسبقًا أو التي تم ضبطها بدقة لتقديم الخدمات، وتدعم حاليًا أنواع نشر الخدمات التالية:
أنواع الخدمات المدعومة
- خدمة نسخ الملفات غير المتصلة (صيني، إصدار CPU)
- خدمة النسخ في الوقت الفعلي (صيني، إصدار CPU)
- خدمة نسخ الملفات غير المتصلة (إنجليزي، إصدار CPU)
- خدمة نسخ الملفات غير المتصلة (صيني، إصدار GPU)
توصيات إعدادات النشر
التكوينات الموصى بها:
- التكوين 1: (نوع الحوسبة X86) 4 أنوية vCPU، 8 جيجابايت ذاكرة وصول عشوائي، يدعم حوالي 32 طلبًا على جهاز واحد
- التكوين 2: (نوع الحوسبة X86) 16 نواة vCPU، 32 جيجابايت ذاكرة وصول عشوائي، يدعم حوالي 64 طلبًا على جهاز واحد
الميزات التقنية
1. ابتكار النماذج
- هندسة غير ذاتية الانحدار: يعتمد Paraformer تصميمًا غير ذاتي الانحدار لزيادة كفاءة الاستدلال
- وضع 2Pass: يجمع بين مزايا الوضع المتدفق وغير المتدفق
- دعم الكلمات الساخنة: يدعم الكلمات الساخنة المخصصة لتحسين دقة التعرف على المفردات المحددة
2. تحسينات هندسية
- تصدير ONNX: يدعم تصدير النماذج بتنسيق ONNX لتسهيل النشر
- دعم متعدد المنصات: يدعم منصات متعددة مثل CPU و GPU و ARM64
- النشر في حاويات: يوفر دعم صور Docker
3. سهولة التطوير
- واجهة موحدة: يوحد AutoModel واجهات الاستدلال لـ ModelScope و Hugging Face و FunASR
- تصميم إضافي (Plugin-based): يدعم التركيب المرن للمكونات مثل VAD وعلامات الترقيم والمتحدثين
- وثائق غنية: يوفر دروسًا وأمثلة مفصلة
سيناريوهات التطبيق
1. نسخ الكلام في الوقت الفعلي
- تسجيلات الاجتماعات
- ترجمة البث المباشر
- المساعدون الصوتيون
2. معالجة الصوت غير المتصل
- نسخ الملفات الصوتية
- تحليل بيانات الكلام
- مراجعة المحتوى
3. دعم متعدد اللغات
- التعرف على الكلام عبر اللغات
- ترجمة الكلام
- خدمة العملاء متعددة اللغات
آخر التحديثات
التحديثات الرئيسية لعام 2024
- 2024/10/29: إصدار خدمة النسخ في الوقت الفعلي 1.12، ووضع 2pass-offline يدعم نموذج SenseVoice
- 2024/10/10: إضافة دعم لنموذج Whisper-large-v3-turbo
- 2024/09/26: إصلاح مشكلة تسرب الذاكرة، ودعم نموذج SenseVoice ONNX
- 2024/07/04: إطلاق نموذج SenseVoice الأساسي للكلام
- 2024/06/27: إطلاق خدمة نسخ الملفات غير المتصلة GPU 1.0
المجتمع والدعم
ترخيص المصدر المفتوح
- يعتمد المشروع ترخيص MIT
- تستخدم النماذج المدربة مسبقًا اتفاقية ترخيص نموذج محددة
المشاركة المجتمعية
- مشاكل GitHub: للمشكلات التقنية وملاحظات الأخطاء
- مجموعة DingTalk: للتواصل والمناقشات اليومية
- ModelScope: لتنزيل النماذج ومشاركتها
الاستشهاد
إذا استخدمت FunASR في بحثك، يرجى الاستشهاد بالورقة التالية:
@inproceedings{gao2023funasr,
author={Zhifu Gao and Zerui Li and Jiaming Wang and Haoneng Luo and Xian Shi and Mengzhe Chen and Yabin Li and Lingyun Zuo and Zhihao Du and Zhangyu Xiao and Shiliang Zhang},
title={FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
year={2023},
booktitle={INTERSPEECH},
}
الخلاصة
FunASR هي مجموعة أدوات للتعرف على الكلام كاملة الميزات وذات أداء ممتاز، وقد نجحت في الجمع بين التقنيات المتطورة للبحث الأكاديمي والاحتياجات الفعلية للتطبيقات الصناعية. سواء كان الباحثون يجرون التحقق من الخوارزميات، أو المطورون يبنون تطبيقات صوتية، فإن FunASR توفر دعمًا تقنيًا قويًا وتجربة تطوير مريحة. من خلال نماذجها المدربة مسبقًا الغنية، وحلول النشر المرنة، ومجتمعها النشط مفتوح المصدر، أصبحت FunASR بنية تحتية مهمة في مجال التعرف على الكلام.