Speech To Text (Nemotron)
Speech To Text (Nemotron) operator properties for Script Engine. Transcribes the layer's audio in real time with NVIDIA's Nemotron streaming speech model, running locally on the GPU, and burns the result in as live captions. Unlike a batch recogniser it commits words as they are spoken and never rewrites them, so the captions roll up like broadcast subtitles: the bottom line grows as the speaker talks, finished lines move up, and the oldest scrolls away. Handles 40 language-locales with automatic punctuation. Needs an NVIDIA GPU and the Nemotron model file.
| Property | Type | Access | Description |
|---|---|---|---|
ShowAdvancedOptions |
bool |
get/set |
Whether to reveal advanced configuration in the editor. [default=false]. Toggle on to show the operator's advanced and diagnostic properties. |
ModelSourceUrl |
Uri |
get/set |
Path to the Nemotron .gguf model file. The whole model is that one file. Selecting it loads it onto the GPU in the background and sets Source Language to suit the model. Locked while the operator is running: stop it to choose another model. |
ChunkSize |
NemotronChunkSize |
get/set |
How much speech the recogniser hears before it transcribes any of it, which is also how far the captions trail the speaker. [default=1120 ms] Longer is more accurate, shorter is quicker. Changing it reloads the model, so it is locked while the operator is running: stop it, change the size, then start it again. |
SentencePauseMs |
int |
get/set |
How long the speaker must pause before the recogniser ends the sentence, in milliseconds. [min=500, max=5000, default=2000] |
SourceLanguage |
NemotronLanguage |
get/set |
Language being spoken. Set this explicitly whenever you know which language it will be: naming the language is more accurate than Auto detect, and choosing the wrong one produces nonsense rather than a slightly worse result. With an English-only model it is locked to English (US), the only language that model understands. Changing it restarts recognition without reloading the model. [default=Auto detect with a multilingual model, English (US) with an English-only model] |
DetectedLanguage |
string |
get |
Language the model used for the most recent text (read-only). With Source Language set to Auto-detect this is what the model decided it was hearing, which is worth watching: the wrong guess produces fluent nonsense rather than a degraded result. With a language chosen it still reports what the model heard rather than what was chosen, so a passage spoken in another language is named as that one. Shown as name and code, e.g. "Swedish (sv)". Empty until the first text arrives. |
AllowedLanguages |
string |
get/set |
Languages Auto detect is allowed to show, comma-separated. Codes or English names, in any case: "sv, en" and "Swedish, English" both work. Empty means no restriction, which is the default. Only applies with Source Language on Auto detect, and is locked otherwise. |
AutoStart |
bool |
get/set |
Start transcribing as soon as the model has loaded. [default=true] |
OperatorState |
NemotronState |
get |
Current state of the operator. |
StartCommand |
Command |
get/set |
Starts transcribing. |
StopCommand |
Command |
get/set |
Stops transcribing. The model stays loaded. |
ClearCommand |
Command |
get/set |
Clears the captions on screen and restarts recognition. |
CommandGroup |
CommandGroup |
get/set |
Start, stop and clear. |
RecentText |
string |
get |
The captions currently on screen (read-only), one line per row, exactly as drawn. Read this from a script to forward the live transcript to chat overlays, caption widgets, or any external system. |
ShowSubtitlesCheckBox |
bool |
get/set |
Draw the captions over the video. [default=true] |
SubtitlesScreenTimout |
int |
get/set |
How long the captions stay on screen after the speaker stops, in milliseconds. [min=500, max=30000, default=5000] |
TextAlignment |
CaptionAlignment |
get/set |
Which edge the caption block is anchored to and the direction its rows are read in. [default=Left to Right]. Left to Right for most languages. Right to Left for right-to-left languages such as Arabic and Hebrew: each row ends at Pos-X from the right edge and reads towards the left, while a number or a left-to-right phrase inside it still reads forwards. Takes effect from the next caption drawn. |
SubtitlesPosX |
int |
get/set |
Horizontal position of the caption block, in pixels from the edge Reading Direction anchors it to: the left edge with Left to Right, the right edge with Right to Left. The same value keeps the same margin either way. [min=0, max=5000, default=10 % of the image width] |
SubtitlesPosY |
int |
get/set |
Baseline of the bottom line, in pixels. Finished lines stack upwards from here, so the caption block stays put as lines are added. [min=0, max=5000, default=90 % of the image height] |
MaxLineLimit |
int |
get/set |
Caption lines kept on screen, including the one being written. [min=1, max=10, default=2] |
MaxCharPerLineLimit |
int |
get/set |
Maximum characters per caption line before wrapping. [min=1, max=200, default=60] |
RollUpTimeMs |
int |
get/set |
How long the caption block takes to scroll up when a line fills, in milliseconds. Zero moves it in one frame. [min=0, max=1000, default=500] |
WordFadeInMs |
int |
get/set |
How long a newly recognised word takes to fade in, in milliseconds. Zero draws it at once. [min=0, max=1000, default=150] |
ResetTextPositionCommand |
Command |
get/set |
Restores Show Text, Reading Direction, Pos-X and Pos-Y to their defaults, leaving the wrapping and timing settings as they are. For scripts: the panel's Reset restores the whole Text Layout section. |
ResetTextSettingsCommand |
Command |
get/set |
Restores every Text Layout setting to its default, the position included. |
FontFamily |
StringCollectionEnum |
get/set |
Which font draws the captions. [default=Arial or Segoe UI where installed, otherwise the first available font]. Choosing a font that has the glyphs is what makes Japanese, Chinese, Korean and Thai captions render instead of drawing as empty boxes. A font missing on this machine is kept as the project's choice, with a note beside this row; the captions use the default until the project runs somewhere that has it. |
FontSize |
int |
get/set |
Caption text size. [min=11, max=60, default=38] |
FontColorR |
int |
get/set |
Red component of the caption text color. [min=0, max=255, default=255] |
FontColorG |
int |
get/set |
Green component of the caption text color. [min=0, max=255, default=255] |
FontColorB |
int |
get/set |
Blue component of the caption text color. [min=0, max=255, default=255] |
FontAlpha |
int |
get/set |
Opacity of the caption text. [min=0, max=255, default=255] |
SubtitleBackgroundAlpha |
int |
get/set |
Opacity of the box behind each caption line. [min=0, max=255, default=160] |
ResetTextAppearanceCommand |
Command |
get/set |
Restores the default text appearance. |
EnableTextReplacement |
bool |
get/set |
Whether to apply find-and-replace rules to the recognised text. [default=false]. Useful for fixing recurring misheard words, expanding domain abbreviations, or filtering profanity. Select the rules to apply under Rules File, below. A rule is applied the moment a word is complete, to the line still being written; lines that have moved up are settled. |
TextReplacementFileUrl |
Uri |
get/set |
Path to a JSON file containing find-and-replace rules. Each rule is a key/value pair where the key is the pattern to find and the value is the replacement. Supports exact matches and wildcard patterns (* for any characters, ? for one character). Reload Media re-reads the file if it changes on disk. |
RulesLoadedCount |
int |
get |
Number of rules successfully loaded from the rules file (read-only). |
ReplacementsAppliedCount |
int |
get |
Total number of replacements applied since the rules file was loaded (read-only). |
EnableReplacementStats |
bool |
get/set |
Whether to log replacement statistics to a file in the Reports folder. [default=false]. Records which rules fired and how often, written to a file next to the executable and rewritten every ten seconds while the operator runs, so it can be read during a show. The project must be saved first, since the file is named after it. Useful for tuning the rules file by seeing what is actually being matched. |
ReplacementStatsFileName |
string |
get |
Path of the current replacement-stats file (read-only). |
ReplacementStatsStatus |
string |
get |
Whether statistics are being collected, when they were last saved, and any error that stopped them (read-only). |
EnableTranscription |
bool |
get/set |
Whether to write all recognised speech to a transcript file in the Reports folder. [default=false]. Each utterance is written as one timestamped block, with the same corrections the captions get. Useful for archiving live shows, for review, and for finding the words to add to a rules file. The project must be saved first, since the transcript filename is based on the project name. |
TranscriptFileName |
string |
get |
Path of the current transcript file (read-only). |
IsSubtitleActive |
bool |
get |
True while an utterance is on screen or still being written (read-only). Useful for scripts that need to react when speech starts or ends. |
SubtitleStartTime |
string |
get |
UTC timestamp of the moment the block on screen began (read-only). Held for the whole block, so the words that extend it do not move it. Useful for tagging subtitles with absolute time when feeding them to external systems. |
SubtitleEndTime |
string |
get |
UTC timestamp of the moment the captions were removed (read-only). Empty while a block is on screen. |
SubtitleStartPts |
long |
get |
Video stream timestamp of the frame the block on screen began on (read-only). The input's own timestamp, in whatever units it provides, and zero when it provides none. Near the frame the text appears on, but not frame-accurate. |
SubtitleEndPts |
long |
get |
Video stream timestamp recorded when the utterance ended (read-only). The latest frame the operator had seen at that moment, on the same not-frame-accurate terms as Start PTS. Zero while one is in progress, or if the input does not provide a presentation timestamp. |
ScriptCallbackFunction |
string |
get/set |
Name of a Script Engine function to call when the captions change, when text is rejected by Allowed Languages, and when the captions are removed. It receives one JSON string carrying text, lines, suppressed, startPts and endPts. Empty text means the captions were removed. |
Description |
MultilineText |
get |
What this operator does. |
ExternalLink |
ExternalUrlLink |
get |
Link to the online documentation. |
Inherits from: AbstractOperator, AbstractAudioMetering, NamedModel.
See also: Speech To Text (Nemotron) in Operators — user-facing introduction, screenshots, and section summaries.