Installation
There is no installer and no public package yet: the steps below are for those who have been given access to the source repository. If you do not have it, ask for it on the contact page.
Requirements
Windows
One command tells you where a machine stands: the environment check reports what is present, what is missing and the command that installs it, and in fix mode it installs the items one by one after asking. Only the virtual cable needs administrator rights; everything else installs as your own user.
check-environment.cmd
check-environment.cmd -Fix
| What | What for | Note |
|---|---|---|
| Windows x64 | the caption window and the services | Windows 11, or Windows 10 version 2004 or newer if the captions must stay out of screen sharing; on Windows 10 and LTSC editions the winget package manager has to be installed once by hand. |
| .NET 10 SDK, PowerShell 7 | building and running the programs; the launcher scripts | Both are installed by the fix mode through winget. |
| NVIDIA graphics card with a current driver | the caption server, the translator and the voice service | Ampere and newer cards use the CUDA 13 runtime, older ones (Turing, for example) CUDA 12; the caption server offers to download the runtime it needs. Without a card the caption server runs on the CPU, slower, and says so at start-up. The card can also be in another machine on your network. |
| Python 3.10–3.12 | the voice engine (cloned and built-in voices) | Python 3.13 is not suitable, nor is the Microsoft Store edition; the environment preparer offers to install 3.12. The in-process voice needs no Python. |
| PostgreSQL in Docker Desktop | the account service's database | The account service's launcher runs it in a container; Docker Desktop builds on WSL, and the fix mode installs it if it is missing. It is needed only on the machine where the account service runs with its own database. |
| FFmpeg | the command-line caption client (reading video and audio files) | If it is missing, the client offers to download and set it up. |
| Virtual audio cable: VB-CABLE, and the A+B pack for both directions | the call's audio in and the interpreter's voice out | Donation-based, so we do not distribute it: the packages are downloaded by hand and placed in the Resources folder, from where the install scripts find them. One cable serves the incoming-only mode, both directions need two. |
| Headphones | whenever the interpreter speaks | From a speaker the interpreter's own voice would get back into the captioning. |
| Internet for the first downloads | the tools and the models | After that everything runs offline; the models are stored under the data root. |
macOS
On macOS the same environment check runs from check-environment.command (a double-click in the Finder works too). The fix mode does not install the missing items by itself, because they may ask for an administrator password: it prints the command that installs them – Microsoft's install script (dotnet-install.sh) for the .NET SDK, the Homebrew command for the rest.
./check-environment.command
./check-environment.command -Fix
| What | What for | Note |
|---|---|---|
| Mac with Apple silicon | the caption window and the services | macOS 14.2 or later. The services do not run on an Intel-based Mac. The caption window needs an active display: on a Mac without one only the services run. |
| .NET 10 SDK, PowerShell 7 | building and running the programs; the launcher scripts | With Homebrew: brew install --cask powershell and brew install --cask dotnet-sdk. Without PowerShell 7 no launcher starts, and it says so; the finished LiveCaption Pro.app no longer needs the .NET SDK to run. |
| The Apple silicon GPU (Metal) | the caption server, the translator and the voice service | The caption server and the translator accelerate through Metal, the voice engine on the mps device. There is no separate video memory: the models share the unified memory with the system. If Metal does not start, the caption server says so and switches to the CPU. |
| Python 3.10–3.12 | the voice engine (cloned and built-in voices) | On macOS 3.12 is the default: the environment preparer first uses uv's own interpreter, then Homebrew's python@3.12 (brew install uv or brew install python@3.12). |
| PostgreSQL 18 from Homebrew | the account service's database | brew install postgresql@18. The project gets its own database cluster from it, in its own folder under the data root and on the loopback address only; Docker is not needed. |
| FFmpeg | the command-line caption client (reading video and audio files) | brew install ffmpeg – the client's own downloader works on Windows only. |
| Virtual audio cable: BlackHole 2ch (or 16ch) | the call's audio in and the interpreter's voice out | brew install --cask blackhole-2ch. One device serves both directions: its playback and recording ends are the same. If it does not appear among the audio devices after installing, restart the Mac – restarting the audio system is not enough. The Windows cable installer does not run on macOS. |
| Permissions: Microphone and system audio recording | capturing the audio | macOS gives them to whoever is responsible for the launch: the terminal application when started from a script, the program itself for LiveCaption Pro.app started from the Finder. With an ad hoc signature (no certificate) it may ask again after every program update. The macOS Live Captions source also needs the Accessibility permission. |
| Headphones | whenever the interpreter speaks | From a speaker the interpreter's own voice would get back into the captioning. |
| Internet for the first downloads | the tools and the models | After that everything runs offline; the models are stored under the data root. |
Video memory
The three engines share one card, and the caption server sizes its model pool to the memory left free – which is why the start order is fixed. These are the measured configurations; if the card is smaller, the translator picks a smaller model variant, or the services move to the machine that has the card.
| What we measured | Result | Under what conditions |
|---|---|---|
| Video memory for the three engines together | 22.3 GB | Measured on one machine with the largest translator model. On a 20 GB card the translator runs as 12b Q4_K_M (measured 7.5 GB), on a 32 GB card as 12b Q8_0. |
| Video memory of the translator with the smaller model variant | 7.5 GB | TranslateGemma 12b Q4_K_M; the Q8 variant needs 16.7 GB. |
| Video memory of the voice service | 2.3 GB | XTTS-v2; the in-process voice needs none. |
Measurement machine: NVIDIA GeForce RTX 5090, Intel Core i9-13900K, 128 GB RAM; September 2026. Other machines give other numbers; this page publishes no numbers measured on a Mac. The interpreter timings are medians (p50): half of the sentences were faster; the 95th percentile and the share of sentences skipped under load are on the How it works page.
macOSOn Apple silicon there is no separate video memory: the caption server works from Metal's recommended working set and the system's free memory, so it also sees what a translator running beside it has taken. This page publishes no configurations measured on a Mac.
The first start, in order
The order matters: every service authenticates through the account service, so that one has to exist before the others start.
Clone the repository
Clone the source repository with its full history onto the machine. Everything below runs from its root folder.
Check the environment, then fix it
The report mode changes nothing. The fix mode asks per item, says in advance how big the download is and whether it needs administrator rights, and installs what is missing.
check-environment.cmd check-environment.cmd -FixmacOSOn macOS PowerShell 7 comes first; after that check-environment.command reports and fixes the same way, and for the Homebrew items it only prints the command.
brew install --cask powershell ./check-environment.command ./check-environment.command -FixStart the account service
Start it in its own, visible window: the first start creates an administrator and prints its random password once – never into a log. Then log in on its admin page, where the interface immediately asks for a new password, and issue keys for the clients on the Keys page.
AccountServer\start-accountserver.cmd http://127.0.0.1:8101/adminmacOSOn macOS the launcher's .command pair runs, and the database needs no Docker: a native cluster of its own is created with Homebrew's postgresql@18 programs.
brew install postgresql@18 AccountServer/managed-postgres.command AccountServer/start-accountserver.commandConnect the services to the account service
The peer setup script issues the three services' tokens, checks them with an authenticated test, and then activates the account service's address. The address is an environment variable that running windows do not see: close every open window afterwards.
AccountServer\setup-account-peers.ps1 -Tokens AccountServer\setup-account-peers.ps1 -Check AccountServer\setup-account-peers.ps1 -ActivatemacOSOn macOS setup-account-peers.command takes the same switches; the persistent variables go into the user's environment file there (~/.config/live-caption-pro/environment), and the launchers read them from it.
AccountServer/setup-account-peers.command -Tokens AccountServer/setup-account-peers.command -Check AccountServer/setup-account-peers.command -ActivateA key for the command-line scripts
The batch captioning and the file translators use their own key, kept in a persistent environment variable per service. The key generator issues it without ever showing it, and an existing key is never overwritten. The scripts also ask for it themselves the first time they run without one.
generate-api-key.cmdmacOSOn macOS generate-api-key.command issues it, with the same switches; the key goes into the persistent environment file.
./generate-api-key.commandThe daily launcher
One launcher brings up the four background services in the fixed order – account service, then the translator and the voice service, then the caption server – each in its own window. The caption window has a launcher of its own; a server machine does not need it. Whatever runs on another machine is left out with a switch.
launch-system.cmd LiveCaption\start-livecaptionpro.cmdmacOSOn macOS launch-system.command brings up the services, and LiveCaption/start-livecaptionpro-avalonia.command starts the caption window. The services start in Terminal windows, so a graphical session is needed – this does not work over SSH. Publishing produces a self-contained LiveCaption Pro.app bundle that can also be started from the Finder or the Dock; while it runs, the program lives in the menu bar.
./launch-system.command LiveCaption/start-livecaptionpro-avalonia.commandKeys and mode in the caption window
On the Servers tab of the settings window enter the three services' addresses and keys; on the Usage tab choose what you use the program for, and the tab writes out what to set where.
macOSOn macOS recording the microphone and the system audio needs a permission, and the program encrypts the keys with a key kept in the macOS Keychain: keys copied over from Windows have to be entered again.
The same steps with every command and the expected output are in the guides:
Environment variables
These variables shape where the product keeps its data and how the parts find each other. A change reaches only the windows opened afterwards.
| Variable | What it does |
|---|---|
| LCP_HOME | The data root: models, calibration, logs and recordings live under it. Without it everything stays in the user profile's local application data. |
| LCP_LANGUAGE | The language the machine would decide by itself: the log language and the interface language in automatic mode. Values: auto, hu, en. |
| LCP_ACCOUNT_URL | The address of the account service. Mandatory: without it the three services do not start. The peer setup script sets it. |
| LCP_ACCOUNT_TOKEN_<SERVICE> | The peer token of one service (the name ends with the service's name). Read by the service itself; it never goes on a command line. |
| LCP_SCRIPT_KEY_<SERVICE> | The command-line scripts' own key for one service. The key generator writes it; the scripts read it. |
| LCP_INSTANCE | The name of a service instance when several instances run on one machine. |
Removal
One command removes what the product installed or downloaded and leaves the workstation clean. By default it only reports what would go and how much space it would free; deletion asks per item, and the machine-level tools – Python, the .NET SDK, PowerShell 7, the audio cable – have to be requested separately, because others on the machine may use them. It never touches the repository, its history or the test data.
uninstall-environment.cmd
uninstall-environment.cmd -Remove
macOSOn macOS the removal tool has no launcher and has not been measured there: the items installed with Homebrew are removed with brew uninstall.
Need access? Write to us.
Tell us what you would use it for and in what environment; we answer with the access and a quote.