ChannelLingo v1.1

Introduction:
ChannelLingo v1.1 is a plugin designed for Enigma2 receivers, allowing users to translate live satellite TV content into their preferred language and display the translated subtitles directly on the TV screen while watching.
The plugin uses multiple technologies to obtain subtitles, either by reading the subtitle tracks broadcast by the channel or by capturing the channel's audio and converting speech into text using Whisper, followed by translation through one of the supported translation engines.
ChannelLingo features automatic switching between translation methods and services, along with extensive customization options for subtitle appearance, font size, color, and screen position.
Tested Receivers and Images
The plugin has been tested on the following devices:

  • Dreambox DM920
    • Merlin image
    • Gemini image

  • VU+ Duo 4K SE
    • OpenATV 8.1 image

Software Compatibility

  • Python 2.7
  • Python 3.x, including Python 3.14
  • Dreambox
  • Vu plus

Note: The plugin currently supports live DVB satellite channels only. IPTV channels are not supported in this version.


2. Available Translation Methods

ChannelLingo provides three main operating modes.

2.1 Automatic Mode

This is the recommended mode for everyday use. The plugin automatically selects the most suitable translation method without requiring user intervention.
How it works:

  1. Searches for available DVB or Teletext subtitle tracks.
  2. Tests detected subtitle tracks until one containing actual subtitle content is found.
  3. Uses the OCR engine to read subtitles if they are image-based.
  4. Automatically switches to channel audio capture if no valid subtitles are available.
  5. Converts speech into text using Whisper.
  6. Translates the resulting text using the selected translation engine.
  7. Remembers the working subtitle track for each channel and reuses it when returning to that channel.

Required setting:
Translation method: Automatic
This mode automatically handles channels with embedded subtitles as well as channels that require speech recognition.

2.2 Channel Subtitles
This mode uses the subtitle tracks transmitted directly by the channel.
Supported features:

  • Reading image-based DVB subtitle tracks.
  • Support for Teletext subtitle pages.
  • Automatic detection of working subtitle tracks.
  • Selecting and locking a preferred subtitle track for each channel.
  • Saving the selected track for future use.
  • Removing sound-effect descriptions intended for hearing-impaired viewers when available as text.
  • Using the built-in ChannelLingo OCR engine to recognize image-based subtitles.

The preferred subtitle track can be locked or unlocked using the OK button.

2.3 Speech Translation (Speech – Whisper)

This mode is intended for channels without embedded subtitles or for users who prefer translating the channel's audio directly.
How it works:

  1. Captures the channel's audio during playback.
  2. Processes the audio and sends it in segments to the speech recognition service.
  3. Converts spoken language into text using Whisper or the selected speech recognition service.
  4. Sends the recognized text to the selected translation engine.
  5. Displays the translated text on the TV screen.

Supported speech-to-text services:

  • GroqCloud
  • xAI
  • Cloudflare Workers AI

This method requires an internet connection and valid API keys for the selected services.

3. Intelligent Automatic Switching System
One of ChannelLingo's main features is its ability to automatically switch between translation methods and services, minimizing the need for manual configuration.
3.1 Switching Between Channel Subtitles and Speech Translation
When the following option is selected:
Translation method: Automatic
The plugin follows this process:

  • Searches for DVB or Teletext subtitles.
  • Uses a subtitle track if it contains actual subtitle content.
  • Attempts to recognize image-based subtitles using OCR.
  • Switches to channel audio translation if no valid subtitles are available.
  • Attempts speech translation if OCR cannot operate because the required language model is missing.


3.2 Automatic Search for a Working Subtitle Track

When the following option is enabled:
Search for a working subtitle track: On
The plugin tests available DVB and Teletext subtitle tracks one by one.
Once a track containing actual subtitle content is found, the plugin locks onto that track instead of continuing to switch between tracks.
This feature can be enabled or disabled directly during viewing using the number 5 button.
3.3 Automatic Speech Service Selection
When the following option is selected:
Speech service: Automatic
The plugin attempts to use the available services in this order:

  1. GroqCloud
  2. xAI
  3. Cloudflare Workers AI

A valid API key is required for each service.
If requests are rejected or a service reaches its usage limit, the plugin can attempt to switch to the next available service.

3.4 Automatic Translation Engine Selection
When the following option is selected:
Translation engine: Automatic
The plugin attempts to use translation engines in this order:

  1. Groq, if a valid API key is available.
  2. xAI, if a valid API key is available.
  3. Google Translate.
  4. MyMemory, when the source language is known.

If a translation engine becomes temporarily unavailable or reaches its request limit, the plugin attempts to switch to the next available engine without requiring manual changes.
Important: In this version, Cloudflare Workers AI is used for speech-to-text conversion and is not available as a standalone text translation engine within the plugin.

4. Available Translation Engines
ChannelLingo provides several engines for translating text extracted from TV channels.
Engine
Function
Automatic Automatically selects an available translation engine
Google Translates text using Google Translate
MyMemory Translates text, particularly when the source language is known
Groq Context-aware AI-powered text translation
xAI Translates text using xAI models
Off Displays extracted text in its original language without translation

The speech recognition service and the text translation engine are completely independent settings.
For example, you can use Cloudflare Workers AI to convert channel audio into text and then use Google Translate to translate the recognized text into Arabic.
Both settings can also be left on Automatic, allowing the plugin to select available services automatically.

5. Creating and Configuring API Keys
Some ChannelLingo features require API keys to access speech recognition and translation services.
5.1 Creating a GroqCloud API Key
Steps:

  1. Open the official website:

  1. Create a new account or sign in to your existing account.
  2. Select the desired project.
  3. Open the API Keys page:
  4. Click Create API Key.
  5. Enter a name for the key, such as ChannelLingo.
  6. Copy the generated key immediately and store it securely.

Groq API keys typically begin with:
gsk_...
Official documentation:Adding the Groq API Key to Your Receiver
Create the following file:

/etc/enigma2/groqapi.key
Add your API key using this format:
gsk_your_api_key_here

Multiple API Key Support
You can add multiple API keys to the same file, with each key on a separate line.
If one key is rejected or reaches its usage limit, the plugin can attempt to use the next available key.
After saving the file, it is recommended to set its permissions through Telnet or SSH:
chmod 600 /etc/enigma2/groqapi.key
Configuring Groq in ChannelLingo
To use Groq for speech-to-text conversion:
Speech service: GroqCloud
To use Groq for text translation:
Translation engine: Groq
Alternatively, both settings can be left on Automatic to allow the plugin to select the appropriate services automatically.

5.2 Creating a Cloudflare Workers AI API Token

Cloudflare Workers AI requires two values:

  • Account ID: Your Cloudflare account identifier.
  • API Token: The authentication token used to access the service.

Steps to Create the API Token

  1. Open the Cloudflare Dashboard:.



  1. Sign in to your account.
  2. Navigate to Workers AI.
  3. Select Use REST API.
  4. Click Create a Workers AI API Token.
  5. Review the required permissions and click Create API Token.
  6. Copy and securely store the API Token.
  7. Copy your Account ID as well.


Official documentation:
If you create a token manually instead of using the predefined template, configure the appropriate Workers AI permissions, which may include:

  • Workers AI – Read
  • Workers AI – Edit

Adding Cloudflare Credentials to Your Receiver
Create the following file:

/etc/enigma2/cloudflareapi.key
Enter your account details in the following format:
Account ID : your_account_id_here
API (Token): your_api_token_here
After saving the file, execute:
chmod 600 /etc/enigma2/cloudflareapi.key
Configuring Cloudflare in ChannelLingo
To use Cloudflare directly:
Speech service: Cloudflare Workers AI
Alternatively, select:
Speech service: Automatic
This allows the plugin to use Cloudflare automatically when needed, provided the service is available and properly configured.
Important: Your Cloudflare API Token may only be displayed once during creation. Make sure to copy and securely save it immediately.
Official API Token documentation:

If you create a token manually instead of using the predefined template, configure the appropriate Workers AI permissions, which may include:

  • Workers AI – Read
  • Workers AI – Edit

Adding Cloudflare Credentials to Your Receiver
Create the following file:

/etc/enigma2/cloudflareapi.key
Enter your account details in the following format:
Account ID : your_account_id_here
API (Token): your_api_token_here
After saving the file, execute:
chmod 600 /etc/enigma2/cloudflareapi.key
Configuring Cloudflare in ChannelLingo
To use Cloudflare directly:
Speech service: Cloudflare Workers AI
Alternatively, select:
Speech service: Automatic
This allows the plugin to use Cloudflare automatically when needed, provided the service is available and properly configured.
Important: Your Cloudflare API Token may only be displayed once during creation. Make sure to copy and securely save it immediately.
Official API Token documentation:

6. OCR Technology for Image-Based Subtitles
ChannelLingo includes a built-in OCR (Optical Character Recognition) engine designed to extract text from image-based DVB subtitles.
This technology recognizes subtitle text embedded in images and converts it into editable text that can be processed by the selected translation engine.
Main OCR Features

  • Includes 23 language models for local, offline operation.
  • Language model management using the blue button.
  • Ability to download additional language models.
  • Option to remove additional non-bundled language models.
  • Configurable fallback OCR language.
  • Support for ChannelLingo OCR and learned font templates.

Important: OCR processing itself runs locally on the receiver once the required language model is installed, without requiring an internet connection.
However, translating text through external services, converting speech into text, and downloading additional language models require internet access.


7. Subtitle Appearance Customization
ChannelLingo provides various options for customizing subtitle appearance to suit user preferences and different TV screen sizes.
Available Customization Options

  • Select the preferred translation language.
  • Adjust subtitle font size.
  • Change subtitle text color.
  • Choose a transparent, semi-transparent, or black background.
  • Enable text shadows for improved readability.
  • Adjust subtitle outline thickness.
  • Set subtitle position on the screen.
  • Control how long each subtitle line remains visible.
  • Adjust subtitle delay to improve synchronization with video and audio.

Adjusting Subtitle Delay During Playback
Subtitle timing can be adjusted directly without opening the settings menu:

  • Button 4: Decrease subtitle delay.
  • Button 6: Increase subtitle delay.

This feature helps improve synchronization when subtitles do not appear at the correct time.

8. Remote Control Shortcuts

ChannelLingo provides convenient remote control shortcuts for quick access to essential features during viewing.
Button
Function
Green Enable or disable subtitles
Yellow / MENU Open plugin settings
Blue Manage OCR languages and models
OK Save or remove the preferred subtitle track for the current channel
INFO Open the plugin user guide
4 Decrease subtitle delay
5 Enable or disable automatic working subtitle track detection
6 Increase subtitle delay
0 Enable or disable the plugin
EXIT / BACK (Long Press) Stop subtitles from any screen

These shortcuts allow users to control essential features without repeatedly navigating through settings menus.

9. Key Features of ChannelLingo v1.1
Translation and Speech Recognition

  • Real-time satellite TV channel translation.
  • Support for DVB and Teletext subtitles.
  • OCR recognition of image-based subtitles.
  • Speech-to-text conversion using Whisper.
  • Automatic switching between channel subtitles and speech translation.
  • Intelligent detection of working subtitle tracks.
  • Remembers the preferred working subtitle track for each channel.

Services and Translation Engines

  • Support for GroqCloud, xAI, and Cloudflare Workers AI.
  • Support for Google Translate and MyMemory.
  • Automatic speech service selection.
  • Automatic translation engine selection.
  • Multiple API keys supported for the same service.
  • Automatic attempts to switch to another API key when requests are rejected or usage limits are reached.
  • Attempts to use alternative services or translation engines when the current one becomes unavailable.

OCR and Language Support

  • Built-in OCR engine with local processing.
  • Includes 23 language models.
  • Download and manage additional language models.
  • Arabic and English user interface support.
  • Option to follow the receiver's interface language.

User Interface and Controls

  • Customizable subtitle font size, color, and background.
  • Adjustable subtitle position and display timing.
  • Option to start subtitles automatically when switching channels.
  • Background operation during TV viewing.
  • Convenient remote control shortcuts.
  • Stop subtitles by long-pressing EXIT or BACK.

Compatibility

  • Support for Dreambox and compatible Enigma2 receivers.
  • Support for Merlin, Gemini, and OpenATV images in the tested environments.
  • Compatibility considerations for Python 2.7 and Python 3.x, including Python 3.14.
  • Dreambox - vuplus support.



10. Important Notes and Recommendations

  1. API Key Security: Never share your API keys with others or publish them in screenshots, forums, or public files.
  2. Usage Limits: Some services impose free-tier limits or request quotas. Heavy usage may require a paid subscription.
  3. Internet Connection: External translation and speech-to-text services require an active internet connection.
  4. Interface Differences: The plugin's appearance may vary depending on the Enigma2 image and skin being used.
  5. Speech Translation Quality: Speech recognition and translation accuracy depend on audio clarity, the spoken language, and the selected service.
  6. Translation Delay: Speech-based subtitles may appear slightly after the spoken dialogue because audio must be captured, processed, and translated.
  7. Automatic Mode: The plugin displays the speech service and translation engine currently in use, helping users identify the active translation method.
  8. IPTV Compatibility: The current version is intended for live DVB channels and does not support IPTV channels.
  9. Automatic Service Switching: Successful switching depends on the availability of valid API keys and alternative services. It does not necessarily bypass usage limits imposed by service providers.

Conclusion
ChannelLingo v1.1 provides a comprehensive solution for real-time satellite TV translation on Enigma2 receivers, combining DVB and Teletext subtitle extraction, OCR technology, Whisper-based speech recognition, and multiple translation engines.
The plugin is designed to make TV viewing more accessible and convenient by reducing manual intervention through intelligent subtitle detection and automatic service switching.
With its extensive customization options, users can adjust subtitle appearance and behavior to suit their individual preferences.










Thx @ iet5