برنامه نویسی

ایجاد زیرنویس‌های ویدیویی Whisper: OpenAI VTT

🤫 Whisper چیست؟

در این پست، ما می بینیم که چگونه می توانید شروع به ایجاد زیرنویس های ویدیویی Whisper در دستگاه محلی خود کنید. بدون GPU. قبل از اینکه به آن بپردازیم، چند اصطلاح وجود دارد که باید در آنجا باز کنیم! زیرنویس‌های بسته رونویسی های متنی هستند که روی ویدیوها روی هم قرار گرفته اند. آنها برای دسترسی فوق العاده هستند و همیشه باید سعی کنید آنها را در نظر بگیرید. شما بدون شک از پیشرفت های اخیر در منبع باز آگاه خواهید بود هوش مصنوعی (هوش مصنوعی). ChatGPT اخیراً توجه را به خود جلب کرده است، اما قبل از آن ابزارهای تولید تصویر DALL-E، Midjourney و Stable Diffusion AI را داشتیم. با تبلیغات زیاد پیرامون آنها، ممکن است Whisper را از دست داده باشید.

نجوا از OpenAI رونویسی را از صدای گفتاری در داخل تولید می کند انگلیسی و سایر زبان ها. شما از مدل‌های زبان آموزش‌دیده Whisper برای رونویسی استفاده می‌کنید و حتی می‌توانید صدا را به یک زبان به رونویسی در زبان دیگر ترجمه کنید. Whisper نشان دهنده یک تغییر پله ای در سرعت و وفاداری در مقایسه با سایر مدل های معاصر است. یوتیوب یک سرویس رایگان ارائه می دهد که صادقانه بگویم من فکر می کردم شگفت انگیز است. این تا زمانی بود که Whisper را امتحان کردم! همه مدل ها کلمه عجیب و غریب را اشتباه می گیرند، به خصوص در یک زمینه مبهم. متوجه شدم Whisper این کار را بسیار کمتر از YouTube انجام می دهد. علاوه بر این، برای ویدیوهای طولانی‌تر، اغلب منتظر طولانی‌مدت برای ایجاد آهنگ زیرنویس بسته YouTube بودم.

پردازنده‌های گرافیکی از کجا وارد آن می‌شوند؟

به نظر می رسد که GPU ها، فناوری تولید گرافیک واقعی در کنسول بازی شما، در وظایف یادگیری ماشین نیز بسیار خوب هستند. آموزش مدل های یادگیری ماشین و همچنین اجرای آنها بر روی یک GPU می تواند زمان مورد نیاز برای این کارها را در مقایسه با CPU (پردازنده اصلی سنتی در رایانه ها) به شدت کاهش دهد.

فقط برای اجرای رونویسی خود نیازی به خرید یک GPU گران قیمت ندارید! خدماتی مانند Paperspace (رایگان و پولی) محاسبات GPU را ارائه می دهند. این به شما امکان می دهد مدل Whisper Python را برای مثال در نوت بوک های Jupyter مبتنی بر وب اجرا کنید. دقیقاً همان چیزی است که من برای اولین بار از Whisper استفاده کردم. با این حال، خواهیم دید، اگر صدای شما خیلی طولانی نیست (یا در عوض صبور هستید) می توانید کد C++ را به صورت محلی روی CPU خود اجرا کنید. اگر می خواهید ببینید چگونه، به ادامه مطلب بروید!

🖥️ اجرای Whisper C++ روی CPU محلی خود

whisper.cpp یک پیاده سازی سبک وزن ++ C است که توسط Georgi Gerganov از مدل اصلی Whisper Python ساخته شده است. این برای اجرا بر روی پردازنده های سیلیکون اپل بهینه شده است، اما روی پردازنده های اینتل نیز اجرا می شود. این برنامه فشرده CPU است، بنابراین برای اجرا بر روی لپ تاپ 15 ساله شما، که در حال حاضر روی آخرین پاهای آن است، ایده آل نیست! برای پیروی از این راهنما، باید راحت کد را در ترمینال اجرا کنید. دانستن C++ ضروری نیست، اما برخی از تجربیات قبلی در کامپایل کدهای C++ کمک می‌کند تا تنظیمات را کمی آسان‌تر کنید.

🧱 ما چه می سازیم؟

ما یک خط لوله برای تبدیل ویدئو MP4 به آن خواهیم ساخت آهنگ متن ویدیوی وب فایل‌های زیرنویس بسته (WebVTT همچنین VTT). می توانید VTT را به همراه ویدیوی خود در YouTube، Mux یا سایر سرویس ها آپلود کنید.

مراحلی که قرار است طی کنیم:

  1. تبدیل ویدئو MP4 به صوتی MP3.
  2. صدای MP3 را به wav تبدیل کنید (whisper.cpp در حال حاضر فقط از ورودی wav پشتیبانی می کند).
  3. از whisper.cpp برای تولید یک فایل VTT استفاده کنید.
  4. فایل VTT تولید شده را به صورت دستی تصحیح کنید.

⚙️ تدوین whisper.cpp

قبل از اینکه بتوانید از whisper.cpp استفاده کنید، باید مخزن را شبیه سازی کنید و کد C++ را در یک باینری کامپایل کنید. ما از CMake برای کمک به ساخت باینری استفاده می کنیم. CMake ابزار بین پلتفرمی است که هنگام کار با C++ مفید است. این یک فایل ساخت ایجاد می کند و مسیرهای کامپایلر را برای هر کتابخانه شخص ثالث تنظیم می کند. در macOS، می‌توانید CMake را با Homebrew نصب کنید. ما همچنین باید FFmpeg را به صورت محلی نصب کنیم، پس بیایید با یک اسکون به دو پرنده غذا دهیم!

brew install cmake ffmpeg
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس می‌توانیم مخزن whisper.cpp را شبیه‌سازی کنیم و برنامه را از ترمینال بسازیم و کامپایل کنیم:

git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
mkdir build
cd build
cmake ..
make
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر همه چیز خوب پیش رفت، فایل برنامه اجرایی در آن قرار خواهد گرفت build/bin/main. شما می توانید آن را در آنجا نگه دارید، در حالی که هنوز در حال آزمایش و بازی هستید.

دانلود مدل

خود Whisper مدل های مختلفی دارد. برخی از آنها به whisper.cpp منتقل می شوند. این مدل‌ها در پیچیدگی و زبان‌هایی که در آن تخصص دارند، متفاوت هستند انگلیسی من پیدا کردم متوسط مدل (medium.en) بسیار دقیق است و همچنین در زمان معقول اجرا می شود. اگر به چیزی سریعتر اما بالقوه کمتر دقیق نیاز دارید، مدل های کوچک یا کوچک را امتحان کنید. ما باید مدل را دانلود کنیم اولین. بارگذاری medium.en اجرا کن:

sh ../models/download-ggml-model.sh medium.en
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را باز کن models دایرکتوری مخزن برای مشاهده لیست کامل مدل های موجود. این همه راه‌اندازی است، بنابراین در ادامه می‌توانیم نحوه ایجاد زیرنویس‌ها را ببینیم.

☑️ ایجاد و تصحیح زیرنویس‌های Whisper

  1. این مرحله برای راحتی است؛ شما اصلاحات دستی خود را (در مرحله آخر) با MP3 تولید شده در اینجا اجرا خواهید کرد. ما در مرحله بعد یک فایل wav تولید می کنیم تا whisper.cpp از آن به عنوان ورودی استفاده کند.

    ffmpeg -i video.mp4 -vn -codec:a libmp3lame -q 2 \
    video-audio.mp3
    

    اینجا video.mp4 نام فایل ویدیوی اصلی ما با فرمت MP4 و video-audio.mp3 یک آهنگ صوتی با فرمت MP3 است که FFmpeg برای ما تولید می کند.

  2. در زمان نگارش، whisper.cpp فقط ورودی صوتی 16k، مونو (در مقابل استریو) را می پذیرد. این کمی محدودتر از مدل Python Whisper است. با این حال، تبدیل از ترمینال با استفاده از FFmpeg ساده است.

    ffmpeg -i video-audio.mp3 -ar 16000 -ac 1 \
    -c:a pcm_s16le video-audio.wav
    

    اینجا video-audio.mp3 فایل صوتی MP3 ورودی است و video-audio.wav خروجی wav است که FFmpeg برای ما تولید می کند.

  3. زیرنویس را با whisper.cpp ایجاد کنید.

    ./bin/main -f video-audio.wav -ovtt \
    -m ../models/ggml-medium.en.bin
    

    -ovtt به برنامه whisper.cpp می گوید که ما خروجی VTT می خواهیم و -m flag به برنامه می گوید که از کدام مدل استفاده کند. اگر قبلاً مدل دیگری را دانلود کرده اید، مسیر را در اینجا به روز کنید. whisper.cpp خروجی a را خواهد داشت jfk.wav.vtt فایل با شرح در مرحله بعد به این نیاز خواهید داشت.

  4. خروجی whisper.cpp VTT معمولاً به برخی اصلاحات دستی نیاز دارد، مانند تصحیح برخی املای نام، به عنوان مثال. Happy Scribe یک ابزار آنلاین رایگان است که آهنگ VTT را با پخش همگام می‌کند و اصلاحات دستی را آسان می‌کند. فایل VTT خود را با استفاده از دیالوگی که هنگام بارگیری صفحه برای اولین بار ظاهر می شود، اضافه کنید. آن را در نیمه پایین صفحه با مُهر زمانی بارگذاری می‌کنید. این ویرایشگر است. بعد، در نیمه بالایی، کلیک کنید فایل ویدیویی را انتخاب کنید. این MP3 را می پذیرد. ویرایشگر نسبتاً شهودی است. اگر روی یک عنوان کلیک کنید، پخش به طور خودکار به آن نقطه از آهنگ می‌پرد. وقتی از ویرایش‌ها راضی هستید، روی نماد دانلود در گوشه سمت راست بالا کلیک کنید و می‌توانید زیرنویس‌های تصحیح‌شده را با فرمت SRT یا VTT ذخیره کنید.

ایجاد زیرنویس‌های ویدیویی Whisper: تصویربرداری از صفحه، گفتگوی ورودی را برای آپلود یک فایل VTT یا SRT در سایت Happy Scribe نشان می‌دهد.

🙌🏽 ایجاد زیرنویس‌های ویدیویی Whisper: Wrapping Up

در این پست، نگاهی کوتاه به نحوه ایجاد زیرنویس‌های ویدیویی Whisper داشتیم. به ویژه دیدیم:

  • که whisper.cpp جایگزینی برای Whisper Python است و می تواند بدون GPU اجرا شود
  • چگونه whisper.cpp را کامپایل و بسازید
  • چگونه می توانید استفاده کنید Happy Scribe به صورت دستی برای تصحیح زیرنویس های ایجاد شده توسط هوش مصنوعی

ما جزئیاتی را در این پست مرور کردیم، بنابراین لطفاً اگر هر جنبه ای می تواند با توضیح بیشتر به من اطلاع دهید.

🙏🏽 ایجاد زیرنویس ویدیوی Whisper: بازخورد

آیا پست را مفید دیدید؟ آیا ترجیح می دهید به جای آن پست های مربوط به موضوع دیگری را ببینید؟ با ایده هایی برای پست های جدید در تماس باشید. همچنین، اگر سبک نوشتن من را دوست دارید، اگر می توانم چند پست برای سایت شرکت شما به صورت مشاوره ای بنویسم، تماس بگیرید. برای یافتن راه‌های ارتباط، ادامه مطلب را بخوانید. اگر می‌خواهید از پست‌های مشابه این پست حمایت کنید و می‌توانید از چند دلار، یورو یا پوند صرفه‌جویی کنید، لطفاً از طریق خرید برای من قهوه حمایت کنید.

در نهایت، با خیال راحت پست را در حساب های رسانه های اجتماعی خود برای همه دنبال کنندگان خود به اشتراک بگذارید که آن را مفید می دانند. علاوه بر گذاشتن نظر در زیر، می‌توانید از طریق @askrodney در توییتر، @rodney@toot.community در Mastodon و همچنین اتاق #rodney Element Matrix در تماس باشید. همچنین، راه های بیشتر برای تماس با رادنی لب را ببینید. من به طور منظم در Astro و همچنین C++ پست می گذارم. همچنین با عضویت در خبرنامه از آخرین پروژه های ما مطلع شوید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا