Efficient tools to build your streaming infrastructure


Nimble Streamer integrates with Speechmatics for live voice recognition

Softvelum continues to enhance accessibility of content delivery with the latest update to Nimble Streamer voice recognition: integration with the Speechmatics speech recognition service. This powerful addition expands the existing feature set that enables real-time transcription of live streams into subtitles.

Previously, Nimble Streamer introduced native AI-based speech recognition with Whisper.cpp engine. Now, users can also choose Speechmatics, a robust cloud-based service known for its accuracy, multilingual support, and adaptability to various accents and dialects. This provides more flexibility for streamers, broadcasters, and service providers who require highly accurate, scalable transcription solutions.

Key benefits of Speechmatics integration

  • High accuracy: Speechmatics has one of the industry’s leading engines for real-time STT (speech-to-text) transcription.
  • Scalable architecture: offload the recognition process to Speechmatics’ infrastructure to reduce the load on your own servers.

This new option is ideal for live broadcasters looking for reliable, high-performance captioning with minimal setup.

Notice that Speechmatics service pricing applies to the transcription process, you need to refer to Speechmatics for exact quote.
Softvelum is not affiliated with Speechmatics.

Now, let’s see how to enable Speechmatics in Nimble Streamer.

Prerequisites

In order to enable and set up Speechmatics transcribing in Nimble Streamer, you need to have the following.

  1. WMSPanel account with active subscription.
  2. Nimble Streamer is installed on an Ubuntu 24.04 and registered in WMSPanel. Other OSes and versions will be supported later.
  3. Live Transcoder is installed and its license is activated and registered on your Nimble Streamer instance. You can do it easily via panel UI.
  4. Addenda license is activated and registered on your Nimble Streamer instance.

In order to add Nimble Transcriber transcription engine, run the following command and restart Nimble instance as shown.

sudo apt install nimble-transcriber
sudo service nimble restart

That’s it, you may proceed to the setup.

Connect Speechmatics with Nimble

We assume you have an active Speechmatics account. Sign into it and proceed to Settings -> API Keys page.

API Keys page in Speechmatics account

Generate API key and copy the key value for further usage.

Also, get API endpoint URL on docs page.

Add the following parameters in nimble.conf file:

transcriber_type = speechmatics
speechmatics_api_url = wss://eu2.rt.speechmatics.com/v2
speechmatics_api_key = <copied-key-value>
speechmatics_language = <lang_code>

speechmatics_language parameter is optional and it defines the language that will be recognized in all incoming streams on the server. By default, it’s “en”, i.e English. If a stream has a different language than defined in this parameter, then it will not be recognized. If you want to define language per application or stream, please refer to section “Specifying per-stream languages” below.

Restart the Nimble instance to make the parameter work:

sudo service nimble restart

Enable recognition for live streams in Nimble

Once your Nimble instance has the speech recognition package, and Speechmatics parameters are set, you may enable transcription for that server in general as well as for any particular live stream.

To enable transcription for a particular set of streams, go to Nimble Streamer top menu, click on Live Streams Settings and select the server where you want to enable transcription.

If you’d like to enable transcription on the server level, open Global tab, check Generate WebVTT for audio checkbox and save settings.

You may also select a particular output application where you’d like to enable transcription, or create a new app setting. The same Generate WebVTT for audio setting is checked to enable the feature.

You may also enable the generation of CEA-708 subtitles, please read this article for more details.

After you apply all settings, you need to re-start the input stream. Once the re-started input is picked up by Nimble instance, the output HLS stream will have WebVTT subtitles carrying the transcribed closed captions.

Specifying per-stream languages

As was mentioned for speechmatics_language parameter, by default the language is defined on the server level. If you’d like to apply different languages besides the default one, you can specify full list of apps and streams with respective languages in a separate config. Use this parameter to define its location:

transcriber_config_path = /etc/nimble/transcriber-config.json

The content would be as follows.

{
    "speechmatics_params" : [
        {"app":"tv_source_1", "stream":"stream_1", "lang":"en"},
        {"app":"tv_source_2", "lang":"es"}
    ]
}

The “app” defines Nimble streamer application, “stream” defines the respective stream and “lang” is the two-letter language code. You may skip “stream“, in this case the language will be applied to all streams within the app.

Changes can be applied in this file without Nimble re-start. However, you need to re-start the input stream in order to transcribe it with the new language.

Please let us know if you have any questions, issues or suggestion for our voice recognition feature set.