Package: tafrigh
تفريغتفريغ المواد المرئية أو المسموعة إلى نصوص.يمكنك الاطلاع على أمثلة تم تفريغها باستخدام تفريغ منهنا.مميزات تفريغتفريغ المواد المرئي والمسموع إلى نصوص باستخدام أحدث تقنيات الذكاء الاصطناعي المقدمة من شركة OpenAIإمكانية تفريغ المواد باستخدام تقنيات wit.ai المقدمة من شركة Facebookتحميل المحتوى المرئي بشكل مباشر من منصة YouTube سواءً كان المستهدف مادة واحدة أو قائمة تشغيل كاملةتوفير صيَغ مخرجات مختلفة كـtxtوsrtوvttوcsvوtsvوjsonمتطلبات الاستخداميُفضّل وجود معالج رسوميات قوي في حاسبك في حال استخدام نماذج Whisperتثبيت لغة Python بإصدار 3.9 أو أعلى على حاسبكتثبيت برمجيةFFmpegعلى حاسبكتثبيت برمجيةyt-dlpعلى حاسبكتثبيت تفريغمن خلالpipيمكنك تثبيت تفريغ من خلالpipباستخدام الأمر:pip install tafrigh[wit,whisper]من خلال الشيفرة المصدريةقم بتنزيل هذا المستودع من خلال الضغط على Code ثم Download ZIP أو من خلال تنفيذ الأمر التالي:git clone git@github.com:ieasybooks/tafrigh.gitقم بفك ضغط الملف إذا قمت بتنزيله بصيغة ZIP وتوجّه إلى مجلد المشروعقم بتنفيذ الأمر التالي لتثبيت تفريغ:pip install .[wit,whisper]من خلال مستودع GitHubيمكن تثبيت تفريغ من خلال مستودع GitHub مباشرة عن طريق تنفيذ الأمر:pip install "tafrigh[wit,whisper] @ git+https://github.com/ieasybooks/tafrigh".يمكنك تحديد الاعتماديات التي تريد تثبيتها حسب نوع التقنية التي تريد استخدامها من خلال كتابةwitأوwhisperبين قوسين مربعين كما هو موضّح في الأوامر السابقة.استخدام تفريغالخيارات المتوفرةالمدخلاتالروابط أو مسارات الملفات: يجب تمرير الروابط أو مسارات الملفات للمواد المُراد تفريغها بعد اسم أداة تفريغ بشكل مباشر. على سبيل المثال:tafrigh "https://yout..." "https://yout..." "C:\Users\ieasybooks\leactue.wav"تخطي عملية التفريغ في حال وجود المخرجات مسبقًا: يمكن تمرير الاختيار--skip_if_output_existلتخطي عملية التفريغ إذا كانت المخرجات المطلوبة موجودة بالفعل في مجلد الإخراج المحددالمواد المُراد تفريفها من قائمة التشغيل: يمكن تحديد نطاق معين من المواد ليتم تفريغه من قائمة التشغيل من خلال الاختيار--playlist_itemsمن خلال تمرير قيمة على صيغة"[START]:[STOP][:STEP]". على سبيل المثال، عند تمرير2:5سيتم تحميل المواد من2إلى5من قائمة التشغيل. هذا الاختيار يُؤثّر على كل قوائم التشغيل التي يتم تمريرها كمدخلات لتفريغخيارات تقنية Whisperالنموذج: يمكنك تحديد النموذج من خلال الاختيار--model_name_or_path. النماذج المتوفرة:tiny.en(لغة انجليزية فقط)tiny(الأقل دقة)base.en(لغة انجليزية فقط)basesmall.en(لغة انجليزية فقط)small(الاختيار الإفتراضي)medium.en(لغة انجليزية فقط)mediumlarge-v1large-v2large(الأعلى دقة)اسم نموذج Whisper موجود على HuggingFace Hubمسار نموذج Whisper تم تحميلة مسبقًامسار نموذج Whisper تم تحويله باستخدام أداةct2-transformers-converterلاستخدام المكتبة السريعةfaster-whisperالمهمة: يمكنك تحديد المهمة من خلال الاختيار--task. المهمات المتوفرة:transcribe: تحويل الصوت إلى نص(الاختيار الإفتراضي)translation: ترجمة الصوت إلى نص باللغة الانجليزيةاللغة: يمكنك تحديد لغة الصوت من خلال الاختيار--language. على سبيل المثال، لتحديد اللغة العربية قم بتمريرar. إذا لم يتم تحديد اللغة، سيتم التعرف عليها تلقائيااستخدام نسخة أسرع من نماذج Whisper: من خلال تمرير الاختيار--use_faster_whisperسيتم استخدام النسخة الأسرع من نماذج Whisperحجم نطاق البحث: يمكنك تحسين النتائج باستخدام اختيار--beam_sizeوالذي يسمح لك بإجبار النموذج على البحث في نطاق أوسع من الكلمات أثناء إنشاء النص. القيمة الإفتراضية هي5طريقة ضغط النموذج: يمكنك تحديد الطريقة التي تم بها ضغط النموذج أثناء تحويله باستخدام أداةct2-transformers-converterمن خلال تمرير الاختيار--ct2_compute_type. الطرق المتوفرة:default(الاختيار الإفتراضي)int8int8_float16int16float16خيارات تقنية Witمفاتيحwit.ai: يمكنك استخدام تقنياتwit.aiلتفريغ المواد إلى نصوص من خلال تمرير المفتاح أو المفاتيح الخاصة بك للاختيار--wit_client_access_tokens. إذا تم تمرير هذا الاختيار، سيتم استخدامwit.aiلتفريغ المواد إلى نصوص. غير ذلك، سيتم استخدام نماذج Whisperتحديد أقصى مدة للتقطيع: يمكنك تحديد أقصى مدة للتقطيع والتي ستؤثر على طول الجمل في ملفات SRT و VTT من خلال تمرير الاختيار--max_cutting_duration. القيمة الافتراضية هي15المخرجاتضغط الأجزاء: يمكنك استخدام الاختيار--min_words_per_segmentللتحكم في أقل عدد من الكلمات التي يمكن أن تكون داخل جزء واحد من أجزاء التفريغ. القيمة الإفتراضية هي1، يمكنك تمرير0لتعطيل هذه الخاصيةيمكنك تمرير الاختيار--save_files_before_compactلحفظ الملفات الأصلية قبل أن يتم دمج أجزائها بناء على اختيار--min_words_per_segmentيمكنك حفظ مخرجات مكتبةyt-dlpبصيغةjsonمن خلال تمرير الاختيار--save_yt_dlp_responsesإخراج عينة من الأجزاء بعد الدمج: يمكنك تمرير قيمة للاختيار--output_sampleللحصول على عينة عشوائية من جميع الأجزاء التي تم تفريغها من كل المواد بعد دمجها بناء على اختيار--min_words_per_segment. القيمة الافتراضية هي0، أي أنه لن يتم إخراج أي عيناتصيغة المخرجات: يمكنك تحديد صيغة المخرجات من خلال الاختيار--output_formats. الصيغ المتوفرة:txtsrtvttcsvtsvjsonall(الاختيار الإفتراضي)none(لن يتم إنشاء ملف في حال تمرير هذه الصيغة)مجلد المخرجات: يمكنك تحديد مجلد الاخراج من خلال الاختيار--output_dir. بشكل تلقائي سيكون المجلد الحالي هو مجلد الاخراج إذا لم يتم تحديده➜ tafrigh --help
usage: tafrigh [-h] [--version] [--skip_if_output_exist | --no-skip_if_output_exist] [--playlist_items PLAYLIST_ITEMS] [--verbose | --no-verbose] [-m MODEL_NAME_OR_PATH] [-t {transcribe,translate}]
               [-l {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,he,hi,hr,ht,hu,hy,id,is,it,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,zh}]
               [--use_faster_whisper | --no-use_faster_whisper] [--beam_size BEAM_SIZE] [--ct2_compute_type {default,int8,int8_float16,int16,float16}] [-w WIT_CLIENT_ACCESS_TOKENS [WIT_CLIENT_ACCESS_TOKENS ...]]
               [--max_cutting_duration [1-17]] [--min_words_per_segment MIN_WORDS_PER_SEGMENT] [--save_files_before_compact | --no-save_files_before_compact] [--save_yt_dlp_responses | --no-save_yt_dlp_responses]
               [--output_sample OUTPUT_SAMPLE] [-f {all,txt,srt,vtt,csv,tsv,json,none} [{all,txt,srt,vtt,csv,tsv,json,none} ...]] [-o OUTPUT_DIR]
               urls_or_paths [urls_or_paths ...]

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

Input:
  urls_or_paths         Video/Playlist URLs or local folder/file(s) to transcribe.
  --skip_if_output_exist, --no-skip_if_output_exist
                        Whether to skip generating the output if the output file already exists. (default: False)
  --playlist_items PLAYLIST_ITEMS
                        Comma separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]".
  --verbose, --no-verbose
                        Whether to print out the progress and debug messages. (default: False)

Whisper:
  -m MODEL_NAME_OR_PATH, --model_name_or_path MODEL_NAME_OR_PATH
                        Name or path of the Whisper model to use.
  -t {transcribe,translate}, --task {transcribe,translate}
                        Whether to perform X->X speech recognition ('transcribe') or X->English translation ('translate').
  -l {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,he,hi,hr,ht,hu,hy,id,is,it,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,zh}, --language {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,he,hi,hr,ht,hu,hy,id,is,it,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,zh}
                        Language spoken in the audio, skip to perform language detection.
  --use_faster_whisper, --no-use_faster_whisper
                        Whether to use Faster Whisper implementation. (default: False)
  --beam_size BEAM_SIZE
                        Number of beams in beam search, only applicable when temperature is zero.
  --ct2_compute_type {default,int8,int8_float16,int16,float16}
                        Quantization type applied while converting the model to CTranslate2 format.

Wit:
  -w WIT_CLIENT_ACCESS_TOKENS [WIT_CLIENT_ACCESS_TOKENS ...], --wit_client_access_tokens WIT_CLIENT_ACCESS_TOKENS [WIT_CLIENT_ACCESS_TOKENS ...]
                        List of wit.ai client access tokens. If provided, wit.ai APIs will be used to do the transcription, otherwise whisper will be used.
  --max_cutting_duration [1-17]
                        The maximum allowed cutting duration. It should be between 1 and 17.

Output:
  --min_words_per_segment MIN_WORDS_PER_SEGMENT
                        The minimum number of words should appear in each transcript segment. Any segment have words count less than this threshold will be merged with the next one. Pass 0 to disable this behavior.
  --save_files_before_compact, --no-save_files_before_compact
                        Saves the output files before applying the compact logic that is based on --min_words_per_segment. (default: False)
  --save_yt_dlp_responses, --no-save_yt_dlp_responses
                        Whether to save the yt-dlp library JSON responses or not. (default: False)
  --output_sample OUTPUT_SAMPLE
                        Samples random compacted segments from the output and generates a CSV file contains the sampled data. Pass 0 to disable this behavior.
  -f {all,txt,srt,vtt,csv,tsv,json,none} [{all,txt,srt,vtt,csv,tsv,json,none} ...], --output_formats {all,txt,srt,vtt,csv,tsv,json,none} [{all,txt,srt,vtt,csv,tsv,json,none} ...]
                        Format of the output file; if not specified, all available formats will be produced.
  -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                        Directory to save the outputs.التفريغ من خلال سطر الأوامرالتفريغ باستخدام نماذج Whisperتفريغ مقطع واحدtafrigh "https://youtu.be/dDzxYcEJbgo" \
  --model_name_or_path small \
  --task transcribe \
  --language ar \
  --output_dir . \
  --output_formats txt srtتفريغ قائمة تشغيل كاملةtafrigh "https://youtube.com/playlist?list=PLyS-PHSxRDxsLnVsPrIwnsHMO5KgLz7T5" \
  --model_name_or_path small \
  --task transcribe \
  --language ar \
  --output_dir . \
  --output_formats txt srtتفريغ أكثر من مقطعtafrigh "https://youtu.be/4h5P7jXvW98" "https://youtu.be/jpfndVSROpw" \
  --model_name_or_path small \
  --task transcribe \
  --language ar \
  --output_dir . \
  --output_formats txt srtتسريع عملية التفريغيمكنك استخدام مكتبةfaster_whisperالتي توفّر سرعة أكبر في تفريغ المواد من خلال تمرير الاختيار--use_faster_whisperكالتالي:tafrigh "https://youtu.be/3K5Jh_-UYeA" \
  --model_name_or_path large \
  --task transcribe \
  --language ar \
  --use_faster_whisper \
  --output_dir . \
  --output_formats txt srtالتفريغ باستخدام تقنية wit.aiتفريغ مقطع واحدtafrigh "https://youtu.be/dDzxYcEJbgo" \
  --wit_client_access_tokens XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
  --output_dir . \
  --output_formats txt srt \
  --min_words_per_segment 10 \
  --max_cutting_duration 10تفريغ قائمة تشغيل كاملةtafrigh "https://youtube.com/playlist?list=PLyS-PHSxRDxsLnVsPrIwnsHMO5KgLz7T5" \
  --wit_client_access_tokens XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
  --output_dir . \
  --output_formats txt srt \
  --min_words_per_segment 10 \
  --max_cutting_duration 10تفريغ أكثر من مقطعtafrigh "https://youtu.be/4h5P7jXvW98" "https://youtu.be/jpfndVSROpw" \
  --wit_client_access_tokens XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
  --output_dir . \
  --output_formats txt srt \
  --min_words_per_segment 10 \
  --max_cutting_duration 10التفريغ من خلال الشيفرة البرمجيةيمكنك استخدام تفريغ من خلال الشيفرة البرمجية كالتالي:fromtafrighimportfarrigh,Configif__name__=='__main__':config=Config(urls_or_paths=['https://youtu.be/qFsUwp5iomU'],skip_if_output_exist=False,playlist_items='',verbose=False,model_name_or_path='tiny',task='transcribe',language='ar',use_faster_whisper=True,beam_size=5,ct2_compute_type='default',wit_client_access_tokens=[],max_cutting_duration=10,min_words_per_segment=10,save_files_before_compact=False,save_yt_dlp_responses=False,output_sample=0,output_formats=['txt','srt'],output_dir='.',)forprogressinfarrigh(config):print(progress)دالة "فَرِّغْ"farrighهي عبارة عن مُوَلِّدْ (Generator) يقوم بتوليد الحالة الحالية للتفريغ وأين وصلت العملية. إذا لم تكن بحاجة إلى تتبع هذا الأمر، يمكنك الاستغناء عن حلقة الدوران من خلال استخدامdequeكالتالي:fromcollectionsimportdequefromtafrighimportfarrigh,Configif__name__=='__main__':config=Config(...)deque(farrigh(config),maxlen=0)تم الاعتماد بشكل كبير على مستودعyt-whisperلإنجاز تفريغ بشكل أسرع.