Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

e2dub 0.2.12

افزونه دوبله زنده شبکه‌های تلویزیونی برای DreamOS / Enigma2 با استفاده از Gemini Live Translation.

e2dub صدای شبکه در حال پخش را به Gemini می‌فرستد، ترجمه فارسی را دریافت می‌کند و آن را همراه تصویر اصلی شبکه روی Dreambox و، در صورت نیاز، روی لپ‌تاپ پخش می‌کند.

  • دستگاه هدف: Dreambox One با پردازنده ARM64
  • رابط Enigma2: سازگار با Python 2.7
  • زبان مقصد: فارسی (fa)
  • تشخیص زبان مبدأ: خودکار
  • مدل: gemini-3.5-live-translate-preview
  • بدون Google SDK و بدون سرور واسطه
  • کانال تلگرام: t.me/routekernel1

امکانات

  • دوبله زنده مستقیم بین Dreambox و Google از طریق WebSocket
  • حفظ تصویر اصلی شبکه و جایگزینی/میکس صدای ترجمه‌شده
  • تشخیص خودکار تغییر شبکه و راه‌اندازی مجدد ترجمه
  • reconnect خودکار در قطع موقت اینترنت یا Gemini
  • کنترل صدای اصلی شبکه از صفر تا صد با کلیدهای چپ و راست
  • کاهش خودکار صدای اصلی هنگام پخش گفتار ترجمه‌شده
  • نمایش نام شبکه، فرکانس، ماهواره و نسخه افزونه
  • خروجی دوم MPEG-TS برای تماشای تصویر و صدای ترجمه‌شده در لپ‌تاپ
  • پاک‌سازی processها و بازگرداندن شبکه اصلی هنگام Stop یا حذف افزونه

نصب

فایل DEB نسخه ARM64 را در مسیر /tmp ریسیور کپی کنید و سپس از SSH اجرا کنید:

dpkg -i /tmp/enigma2-plugin-extensions-e2dub_0.2.12_arm64.deb

پس از نصب، رابط Enigma2 به‌صورت خودکار restart می‌شود. اگر restart انجام نشد:

systemctl restart enigma2

بررسی نسخه نصب‌شده:

dpkg -s enigma2-plugin-extensions-e2dub | grep '^Version:'

تنظیم API Key

فایل API Key فقط در این مسیر خوانده می‌شود:

/root/apikey.txt

این فایل هنگام نصب اولیه ساخته می‌شود. فقط API Key را داخل آن قرار دهید؛ فاصله، عنوان یا متن دیگری اضافه نکنید. سپس سطح دسترسی را بررسی کنید:

chmod 600 /root/apikey.txt
chown root:root /root/apikey.txt

API Key هیچ‌گاه در لاگ e2dub نوشته نمی‌شود.

هشدار: هنگام حذف یا purge بسته، فایل /root/apikey.txt نیز حذف می‌شود. قبل از uninstall در صورت نیاز از کلید خود نسخه پشتیبان بگیرید.

استفاده روی تلویزیون

  1. شبکه تلویزیونی موردنظر را باز کنید.
  2. از Plugin Browser افزونه e2dub را اجرا کنید.
  3. با کلیدهای LEFT و RIGHT میزان صدای اصلی شبکه را انتخاب کنید.
  4. کلید سبز (GREEN) را برای Start بزنید.
  5. صفحه افزونه و منوها بسته می‌شوند و تصویر تمام‌صفحه باقی می‌ماند.
  6. تا دریافت اولین ترجمه، پیام Please wait for translation نمایش داده می‌شود.

پس از دریافت اولین صوت، Enigma2 به خروجی نهایی e2dub سوییچ می‌کند.

توقف ترجمه

دوباره e2dub را باز کنید و کلید قرمز (RED) را بزنید. همه processها بسته می‌شوند و سرویس اصلی شبکه بازگردانده می‌شود.

کلید EXIT فقط صفحه افزونه را می‌بندد و ترجمه فعال را متوقف نمی‌کند.

تغییر شبکه

هنگام فعال‌بودن e2dub می‌توانید شبکه را تغییر دهید. افزونه تغییر شبکه را تشخیص می‌دهد و pipeline ترجمه را برای شبکه جدید بازسازی می‌کند.

کنترل صدای اصلی شبکه

نوار سبز و عدد کنار آن مقدار صدای اصلی را نشان می‌دهند. هر بار فشردن کلید چپ یا راست مقدار را پنج درصد تغییر می‌دهد.

  • 0%: فقط صدای ترجمه‌شده پخش می‌شود.
  • بیشتر از 0%: صدای اصلی هنگام سکوت ترجمه شنیده می‌شود.
  • هنگام صحبت ترجمه‌شده، صدای اصلی به‌صورت خودکار کاهش می‌یابد.

تغییر مقدار فوراً ذخیره می‌شود. اگر e2dub فعال باشد، پس از حدود ۸۰۰ میلی‌ثانیه pipeline صوتی یک‌بار بازسازی می‌شود؛ در این حالت ممکن است اتصال مجدد به Gemini و برگشت صدا چند ثانیه زمان ببرد.

پخش در لپ‌تاپ با VLC

نسخه 0.2.12 خروجی نهایی تصویر و صدا را هم‌زمان به این مقصد می‌فرستد:

Laptop IP: 192.168.2.3
UDP port: 19877

Dreambox و لپ‌تاپ باید در یک شبکه باشند. e2dub را روی ریسیور Start کنید و صبر کنید وضعیت ترجمه فعال شود.

بازکردن پورت Windows Firewall

PowerShell را با گزینه Run as administrator باز کنید و فقط دستور زیر را اجرا کنید:

New-NetFirewallRule -DisplayName "e2dub UDP Stream" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 19877 -RemoteAddress 192.168.2.2 -Profile Any

بررسی قانون ساخته‌شده:

Get-NetFirewallRule -DisplayName "e2dub UDP Stream"

مقادیر Enabled و Action باید به‌ترتیب True و Allow باشند.

بازکردن استریم در VLC

در VLC وارد Media > Open Network Stream شوید و این آدرس را وارد کنید:

udp://@:19877

یا از PowerShell:

& "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=1000 "udp://@:19877"

این آدرس UDP در مرورگر باز نمی‌شود و باید با VLC، FFplay یا پخش‌کننده سازگار با MPEG-TS استفاده شود. آدرس قدیمی StreamProxy روی پورت 8001 برای سرویس محلی نوع 4097 در این DreamOS پیام no service می‌دهد و نباید استفاده شود.

تغییر IP لپ‌تاپ

IP مقصد در نسخه فعلی روی 192.168.2.3 تنظیم شده است. بهتر است در روتر برای لپ‌تاپ DHCP Reservation بسازید. اگر IP لپ‌تاپ عوض شود، مقدار LAPTOP_IP در src/E2Dub/plugin.py باید تغییر کند و بسته دوباره ساخته و نصب شود.

نبودن لپ‌تاپ یا بسته‌بودن VLC، پخش روی Dreambox را متوقف نمی‌کند.

عیب‌یابی

صدای ترجمه پخش نمی‌شود

ls -l /root/apikey.txt
cat /tmp/e2dub-state
tail -100 /tmp/E2LivDub.log

فایل API Key نباید خالی باشد. محتوای کلید را در خروجی ترمینال، اسکرین‌شات یا گزارش خطا منتشر نکنید.

صدای اصلی شنیده نمی‌شود

  • مقدار Original channel volume را بیشتر از صفر قرار دهید.
  • پس از تغییر مقدار، برای بازسازی pipeline چند ثانیه صبر کنید.
  • لاگ باید شروع pipeline را با مقدار جدید نشان دهد:
grep 'Starting pipeline' /tmp/E2LivDub.log | tail

VLC تصویر یا صدا ندارد

  • e2dub باید روی Dreambox فعال باشد.
  • IP لپ‌تاپ باید 192.168.2.3 باشد.
  • قانون Firewall باید فعال باشد.
  • VLC باید آدرس udp://@:19877 را باز کند، نه آدرس HTTP مرورگر.
  • هر دو دستگاه باید در subnet شبکه 192.168.2.x باشند.
  • در شروع استریم چند ثانیه برای دریافت PAT/PMT و keyframe ویدئو صبر کنید.

بررسی IP در ویندوز:

ipconfig

Enigma2 یا منو پاسخ نمی‌دهد

systemctl restart enigma2

پس از بالا آمدن GUI، خطاهای اخیر را بررسی کنید:

journalctl -u enigma2 -n 150 --no-pager

فایل‌ها و پورت‌ها

مورد مسیر یا مقدار
API Key /root/apikey.txt
لاگ /tmp/E2LivDub.log
وضعیت helper /tmp/e2dub-state
reference اصلی /tmp/e2dub-original-ref
FIFO صوت ترجمه /tmp/e2dub-output.pcm
خروجی محلی Dreambox 127.0.0.1:19876/UDP
خروجی لپ‌تاپ 192.168.2.3:19877/UDP

حذف افزونه

dpkg -r enigma2-plugin-extensions-e2dub

حذف بسته processهای باقی‌مانده را متوقف می‌کند، سرویس اصلی را بازمی‌گرداند و فایل /root/apikey.txt را نیز حذف می‌کند.

امنیت و حریم خصوصی

  • ارتباط Gemini مستقیماً بین Dreambox و Google برقرار می‌شود.
  • هیچ سرور واسطه متعلق به پروژه استفاده نمی‌شود.
  • API Key در لاگ نوشته نمی‌شود.
  • خروجی UDP لپ‌تاپ رمزگذاری و احراز هویت ندارد؛ فقط در شبکه محلی امن استفاده کنید و پورت‌های 19877 یا 8001 را روی اینترنت Port Forward نکنید.

ساخت بسته برای توسعه‌دهنده

پیش‌نیازها در زمان اجرا روی Dreambox شامل Enigma2، FFmpeg، Python 2.7 و گواهی‌های CA هستند. هیچ Python package اضافی لازم نیست.

ساخت بسته:

python build_deb.py

خروجی در پوشه dist/ ساخته می‌شود.

اجرای تست‌ها:

python -m unittest discover -s tests -v

تغییرات مهم نسخه 0.2.12

  • اضافه‌شدن خروجی دوم MPEG-TS برای لپ‌تاپ با FFmpeg tee muxer
  • ادامه پخش تلویزیون حتی در صورت قطع یا بسته‌بودن لپ‌تاپ
  • نوار صدای گرافیکی مبتنی بر ۲۱ تصویر PNG برای سازگاری با اسکین DreamOS
  • نمایش عدد صدا، کانال تلگرام و نسخه افزونه در صفحه اصلی
  • اعمال خودکار تغییر صدای اصلی با بازسازی کنترل‌شده pipeline