افزونه دوبله زنده شبکههای تلویزیونی برای 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 فقط در این مسیر خوانده میشود:
/root/apikey.txt
این فایل هنگام نصب اولیه ساخته میشود. فقط API Key را داخل آن قرار دهید؛ فاصله، عنوان یا متن دیگری اضافه نکنید. سپس سطح دسترسی را بررسی کنید:
chmod 600 /root/apikey.txt
chown root:root /root/apikey.txtAPI Key هیچگاه در لاگ e2dub نوشته نمیشود.
هشدار: هنگام حذف یا purge بسته، فایل
/root/apikey.txtنیز حذف میشود. قبل از uninstall در صورت نیاز از کلید خود نسخه پشتیبان بگیرید.
- شبکه تلویزیونی موردنظر را باز کنید.
- از Plugin Browser افزونه
e2dubرا اجرا کنید. - با کلیدهای
LEFTوRIGHTمیزان صدای اصلی شبکه را انتخاب کنید. - کلید سبز (
GREEN) را برای Start بزنید. - صفحه افزونه و منوها بسته میشوند و تصویر تمامصفحه باقی میماند.
- تا دریافت اولین ترجمه، پیام
Please wait for translationنمایش داده میشود.
پس از دریافت اولین صوت، Enigma2 به خروجی نهایی e2dub سوییچ میکند.
دوباره e2dub را باز کنید و کلید قرمز (RED) را بزنید. همه processها بسته
میشوند و سرویس اصلی شبکه بازگردانده میشود.
کلید EXIT فقط صفحه افزونه را میبندد و ترجمه فعال را متوقف نمیکند.
هنگام فعالبودن e2dub میتوانید شبکه را تغییر دهید. افزونه تغییر شبکه را تشخیص میدهد و pipeline ترجمه را برای شبکه جدید بازسازی میکند.
نوار سبز و عدد کنار آن مقدار صدای اصلی را نشان میدهند. هر بار فشردن کلید چپ یا راست مقدار را پنج درصد تغییر میدهد.
0%: فقط صدای ترجمهشده پخش میشود.- بیشتر از
0%: صدای اصلی هنگام سکوت ترجمه شنیده میشود. - هنگام صحبت ترجمهشده، صدای اصلی بهصورت خودکار کاهش مییابد.
تغییر مقدار فوراً ذخیره میشود. اگر e2dub فعال باشد، پس از حدود ۸۰۰ میلیثانیه pipeline صوتی یکبار بازسازی میشود؛ در این حالت ممکن است اتصال مجدد به Gemini و برگشت صدا چند ثانیه زمان ببرد.
نسخه 0.2.12 خروجی نهایی تصویر و صدا را همزمان به این مقصد میفرستد:
Laptop IP: 192.168.2.3
UDP port: 19877
Dreambox و لپتاپ باید در یک شبکه باشند. e2dub را روی ریسیور Start کنید و صبر کنید وضعیت ترجمه فعال شود.
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 وارد 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 مقصد در نسخه فعلی روی 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- e2dub باید روی Dreambox فعال باشد.
- IP لپتاپ باید
192.168.2.3باشد. - قانون Firewall باید فعال باشد.
- VLC باید آدرس
udp://@:19877را باز کند، نه آدرس HTTP مرورگر. - هر دو دستگاه باید در subnet شبکه
192.168.2.xباشند. - در شروع استریم چند ثانیه برای دریافت PAT/PMT و keyframe ویدئو صبر کنید.
بررسی IP در ویندوز:
ipconfigsystemctl 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- اضافهشدن خروجی دوم MPEG-TS برای لپتاپ با FFmpeg tee muxer
- ادامه پخش تلویزیون حتی در صورت قطع یا بستهبودن لپتاپ
- نوار صدای گرافیکی مبتنی بر ۲۱ تصویر PNG برای سازگاری با اسکین DreamOS
- نمایش عدد صدا، کانال تلگرام و نسخه افزونه در صفحه اصلی
- اعمال خودکار تغییر صدای اصلی با بازسازی کنترلشده pipeline