WhisperX لوکال؛ پیادهسازی، زیرنویس و تشخیص گوینده برای تدوین
WhisperX لوکال برای تدوینگر فقط ابزار تبدیل صدا به متن نیست؛ alignment کلمهبهکلمه، VAD و diarization آن را به یک pipeline جدی برای مصاحبه، پادکست و زیرنویس تبدیل میکند. کیفیت نهایی همچنان به زبان، صدای ورودی و بازبینی انسانی وابسته است.

WhisperX لوکال برای تدوینگر، پادکستر یا تیم مستند جذاب است چون مسئله را از «یک فایل متن بده» جلوتر میبرد. در تدوین، زمان مهم است: باید بدانید هر کلمه کجا گفته شده و در گفتوگوی چندنفره چه کسی آن را گفته است.
WhisperX برای همین دو لایه معروف شده: word-level alignment و speaker diarization.
WhisperX لوکال چه چیزی اضافه میکند؟
پروژه WhisperX روی faster-whisper بنا شده و در README رسمی این قابلیتها را برجسته میکند:
- batched inference؛
- timestamp کلمهبهکلمه با alignment؛
- speaker diarization؛
- VAD preprocessing.
منبع رسمی: WhisperX
Whisper اصلی timestamp segment میدهد؛ WhisperX با forced alignment تلاش میکند زمان کلمات را دقیقتر کند.
Forced Alignment یعنی چه؟
فرض کنید transcript این است:
«امروز درباره تدوین صحبت میکنیم.»
ASR متن را میفهمد، اما برای subtitle یا text-based editing باید زمان هر کلمه مشخص باشد.
Alignment از مدل آوایی کمک میگیرد تا کلمهها را روی waveform بنشاند.
نتیجه برای:
- subtitle؛
- karaoke highlight؛
- جستوجوی جمله؛
- cut based on transcript
مفید است.
Diarization؛ چه کسی حرف زد؟
در مصاحبه دو نفره، متن بدون speaker label ناقص است.
Diarization صوت را به بخشهایی تقسیم میکند و برچسب میزند:
- SPEAKER_00
- SPEAKER_01
- SPEAKER_02
این برچسبها اسم واقعی افراد نیستند. بعداً میتوانید با شنیدن نمونه، آنها را به نام تبدیل کنید.
در WhisperX این بخش معمولاً با pyannote انجام میشود و نیازهای model access/token خودش را دارد.
VAD چرا مهم است؟
Voice Activity Detection مشخص میکند کجا واقعاً گفتار وجود دارد.
بدون VAD ممکن است سکوت، موسیقی یا noise وارد بخشهای transcription شود و hallucination افزایش یابد.
برای فایل طولانی، VAD همچنین batching را منطقیتر میکند.
Workflow تدوین مصاحبه
۱. Audio Extract
از master ویدئو یک WAV تمیز بگیرید.
۲. Cleanup سبک
noise شدید و hum را قبل از ASR کنترل کنید؛ processing افراطی هم میتواند گفتار را خراب کند.
۳. Transcription
مدل مناسب زبان را اجرا کنید.
۴. Alignment
timestampهای کلمهای تولید شوند.
۵. Diarization
گویندهها جدا شوند.
۶. Human QC
اسمها، عددها و اصطلاحات اصلاح شوند.
۷. Export
SRT/VTT/JSON یا قالب مناسب نرمافزار تدوین.
چرا JSON را نگه داریم؟
SRT برای تحویل خوب است، اما JSON غنیتر است:
- start؛
- end؛
- word؛
- confidence؛
- speaker.
اگر بعدها بخواهید search، highlight یا تحلیل بسازید، JSON master ارزش دارد.
Subtitle با Transcript فرق دارد
Transcript میتواند جمله کامل و طولانی باشد. Subtitle باید خوانا باشد.
بعد از ASR هنوز باید:
- line length؛
- reading speed؛
- break point؛
- punctuation؛
- speaker change
را تنظیم کنید.
AI transcription اولین مرحله است، نه فایل تحویل نهایی.
سرعت 70x را چگونه بخوانیم؟
README رسمی WhisperX برای یک benchmark با large-v2 عدد تا 70x realtime را ذکر میکند. این عدد مربوط به شرایط خاص benchmark است و نباید آن را تضمین هر سیستم دانست.
GPU، batch size، audio length و model version روی سرعت اثر دارند.
مهمتر از عدد تبلیغاتی، benchmark روی فایل واقعی شماست.
VRAM
مستندات پروژه برای large-v2 با beam_size=5 به مصرف کمتر از 8GB GPU memory اشاره میکند.
اما اگر diarization، مدل دیگر یا batch بزرگ دارید، مصرف کل pipeline متفاوت میشود.
راهنمای GPU و VRAM برای برنامهریزی سیستم مفید است.
فارسی و اسم خاص
Whisper چندزبانه است، ولی نام برند، اسم محلی، اصطلاح فنی و ترکیب فارسی/انگلیسی میتواند اشتباه شود.
یک dictionary پروژه بسازید:
- نام افراد؛
- شرکت؛
- محصول؛
- اصطلاح تخصصی؛
- مکان.
در مرحله QC این موارد را search و اصلاح کنید.
گفتار همزمان؛ دشمن Diarization
اگر دو نفر روی هم حرف بزنند، separation و speaker assignment سخت میشود.
برای ضبط حرفهای:
- میکروفن جدا؛
- track جدا؛
- bleed کمتر
ارزش بیشتری از هر مدل هوش مصنوعی دارد.
اگر isolated track دارید، از آن استفاده کنید؛ diarization را برای چیزی که از قبل جداست مجبور نکنید.
فایلهای طولانی را پروژهبندی کنید
برای جلسه ۴ ساعته، output را در یک فایل رها نکنید.
پوشه پیشنهادی:
- audio_original
- audio_clean
- transcript_raw
- transcript_aligned
- transcript_qc
- subtitles
- metadata
این ساختار بازگشت به نسخه خام را ساده میکند.
کاربرد فراتر از Subtitle
WhisperX میتواند داده پایه این کارها باشد:
- خلاصه جلسه؛
- استخراج quote؛
- chaptering پادکست؛
- search آرشیو؛
- RAG روی مصاحبهها؛
- ساخت rough cut.
برای اتصال transcript به دانش پروژه، RAG لوکال را ببینید.
Privacy
مصاحبه منتشرنشده یا جلسه داخلی محتوای حساس است. Local transcription مزیت مهمی دارد چون audio میتواند روی workstation بماند.
ولی dependencyهای diarization یا دانلود مدلها را بشناسید و tokenها را داخل script عمومی قرار ندهید.
Human QC حذف نمیشود
این بخشها را دستی بررسی کنید:
- عدد؛
- اسم؛
- اصطلاح پزشکی/حقوقی؛
- جمله مبهم؛
- گفتار همزمان؛
- کلمه سانسورشده یا حذفشده؛
- punctuation.
برای محتوای عمومی، یک خطای کوچک subtitle میتواند معنای جمله را عوض کند.
Automation
بعد از پایدار شدن pipeline میتوانید فایل جدید را خودکار:
- detect کنید؛
- transcribe کنید؛
- JSON ذخیره کنید؛
- خلاصه بسازید؛
- subtitle draft تولید کنید.
اتوماسیون Local AI با n8n مرحله بعدی طبیعی است.
جمعبندی
WhisperX لوکال برای workflow تدوین ارزشش را در زمانبندی دقیقتر، speaker label و خروجی ساختاریافته نشان میدهد. بهترین نتیجه وقتی است که ضبط خوب، pipeline منظم و QC انسانی کنار مدل باشند.
پرسشهای متداول
WhisperX چه تفاوتی با Whisper معمولی دارد؟
WhisperX از faster-whisper برای inference، forced alignment برای timestamp دقیقتر کلمهای و pyannote برای diarization گویندگان استفاده میکند.
Diarization چیست؟
فرایند تشخیص این است که در هر بخش چه کسی صحبت میکند؛ خروجی معمولاً برچسبهایی مانند SPEAKER_00 و SPEAKER_01 دارد.
آیا WhisperX زیر 8GB VRAM اجرا میشود؟
README رسمی برای large-v2 با beam_size=5 مصرف کمتر از 8GB GPU memory را ذکر کرده، اما نسخه، batch و تنظیمات واقعی میتوانند مصرف را تغییر دهند.
آیا خروجی WhisperX نیاز به بازبینی دارد؟
بله. اسم خاص، عدد، گفتار همزمان، نویز، لهجه و زبانهای کمداده میتوانند خطا ایجاد کنند.


