پرش به محتوای اصلی
پرش به محتوای مقاله

کتابخانه transcribe.cpp استقرار محلی ۶۰ مدل بازشناسی گفتار را یکپارچه کرد

·۲۸ تیر ۱۴۰۵۷ دقیقه مطالعه
کد منبع transcribe.cpp: ابزار تبدیل گفتار به متن با استفاده از مدل Whisper در C++
کد منبع transcribe.cpp: ابزار تبدیل گفتار به متن با استفاده از مدل Whisper در C++
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

ایجاد نخستین موتور استنتاج یکپارچه بر پایه ggml که نه تنها ۶۰ مدل مختلف را پشتیبانی می‌کند، بلکه برای هر یک، گواهی تطبیق عددی با مدل مرجع (Reference Implementation) ارائه می‌دهد.

آیا می‌توان ۶۰ مدل پیشرو بازشناسی گفتار را بدون وابستگی به ابر و سرویس‌های ابری، به‌صورت محلی اجرا کرد؟ در ۱۹ ژوئیه ۲۰۲۶، کتابخانه transcribe.cpp دقیقاً همین هدف را دنبال کرد تا استنتاجی سریع و دقیق را برای سخت‌افزارهای متنوع، از مک‌های قدرتمند تا تراشه‌های کم‌مصرف ARM فراهم کند. این کتابخانه در واقع یک موتور استنتاج سبک‌وزن مبتنی بر ggml است که طراحی شده تا دسترسی به بازشناسی گفتار (ASR) با دقت بالا را برای طیف وسیعی از سخت‌افزارها ممکن سازد.

برای اکثر توسعه‌دهندگان، توزیع هوش مصنوعی محلی تا امروز یک کابوس پراکنده بوده است. شما معمولاً مجبور بودید بین whisper.cpp یا ONNX یکی را انتخاب کنید و اگر بهینه‌سازی برای Apple Silicon می‌خواستید، باید MLX را هم به مدار وارد می‌کردید. این وضعیت توسعه‌دهنده را مجبور می‌کرد چندین موتور را هم‌زمان مدیریت کند و مدل‌ها را بین فرمت‌های مختلف جابه‌جا کند که نتیجه‌اش یا کاهش عملکرد CPU بود یا ریسک پذیرفتن دقت‌های تأییدنشده.

تولیدکننده transcribe.cpp این ابزار را بر اساس نیازهای اپلیکیشن Handy توسعه داد تا مشکل «داستان توزیع» در بازشناسی گفتار (ASR) — شبیه به داشتن یک مترجم همه‌کاره که برای هر زبانی نیاز به تعویض کامل دستگاه نباشد — را حل کند. هدف اصلی، ایجاد موتوری قابل‌اعتماد است که کاربر مدل را دانلود کند و مطمئن باشد نرخ خطای کلمه (Word Error Rate) دقیقاً با نسخه مرجع یکسان است.

مشکل توزیع

نویسنده پروژه، وضعیت فعلی پشته‌ی استنتاج ASR برای برنامه‌های چندسکویی را «وحشتناک» توصیف می‌کند. اگرچه ONNX پشتیبانی سریع از مدل‌ها را ممکن می‌کند، اما وقتی اجرا فقط محدود به CPU باشد، بخش بزرگی از عملکرد سخت‌افزاری از دست می‌رود و پتانسیل‌های بهینه‌سازی نادیده گرفته می‌شوند.

همان‌طور که در تحلیل‌های پیشین ما درباره‌ی امنیت مدل‌های بازمتن اشاره کردیم، شفافیت در لایه‌های اجرایی مدل‌ها برای کاربر نهایی حیاتی است. بهبود دقت در مدل‌های محلی، مشابه آنچه در ارتقای مدل‌های نویسه‌خوانی PP-OCRv6 مشاهده شد، همواره با بهینه‌سازی لایه‌های استنتاج گره خورده است]. بر اساس مستندات این پروژه، کتابخانه‌های موجود اغلب با کمبود شفافیت رو‌به‌رو هستند. نویسنده اشاره می‌کند که بسیاری از کتابخانه‌ها ادعای پشتیبانی گسترده از مدل‌ها را دارند، اما نویسندگان آن‌ها ناشناخته‌اند و پروتکل‌های تست آن‌ها مبهم است. این موضوع سؤالات حیاتی ایجاد می‌کند: آیا این کتابخانه در آینده نگهداری می‌شود؟ آیا در واقعیت چیزی جز یک کد دمو (نمونه) است؟ یا اصلاً به‌صورت جدی با ONNX محک خورده است یا خیر؟

معماری فنی و پشتیبانی

این کتابخانه با زبان C/C++ نوشته شده و از ggml برای عملیات بهینه تنسورها و توزیع گسترده استفاده می‌کند. دلیل انتخاب ggml، جامعه‌ی کاربرانی قدرتمند و قابلیت توزیع بالای آن است. این ابزار به گونه‌ای طراحی شده که تقریباً جایگزین مستقیم whisper.cpp باشد؛ یعنی می‌تواند فایل‌های .bin محبوب آن پروژه را اجرا کند و در عین حال لیست مدل‌های پشتیبانی‌شده را گسترش دهد.

به دلیل اینکه اپلیکیشن Handy پیش‌تر به whisper.cpp متکی بود، حفظ سازگاری با آن فایل‌های باینری خاص برای انتشار به‌روزرسانی‌ها یک الزام فنی بود. اگرچه برخی پرچم‌ها (flags) و ویژگی‌های خاص whisper.cpp هنوز پشتیبانی نمی‌شوند، اما پیاده‌سازی فعلی برای اکثریت قریب به‌تقاطع موارد استفاده، استوار است و عملکردی تقریباً برابر ارائه می‌دهد.

قابلیت‌های فنی کلیدی عبارت‌اند از:

  • پشتیبانی از ۱۶ خانواده ASR و بیش از ۶۰ مدل مجزا، با برنامه‌ریزی برای افزودن مدل‌های بیشتر در آینده.
  • شتاب‌دهی سخت‌افزاری از طریق Vulkan، Metal، CUDA و TinyBLAS.
  • پشتیبانی کامل از هر دو حالت استنتاجی: استنتاج جریانی (Streaming) برای پردازش لحظه‌ای و استنتاج دسته‌ای (Batch) برای پردازش حجم زیاد داده.
  • رابط‌های زبانی (bindings) رسمی و درجه‌یک برای زبان‌های Python، JavaScript/TypeScript، Rust و ObjC/Swift.

حل شکاف دقت

یکی از انگیزه‌های اصلی این پروژه، ناهماهنگی و عدم ثبات مدل‌های .onnx موجود در Hugging Face بود. طبق گزارش نویسنده، عدم قطعیت زیادی وجود داشت که آیا این مدل‌ها واقعاً با خروجی‌های مرجع اصلی خود مطابقت دارند یا خیر.

برای حل این مشکل، transcribe.cpp از یک خط لوله‌ی تأیید سخت‌گیرانه استفاده می‌کند. هر مدلی که زیر مجموعه‌ی سازمان handy-computer در Hugging Face منتشر شده، به‌صورت عددی اعتبارسنجی شده است. این یعنی استنتاج (Inference) — لحظه‌ای که مدل واقعاً جواب تولید می‌کند، شبیه به خودِ آشپزی و نه دوره‌ی آموزش آشپز — دقیقاً همان دقت پیاده‌سازی مرجع را دارد و هیچ‌گونه انحراف عددی در خروجی‌ها وجود ندارد.

علاوه بر اعتبارسنجی عددی، این پروژه بررسی‌های کامل WER را انجام می‌دهد. هر مدل از طریق هزاران عبارت عبور کرده تا تطابق خروجی با مرجع تأیید شود. این نتایج به‌صورت عمومی در مخزن گیت‌هاب transcribe.cpp و در کنار هر مدل در Hugging Face منتشر شده‌اند تا کاربر با اطمینان کامل مدل را انتخاب کند.

عملکرد سخت‌افزاری و بنچمارک

استنتاج محلی دیگر مختص کاربران حرفه‌ای یا سیستم‌های گران‌قیمت نیست. توسعه‌دهنده تأیید کرد که یک RK3566 — که یک CPU نسبتاً کم‌توان است — می‌تواند مدل‌ها را از طریق transcribe.cpp سریع‌تر از زمان واقعی (Real-time) اجرا کند. این ثابت می‌کند که بازشناسی باکیفیت می‌تواند تنها با مصرف چند وات انرژی در دستگاه‌های Edge عمل کند.

برای تضمین عملکرد پایدار، یک کفِ محک (Benchmark floor) تعریف شده است. هر مدل پشتیبانی‌شده، نتایج محک روی سخت‌افزارهای زیر را دارد:

  • یک Ryzen 4750U (اجرای CPU + Vulkan در سیستم‌عامل Fedora).
  • یک مک با تراشه قدرتمند M4 Max.

تأکید بر پشتیبانی از Vulkan برای ایجاد یک استاندارد پایه در هر اپلیکیشنی است که استنتاج محلی ارائه می‌دهد؛ تا شتاب‌دهنده GPU در سخت‌افزارهای متنوع، فارغ از نوع سیستم‌عامل، در دسترس باشد و عملکردی یکپارچه ارائه دهد.

اکوسیستم و قدردانی

این پروژه با حمایت‌های جدی جامعه AI شکل گرفت. Mozilla AI و برنامه BiR آن‌ها، به‌ویژه Davide از Mozilla AI، حمایت‌های اولیه را فراهم کردند تا پروژه از یک مشکل مفهومی در اپلیکیشن Handy به یک کتابخانه مستقل و کاربردی تبدیل شود.

زیرساخت‌های فنی دیگر توسط این مراکز تأمین شد:

  • Modal: ارائه اعتبارات پردازشی برای تأیید CUDA و انجام تست‌های سنگین و زمان‌بر WER.
  • Blacksmith: تأمین اعتبار برای خط لوله‌ی CI/CD جهت اطمینان از اینکه تمامی نسخه‌های منتشر شده تست شده‌اند.
  • Hugging Face: ارائه فضای ذخیره‌سازی خصوصی برای سازمان handy-computer جهت میزبانی و آپلود مدل‌های تأییدشده.
  • ggml: چارچوب بنیادینی که توزیع استنتاج محلی را در این مقیاس ممکن ساخت.

نویسنده همچنین پذیرفت که در ساخت این موتور از کمک هوش مصنوعی بهره برده است و اشاره کرد که برای یک فرد تنها، نوشتن چنین موتور بزرگی بر پایه ggml در عرض چند ماه بدون این کمک غیرممکن بود؛ هرچند تأکید کرد که مستندات و تمام ارتباطات پروژه کاملاً توسط انسان نوشته شده است.

تأثیر بر بازشناسی گفتار محلی

این کتابخانه گامی به سوی «حاکمیت محاسباتی» برای افراد است. با اثبات اینکه مدل‌های SOTA را می‌توان با چند وات در سخت‌افزارهای مصرف‌کننده اجرا کرد، نیاز به ارسال داده‌های حساس صوتی به سرویس‌های ابری از بین می‌رود. این یک واقعیت فیزیکی و فنی است که ASR می‌تواند روی اکثر دستگاه‌های مدرن با دقت بسیار بالا اجرا شود.

برای توسعه‌دهندگان، اثر درجه-دوم این اتفاق، کاهش شدید بدهی فنی است. به‌جای مدیریت سه بک-اند استنتاج مختلف (مثل ONNX و MLX)، آن‌ها می‌توانند از یک هسته C با یک Wrapper رسمی استفاده کنند و خط لوله ساخت (Build pipeline) را برای اپلیکیشن‌های دسکتاپ و موبایل به‌شدت ساده سازند. این ابزار اجازه می‌دهد توسعه‌دهنده صرفاً یک فایل را دانلود کند و با اطمینان کامل، استنتاج را اجرا نماید.

در نسخه v0.1.0، کتابخانه هنوز نقاطی برای بهبود یا «لبه‌های زبر» دارد که نویسنده جامعه کاربران را به یافتن و رفع آن‌ها دعوت می‌کند. با این حال، چون این پروژه به اپلیکیشن محبوب Handy گره خورده و توسط maintainer پشتیبانی می‌شود، سطح تداوم و تست بالاتری نسبت به مخازن گیت‌هاب ناشناس دارد. نویسنده قصد دارد با تکیه بر موارد استفاده واقعی در Handy، یک مشارکت‌کننده مستمر در اکوسیستم متن‌باز باقی بماند.

شما می‌توانید وزن‌های مدل‌های تأییدشده و نتایج بنچمارک‌ها را مستقیماً در مخزن گیت‌هاب transcribe.cpp یا سازمان handy-computer در Hugging Face بررسی کنید.

گام بعدی شما

  • اگر توسعه‌دهنده اپلیکیشن‌های دسکتاپ یا موبایل هستید، transcribe.cpp را به‌جای ترکیب‌های پیچیده ONNX/MLX تست کنید.
  • نتایج WER مدل‌های تأییدشده را در سازمان handy-computer در Hugging Face بررسی کنید تا دقیق‌ترین مدل را برای زبان خود بیابید.
  • برای بهینه‌سازی مصرف انرژی در دستگاه‌های Edge، قابلیت‌های شتاب‌دهنده Vulkan را در این کتابخانه پیاده‌سازی کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این پروژه با تکیه بر اعتبار جامعه ggml و تأییدات عددی، ریسک استقرار مدل‌های ASR را برای توسعه‌دهندگان به‌شدت کاهش می‌دهد. در نتیجه، حریم خصوصی کاربران با انتقال پردازش صوت از ابر به دستگاه‌های محلی (Sovereign AI) تضمین می‌شود.

تأثیر برای ایران

این کتابخانه به‌دلیل متن‌باز بودن و اجرا بر روی سخت‌افزارهای محلی، بهترین مسیر برای توسعه‌دهندگان ایرانی است تا بدون نیاز به پرداخت ارزی یا مواجهه با تحریم‌های API، سیستم‌های بازشناسی گفتار دقیق را پیاده‌سازی کنند.

·نگاه ما
تحریریه دات‌هوش

تلفیق استاندارد ggml با یک لایه‌ی تأیید عددی سخت‌گیرانه، بزرگ‌ترین نقطه قوت این پروژه است. این رویکرد، اعتماد (Trust) را به جای سرعتِ صرف در اولویت قرار داده و به توسعه‌دهندگان اجازه می‌دهد بدون ترس از «توهمات» یا خطاهای تبدیل فرمت، مدل‌ها را مستقر کنند. این حرکت، الگوی توزیع مدل‌های محلی را از «امتحان کن و ببین» به «تأیید شده و اجرا کن» تغییر می‌دهد.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.