Version 7 changes (current)¶
TrulyNatural version 7 introduced support for STT and is fully backwards compatible with version 6 models and code.
This library uses semantic versioning.
7.9.0 (2026-08-08)¶
- Added
- Models with support for grammar-import-path:
- tpl-spot-concurrent-1.6.0.snsr
- tpl-spot-debug-1.6.0.snsr
- tpl-spot-select-1.6.0.snsr
- tpl-spot-sequential-1.6.0.snsr
- tpl-spot-vad-3.14.0.snsr
- tnl tpl-opt-spot-vad-lvcsr-1.29.0.snsr
- tnl tpl-spot-vad-lvcsr-3.24.0.snsr
- tnl tpl-vad-lvcsr-3.18.0.snsr
- spot-voicegenie-enUS-6.6.0-m.snsr with support for the confidence-score result.
- tnl lvcsr-build-enUS-14.2.0-5MB.snsr with improved accuracy, and in-grammar acoustic confidence scores.
- stt Grammar-based recognition with grammar-stream, including runtime and in-grammar classes,
<dictation/>hand-off, and<unknown/>wildcard support. - stt stt-enUS-general-medium-2.4.5-pnc.snsr with support for grammar-stream.
- tnl stt Grammar-based recognition also accepts BNF+EM v2.1 grammars (auto-detected by a
#BNF+EMheader) for the supported subset, easing migration from Cerence-style grammars. - tnl stt Grammar-based recognition also accepts W3C SRGS 1.0 ABNF grammars (auto-detected by an
#ABNFheader) for the supported subset, easing migration from SRGS ABNF grammars. - tnl stt Native grammars accept a bounded-repeat postfix quantifier,
x{m,n}(withx{m},x{m,}, andx{,n}variants), for repeating a symbol or group a specific number of times. See grammar syntax. - tnl stt Native grammars accept a group weight suffix,
( ... )/w, which attaches a weight to a whole group; on an alternative branch it biases the recognizer without changing which utterances match. See grammar syntax. - tnl stt Native grammars accept the
<void/>special symbol: an unmatchable alternative that no input can traverse, useful as a placeholder branch. It is the native equivalent of BNF+EM<VOID>and SRGS$VOID. See grammar syntax. - tnl stt A grammar rule referenced with the
~sigil is compiled into an in-grammar recognition class, so common classes can be defined directly in the grammar text without a separate grammar-stream. The same rule referenced with$is still inlined. An in-grammar definition is an overridable default: an external stream still takes precedence, and existing grammars are unaffected. See grammar syntax. - tnl stt Native grammars can be split across files and share rules with
import,from ... import, andexportdirectives.import "m";brings a module's exported names in verbatim (import "m" as ns;prefixes them withns.);export name;and theexport prefix*;glob control visibility and re-export, so an aggregator module can re-export many sub-modules under one prefix. Imported rules are inlined with$nameor become in-grammar classes with~name. Existing single-file grammars are unaffected. See modules and imports. - tnl stt New grammar-import-path configuration setting: a
:-separated directory search path for resolving bare grammarimportreferences. Defaults to the current working directory. See modules and imports. - tnl stt Native grammars may declare a dialect version with an optional
#SNSR MAJOR.MINORheader on the first line, for example#SNSR 2.0. The compiler rejects a grammar that declares a newer version than it implements, so a grammar that relies on features from a later dialect fails clearly instead of misparsing. A grammar with no header, or a bare#SNSR, is treated as the current version, so existing grammars are unaffected. See grammar syntax. - tnl stt Native grammars may declare their language with a
languagedirective, for examplelanguage en-US;— a two- or three-letter language with an optional two-letter region (a subset of BCP 47), matched case-insensitively. The declaration is advisory and does not change which utterances match; a build may use it to sanity-check the grammar against the acoustic model. It is preserved across the native and SRGS formats. See grammar syntax.
- Models with support for grammar-import-path:
- Changed
- Improved load speed.
- fromAudioFile can now read single-channel FLAC files.
- The confidence-score result setting is no longer deprecated. It reports a calibrated true-accept probability for fixed-phrase wake words and its documentation describes the SNR range over which the probabilities were measured.
- CMake integration now locates the SDK with
find_package(SnsrLibrary CONFIG)and requires CMake 3.15 or later (previouslyinclude(SnsrLibrary)with CMake 3.10). See Integrate with your build ยง CMake. - tnl The LVCSR phrase-level recognition score now reports the geometric mean of the per-word scores instead of their length-biased product, and models built for it report a normalized in-grammar acoustic confidence.
- tnl stt A grammar rule referenced with the
~sigil now defaults to an in-grammar recognition class built from that rule. This changes an edge case: a grammar that both defined a ruleaand referenced~a, for examplea = 1 | 2 | 3; b = <s> say ~a </s>;, previously left~aundefined until supplied at runtime;~anow defaults to1 | 2 | 3. A runtime grammar-stream still overrides it. - tnl stt A
~nameclass that is referenced but never defined (in the grammar or through an external stream) now produces an advisory warning when the grammar is built or run. It is not an error, since any class can still be filled at runtime, but it usually indicates an oversight. Define the class, or usename = <void/>;to keep it intentionally empty without the warning. An undefined system class (~s.*) remains a hard error. See grammar syntax. - tnl stt grammar-stream and nlu-grammar-stream are now readable. Reading one back returns the grammar most recently set, flattened into a single self-contained grammar in native SNSR format:
importreferences are resolved and merged in, aggregators are expanded, comments are preserved, and a BNF+EM or SRGS source grammar is converted to the native format. See modules and imports. - stt
<unknown/>in STT grammars expands to primitive wildcard symbols. Word-level STT recognizers use<unknown-start/>followed by zero or more<unknown-cont/>; character-level recognizers use<unknown-start/>or<unknown-cont/>. Grammar-specified weights on unknown symbols are preserved. - stt The phrase-level recognition score now reports a normalized recognition confidence instead of a length-biased product of per-word scores.
- Deprecated
- tnl Binary class libraries (LVCSR-only, pre-built
.snsrclass repositories such as lvcsr-lib-enUS-14.0.2.snsr) are deprecated, and Sensory no longer publishes new ones. Existing LVCSR models that load a binary class library continue to work. For new grammars, reference the classes you need and import their definitions withimport, so the same grammar runs on both STT and LVCSR without loading a separate class-library model. See grammar syntax.
- tnl Binary class libraries (LVCSR-only, pre-built
- Removed
- spot-voicegenie-enUS-6.5.1-m.snsr
- tpl-spot-concurrent-1.5.0.snsr
- tpl-spot-debug-1.5.1.snsr
- tpl-spot-select-1.4.0.snsr
- tpl-spot-sequential-1.5.0.snsr
- tpl-spot-vad-3.13.0.snsr
- tnl tpl-opt-spot-vad-lvcsr-1.28.0.snsr
- tnl tpl-spot-vad-lvcsr-3.23.0.snsr
- tnl tpl-vad-lvcsr-3.17.0.snsr
- tnl lvcsr-build-enUS-14.0.2-5MB.snsr
- tnl lvcsr-lib-enUS-14.0.2.snsr Existing binary class libraries still load on LVCSR models, but new grammars should import class modules instead.
- stt stt-enUS-automotive-medium-2.3.15-pnc.snsr. A variant of this model is available for download.
- Fixed
- snsrStreamFromAudioFile mishandled the variadic arguments that follow a non-default StreamAudioFormat, so formats requiring extra parameters (such as sample rate) were read incorrectly.
- stt NLU wildcard echo markers are resolved before grammar minimization, so matched OOV words are preserved instead of appearing as literal
.tokens. - stt snsr-eval-batch now reports a character error rate (CER) for languages without word delimiters, such as Japanese and Chinese. Previously it applied word error rate (WER) to these languages, whose ambiguous word segmentation produced misleading rates. Space-delimited languages still report WER. See character error rate.
7.8.0 (2026-05-30)¶
- Added
- License key introspection: LICENSE_INFO, LICENSE_SUPPORT, LICENSE_OVERRIDE_NOT_VALID.
- profile:samples.
- Python language binding: platform-specific
snsrwheel (ctypes over the C API) for Python 3.10 and later, with sample projects in sample/python/ and documentation (Python examples, Integrate with your build ยง Python, and the Python tab in Your first program). - snsr-eval
-iflag to support batch processing. - LLM-friendly documentation Markdown bundle for coding agents and RAG pipelines. Each page is mirrored on the site at the same path as its source fileโsection roots as
<dir>/index.mdbeside<dir>/index.html, leaf pages as<dir>/<page>.mdbeside<dir>/<page>/index.htmlโand the entry point is llms.txt:- llms.txt โ discoverable index following the llmstxt.org convention; lists every page with one-line summaries plus a
## Symbolssection deep-linking C/Java identifiers to their documenting headings. - manifest.json โ JSON index of every member with
path,source_path,bytes,title,canonical_url, an optional H2/H3 outline on reference pages, and an optional ISO 8601 UTClast_modifiedso indexers can do incremental re-ingest. - llms-full.txt โ every page concatenated with
<!-- FILE: โฆ -->per-page separators (path and canonical URL in each header) for one-shot ingestion. - agent-docs.zip โ same files packaged as a single archive for vendored or air-gapped use; agents with network access should crawl the loose mirror instead.
- llms.txt โ discoverable index following the llmstxt.org convention; lists every page with one-line summaries plus a
- tnl lvcsr-build-enUS-14.0.2-5MB.snsr with improved recognition accuracy.
- tnl lvcsr-lib-enUS-14.0.2.snsr class library compatible with lvcsr-build-enUS-14.0.2-5MB.snsr.
- Changed
- The library-info summary includes text for LICENSE_SUPPORT.
- fromCode checks that the
SnsrCodeModeldata were compiled with compatiblestructpacking. - snsr-eval
-preports the real-time fraction required to run models in template slots. spot-eval-batchrenamed to snsr-eval-batch with support for commands, LVCSR and STT models.- Setting keys reorganized by concern (configuration, runtime, results, events, iterators) with new groups for LVCSR & STT, wake word & command set, and THF Micro DSP. Per-key anchors (e.g.
#listen-window,#partial-result-interval) are stable; cross-references and bookmarks continue to resolve. - macOS installers built for Apple Silicon (arm64) only. Contact Technical Support for Intel (x86_64) macOS installers. Both installer packages include libraries for arm64 and x86_64.
- stt nlu-grammar-stream overrides machine-learned NLU only if it detects no NLU matches.
- Removed
- lib/ios/libsnsr.a, use XCFramework instead.
- tnl lvcsr-build-enUS-12.13.1-5MB.snsr
- tnl lvcsr-lib-enUS-1.2.0.snsr
- stt CRF++ and fastText dependencies used for NLU in legacy STT models.
- Fixed
- Changes to listen-window had no effect after the first call to setHandler.
- The documentation for complete-only mistakenly noted that the default value was
0. This had changed to1in v6.20.0. - tpl-spot-sequential with
loop = 2mistakenly invoked the ^listen-end handler after each listen-window timeout.
- Security
- On Windows, using filenames longer than 256 characters with fromFileName or fromAudioFile could cause out-of-bounds heap access.
- Reading or changing an unknown setting on a model built with deeply-nested templates could access freed heap memory when reporting the error.
7.7.0 (2026-01-24)¶
- Added
- Smart Wake Word option to gate a VAD with a wake word at the start or at the end of an utterance.
- Option to apply library license keys with LICENSE configuration.
- The STT_SUPPORT config option requires a call to new.
- tnl lvcsr-build-enUS-12.13.1-5MB.snsr with improved recognition accuracy and simplified out-of-grammar modeling. This model replaces both lvcsr-build-enUS-2.7.3.snsr and lvcsr-background-enUS-1.2.3.snsr included in the previous release.
- Changed
- stt Improved STT model loading and initialization speed.
- Removed
- tpl-spot-vad-3.10.0.snsr
- tnl tpl-spot-vad-lvcsr-3.20.0.snsr
- tnl tpl-opt-spot-vad-lvcsr-1.25.0.snsr
- tnl lvcsr-build-enUS-2.7.3.snsr
- tnl lvcsr-background-enUS-1.2.3.snsr
- Fixed
- tnl Creating an LVCSR recognizer with a grammar that had a syntax error (such as unbalanced parentheses) and included empty lines or comments at the start of the grammar could lead to a crash caused by de-referencing a
NULLpointer. - stt With partial-result-interval
= 0STT recognizers did not produce recognition results on short utterances.
- tnl Creating an LVCSR recognizer with a grammar that had a syntax error (such as unbalanced parentheses) and included empty lines or comments at the start of the grammar could lead to a crash caused by de-referencing a
7.6.1 (2025-11-25)¶
- Changed
- Android examples build with Java 17 and later.
- Fixed
- Higher than expected CPU use in wake words and command sets. This addresses a regression introduced in 7.5.0.
- snsr-debug mistakenly used tpl-opt-spot-vad-lvcsr and stt-enUS-automotive-medium model versions from an earlier SDK release.
- Some of the C examples failed to build on Windows.
- Security
7.6.0 (2025-09-15)¶
- Added
- Setting
loop = 2pins the tpl-spot-sequential listening focus to the recognizer in slot1. - tpl-spot-debug-1.5.1.snsr with support for NLU intents and entities.
- udt-universal-3.67.1.0.snsr with improved accuracy.
- tpl-spot-vad-3.10.0.snsr with support for include-wake-word-audio.
- snsr-debug Android sample replaces
spot-debugand adds support for STT. - tnl tpl-spot-vad-lvcsr-3.20.0.snsr and tpl-opt-spot-vad-lvcsr-1.25.0.snsr with support for include-wake-word-audio.
- tnl Documentation notes that score values are not usable when result-max
> 1. - stt stt-enUS-automotive-medium-2.3.15-pnc.snsr
- Support for nlu-match-max.
- Setting stt-profile does not change partial-result-interval.
- stt Support for STT on 64-bit iOS platforms:
- iPhoneOS on
arm64andarm64e. - iPhoneSimulator on
arm64andx86_64.
- iPhoneOS on
- Setting
- Changed
- Documentation system from Doxygen to Material for MkDocs.
arm-linux-gnueabilibrary requires GLIBC >= 2.17 instead of GLIBC >= 2.34 for improved compatibility.- lib/*/README*md for the supported target platforms include the minimum required
GLIBCversion where relevant.
- Removed
- tpl-spot-debug-1.5.0.snsr
- udt-universal-3.66.1.9.snsr
- tpl-spot-vad-3.9.0.snsr
spot-debugAndroid sample, see snsr-debug instead.- Know issues documentation page.
- tnl tpl-spot-vad-lvcsr-3.19.0.snsr
- tnl tpl-opt-spot-vad-lvcsr-1.24.snsr
- stt stt-enUS-automotive-medium-2.3.13-pnc.snsr
- Fixed
- spot-convert could show incorrect license recognition or duration limits in the comments at the start of the header file it generates.
- allocPerf did not produce usable results when used with allocStdlib.
- tnl Incorrect begin-ms, end-ms, and score results for a tpl-spot-vad-lvcsr recognizer in slot
1of tpl-spot-concurrent. - tnl Using tpl-spot-sequential in slot 0 of tpl-opt-spot-vad-lvcsr or tpl-spot-vad-lvcsr could lead to warning messages on
stderr. - tnl snsr-eval
-aoption failed when used with class libraries. - stt Bus error on 32-bit Arm platforms when using a model with machine-learned NLU or punctuation and capitalization support. This was caused by a bug in ONNX that resulted in an attempt to read
int64_tvalues not aligned to 8 bytes.
- Security
- tnl If nlu-grammar-stream reduced the length of the phrase result (by using the
:rewrite operator, for example) in an STT model with punctuation and capitalization support, an unterminated string could cause an out-of-bounds memory read.
- tnl If nlu-grammar-stream reduced the length of the phrase result (by using the
7.5.0 (2025-06-12)¶
- Added
- snsr-eval
-a,-q, and-uflags. - stt-support, thread-support.
- Support for loading parts of a model that resides in ROM onto the heap. This can improve inference speed when ROM is significantly slower than RAM.
- Reduced peak RAM requirement on small platforms
- prune:enable option to remove unused settings after a model's been loaded.
- Reduced overhead in the session configuration store.
- fromProvider as an alias for
snsrStream_alloc(). - profile is available in the Java language binding.
- Support for
armv7kandarm64_32watchOS architectures. - tpl-spot-concurrent-1.5.0.snsr with support for ^listen-begin, ^listen-end, ^begin, ^end, ^limit, and ^silence.
- tpl-spot-vad-3.9.0.snsr
- tnl ram-limit, ac-prune-top-k.
- tnl Support for improved out-of-grammar detection (with better discrimination and lower RAM overhead) in grammar-based recognition and VoiceHub Pro models.
- tnl Support for grammar-based recognition models that report recognition scores.
- tnl Templates with support for domain, am-size, lm-size, nlu-size, and slm-size:
- tnl Models updated to support score setting:
- lvcsr-background-enUS-1.2.3.snsr
- lvcsr-build-enUS-2.7.3.snsr
- stt domain, slm-size.
- stt stt-enUS-automotive-medium-2.3.13-pnc.snsr with support for domain and slm-size. This model includes a single language model, so domain will return
NULL. It does not include a generative language model either: slm-size is0.
- snsr-eval
- Changed
- Documentation available online.
- snsr-edit requires the
-oflag to create output. - snsr-eval prints scores with the
%gformat specifier. - getDouble, setDouble, getInt, and setInt support both double and integer settings, but will report INCORRECT_SETTING_TYPE if a double value cannot be converted to an integer without loss of precision or overflow.
- getString and setString support double and integer settings.
- set no longer requires quotes for string arguments without embedded spaces.
- SOURCE, SOURCE_RAM, and SOURCE_PRUNED create code that tags all model objects with preprocessor macro
SNSR_MODEL_ATTR. Use this, for example, to specify the section in which the linker places these objects. See Compile-time macros ยง SNSR_MODEL_ATTR. - sample/c/CMakeLists.txt
- Builds
snsr-eval-subset. - Installs the sample binaries in sample/c/bin/.
- Builds
- sample/c/Makefile and sample/c/CMakeLists.txt build the live-spot-stream.c example on macOS.
- util/gradlew uses Gradle 8.14, compatible with Java 21.
- Java examples use lambda expressions for event handlers and iterators.
- Enrolled wake word tasks no longer invoke ^pause and ^resume when interactive
== 0. - tnl tpl-opt-spot-vad-lvcsr and tpl-spot-vad-lvcsr with include-leading-silence
= 1no longer invoke the ^result, ^nlu-intent, and ^nlu-slot events if the VAD does not detect speech. The ^listen-end directly follows the ^silence event. - tnl snsr-eval with live audio input will not run LVCSR or STT models that do not include a VAD component. Use the new
-aflag to add tpl-vad-lvcsr on the fly. - tnl complete-only
= 1accepts results even if there's no trailing silence in the utterance. - stt In STT models with punctuation and capitalization support, empty results are reported as an empty string instead of a single period.
- Removed
- tpl-spot-concurrent-1.4.0.snsr
- tpl-spot-vad-3.8.0.snsr
- tnl lvcsr-background-enUS-1.2.1.snsr
- tnl lvcsr-build-enUS-2.7.0.snsr
- tnl tpl-opt-spot-vad-lvcsr-1.20.0.snsr
- tnl tpl-spot-vad-lvcsr-3.11.0.snsr
- tnl tpl-vad-lvcsr-3.10.0.snsr
- stt stt-enUS-automotive-medium-2.3.13.snsr
- Fixed
- Machine-learned VAD components detected the speech onset late on synthetic audio data with significant all-zero leading silence.
- oss-components always returned
NULL. - tnl In rare cases grammar-based recognition NLU intent names could mistakenly include the first word of the NLU intent value.
- tnl In rare cases VoiceHub models that use grammar-based recognition could misclassify in-domain intents as
background. - tnl Potentially reduced recognition accuracy in grammar-based recognition models that use ram-limit to constrain the Viterbi decoder.
- Security
- Deeply-nested templates with duplicate models (for example, combining the same spotter model with tpl-spot-concurrent, then combining the result with another tpl-spot-concurrent and the same spotter model, three levels deep), could result in out-of-bounds memory access when releasing the session.
7.4.1 (2025-03-13)¶
- Fixed
- stt Using custom-vocab to map multi-word sequences could result in missed NLU entities.
7.4.0 (2025-01-22)¶
- Added
- Java support on x86_64-windows-msvc.
- SOURCE_RAM and snsr-edit
-Coption. - Spotter template modes with new settings low-fr-operating-point and duration-ms:
- Support for Smart Wake Words. On a near-miss false reject, these models switch to a more accepting operating point for a limited duration to make it more likely that the model will accept a repeated wake word utterance. Enable this feature (on wake word models that support it) by setting low-fr-operating-point. Adjust the duration of the low false-reject listening window with duration-ms.
- spot-voicegenie-enUS-6.5.1-m.snsr with support for low-fr-operating-point and duration-ms.
- Compatibility with 2025 VoiceHub Pro wake words and command sets.
- VERSION_CMAKE.
- tnl tpl-opt-spot-vad-lvcsr-1.20.0.snsr supports changing VAD settings backoff, hold-over, leading-silence, max-recording, trailing-silence, and include-leading-silence. Adds vocab-iterator, ^slm-start, ^slm-result-partial, ^slm-result, slm-enabled, slm-turn-limit, stt-profile, low-fr-operating-point, and duration-ms.
- tnl VAD template models with new settings ^slm-start, ^slm-result-partial, ^slm-result, slm-enabled, slm-turn-limit, stt-profile, low-fr-operating-point, and duration-ms:
- stt stt-profile.
- stt Experimental support for generative language models. New settings: ^slm-start, ^slm-result-partial, ^slm-result, slm-enabled, and slm-turn-limit.
- stt stt-enUS-automotive-medium-2.3.13.snsr
- Results include capitalization and punctuation.
- Supports stt-profile.
- Changed
- Android JNI shared libraries export only TrulyNatural function names. This significantly reduces the chances of symbol clashes in applications that use third-party libraries that depend on the same OSS modules as the TrulyNatural SDK.
- Android JNI libraries built with NDK r27c and flexible page size support.
- Improved compatibility with older Android releases, support for API level 21 and later.
- SnsrLibrary.cmake removes unused functions and data from target executables (
-ffunction-sections -fdata-sections) - DSP library (for creating embedded spotter models) version 8.5.0.
- Toolchain updates:
- arm-linux-gnueabi built with gcc 13.2.0.
- arm-linux-gnueabihf built with gcc 13.3.1.
- i686-linux-gnu built with gcc 13.2.0.
- On Windows, snsr-eval sets the console code page to
UTF-8. - If application code used push and did not call stop before releasing the model, the call to release invoked all pending event handlers. It now ignores these.
- stop completes even if the session is in an error state.
- tnl No ^result-partial for empty hypotheses.
- stt Support Windows
\r\nline termination as entry separators in custom-vocab. - stt Removed the 1000-entry limit for custom-vocab. Using such large custom vocabularies is frequently counter-productive. Consider contacting your Sensory Sales representative to discuss creating a domain-specific recognizer instead.
- stt Improved custom-vocab behavior in character-based languages such as Mandarin Chinese.
- stt STT models start fewer threads.
- Deprecated
- Removed
- spot-voicegenie-enUS-6.5.0-m.snsr
- tpl-spot-debug-1.4.0.snsr
- tpl-spot-sequential-1.4.0.snsr
- tpl-spot-vad-3.7.0.snsr
- tpl-spot-dynop-1.4.0.snsr
- tnl tpl-opt-spot-vad-lvcsr-1.12.0.snsr
- tnl tpl-spot-vad-lvcsr-3.11.0.snsr
- tnl tpl-vad-lvcsr-3.10.0.snsr
- stt stt-enUS-automotive-small_medium-2.2.13-BBB-ff.snsr
- Fixed
- With push-duration-limit
> 0, reset did not flush the push backlog buffer enabled with push-buffer-size. - Low memory use VoiceHub Large Vocabulary Project models could fail to run if settings (such as operating-point) were changed after registering event handlers.
- Reading settings from models built from deeply nested templates could mistakenly report VALUE_NOT_SET.
- tnl search.frame-nota was ignored for ^result when used with lightweight NLU.
- With push-duration-limit
- Security
- If application code using the C API used push, and a result handler called forEach, and that handler was invoked by release because the session was released without calling stop first, then a double-free and access of invalid heap memory could occur.
- tnl Out-of-bounds memory access could occur if tpl-opt-spot-vad-lvcsr was used with
0.include-leading-silence = 1.
7.3.0 (2024-07-29)¶
- Added
- New FAQ section: How do I take action on an NLU result?
- Support for adding this SDK to projects that use CMake. See C examples.
- Real-time clock implementation for Windows, enables profile:real-time.
- Support for multi-phrase spotter models with lower false accept rates.
- arm-none-eabi library with NEON built with gcc 13.3.1.
- tnl VAD template models with settings backoff and max-recording optimized for STT. The defaults are now 300 ms for audio backoff, and 60 seconds for the maximum recording duration.
- tpl-opt-spot-vad-lvcsr-1.12.0.snsr
- tpl-spot-vad-lvcsr-3.11.0.snsr
- tpl-vad-lvcsr-3.10.0.snsr
- stt Improved STT recognition speed and accuracy, and reduced ^result and ^nlu-intent latency when used with a VAD.
- stt STT support for arm-linux-gnueabihf, aarch64-linux-gnu, and x86_64-windows-msvc.
- stt stt-enUS-automotive-small_medium-2.2.13-BBB-ff.snsr
- 100 MiB total size compared to 299 MiB in previous version.
- Improved NLU inference speed.
- Improved accuracy.
- Changed
- arm-linux-gnueabihf and aarch64-linux-gnu libraries built with gcc 10.3.1.
- tnl Optimized machine-learned NLU models. On average these now run about ten times faster.
- Removed
- Windows ports: x86-windows-2008, x86-windows-2015, x86_64-windows-2008, x86_64-windows-2015, x86_64-windows-mingw.
- arm-buildroot-linux-uclibcgnueabihf library.
- arm-ca7-linux-gnueabihf library.
- tnl VAD template models:
- tpl-opt-spot-vad-lvcsr-1.11.0.snsr
- tpl-spot-vad-lvcsr-3.10.0.snsr
- tpl-vad-lvcsr-3.9.0.snsr
- stt stt-enUS-automotive-small_medium-2.0.8-BBB-ff.snsr
- Fixed
- Certain low false-accept spotter models reported an internal validation error when used with tpl-spot-sequential-1.4.0.snsr
- spot-convert
-cproduced incorrect code output for recent low false-accept models. - The iOS sample app mistakenly embedded snsr.xcframework, leading to TestFlight rejection due to asset validation errors.
- The TrulyNatural SDK linked against
-landroid,making it incompatible with the Vendor Native Development Kit. - stt Duplicate entities and typographic errors in the documentation for stt-enUS-automotive-small_medium-2.2.13-BBB-ff.snsr
- Security
- stt NLU models could cause out-of-bounds memory access on very long (hundreds of words) recognition results.
7.2.0 (2024-04-11)¶
- Added
- snsr-eval
-poption shows an estimate of the CPU processing capacity required to run a model in real-time. - profile:real-time.
- tnl nlu-intent-score, nlu-entity-score, and nlu-slot-score.
- tnl Models updated to support NLU score and score settings:
- stt am-size, lm-size, nlu-size.
- stt stt-enUS-automotive-small_medium-2.0.8-BBB-ff.snsr
- Improved recognition accuracy compared to stt-v2-enUS-automotive-0.2.11-BT-400ms.snsr
- Adjusts model evaluation interval to match partial-result-interval.
- snsr-eval
- Changed
- run ignores push-duration-limit.
- tnl
snsr-eval-llldoes not show ^nlu-intent or ^nlu-slot results. - tnl snsr-eval shows NLU intent, entity, and slot scores.
- stt STT models use partial-result-interval to set the model evaluation interval. The larger this interval the lower the average CPU use.
- Removed
- tnl Models updated to support NLU score settings:
- tpl-opt-spot-vad-lvcsr-1.9.0.snsr
- tpl-spot-vad-lvcsr-3.8.0.snsr
- tpl-vad-lvcsr-3.8.0.snsr
- tpl-spot-lvcsr-1.5.0.snsr (Use tpl-spot-vad-lvcsr-3.10.0.snsr instead.)
- stt stt-v2-enUS-automotive-0.2.11-BT-400ms.snsr
- tnl Models updated to support NLU score settings:
- Fixed
- load now returns LIBRARY_TOO_OLD when attempting to load a model that uses features it does not support.
7.1.1 (2024-02-13)¶
- Fixed
- Linking against the Android static libraries could suppress the output of calls to
__android_log_print(),__android_log_vprint(),and__android_log_write()in the entire application. - The AAR file for Android once again links against
-llog. - tnl tpl-spot-vad-lvcsr-3.8.0.snsr would keep listening for LVCSR audio if enough silence after the wake word lead to ^silence.
- This happened only for LVCSR recognizers (including those made with VoiceHub) and did not affect STT ones.
- Regression from 7.0.0.
- Linking against the Android static libraries could suppress the output of calls to
7.1.0 (2024-01-11)¶
- Added
- tnl Simplified NLU API
- Reduces NLU slot hierarchy to just two levels.
- Provides direct access to top-level NLU slots as "intents" and child slots as "entities".
- Does not support nlu-match-max
>1. - Does not replace the existing NLU slot API.
- See ^nlu-intent, nlu-intent-name, nlu-intent-value, nlu-entity-iterator, nlu-entity-count, nlu-entity-name, and nlu-entity-value.
- tnl Models updated to support simplified NLU API:
- lvcsr-background-enUS-1.2.1.snsr
- lvcsr-build-enUS-2.7.0.snsr
- tpl-opt-spot-vad-lvcsr-1.9.0.snsr
- tpl-spot-lvcsr-1.5.0.snsr
- tpl-spot-vad-lvcsr-3.8.0.snsr
- stt Support for machine-learned NLU intent and entity classifiers.
- stt custom-vocab
- stt stt-v2-enUS-automotive-0.2.11-BT-400ms.snsr
- tnl Simplified NLU API
- Changed
- AAR file for Android is no longer linked against
-landroidand-llog.This allows it to be used in an AOSP system image.
- AAR file for Android is no longer linked against
- Removed
- Energy-only VAD models superseded by machine-learned versions:
- tpl-spot-vad-2.4.0.snsr
- tpl-spot-vad-2.0.1.snsr
- tnl tpl-spot-vad-lvcsr-2.4.0.snsr
- tnl tpl-vad-lvcsr-2.5.0.snsr
- tnl Models updated to support simplified NLU API:
- lvcsr-background-enUS-1.1.0.snsr
- lvcsr-build-enUS-2.6.0.snsr
- tpl-opt-spot-vad-lvcsr-1.8.0.snsr
- tpl-spot-lvcsr-1.4.0.snsr
- tpl-spot-vad-lvcsr-3.7.0.snsr
- tpl-vad-lvcsr-3.7.0.snsr
- stt stt-v1-en-1.0.1-400ms.snsr
- Energy-only VAD models superseded by machine-learned versions:
- Fixed
- VAD models models ignored the max-recording setting.
- tnl tpl-opt-spot-vad-lvcsr did not produce a ^result for slot
=0 if 0.include-leading-silence was set to1and a leading-silence timeout occurred. - tnl LVCSR models used in a VAD template would stop producing ^result callbacks if the VAD reported ^limit. STT models were not affected.
7.0.0 (2023-11-20)¶
- Added
- CONFIG_PRUNED and SOURCE_PRUNED reduce the size of serialized models by removing configuration options such as unused operating-point values.
- snsr-edit
-poption reduces phrasespot model sizes by removing operating points other than the currently selected operating-point. - stt STT support with improved accuracy suitable for command-and-control and dictation tasks.
- This initial release includes STT support on Android, macOS, and x86_64-linux only.
- Includes Open Source modules, see open source licenses.
- Requires linking against a C++ runtime, see Integrate with your build.
- Using STT models do not require any API changes. These are drop-in replacements for older LVCSR models on supported platforms.
- STT recognition models
- stt-v1-en-1.0.1-400ms.snsr
- Contact your Sensory Sales representative for additional languages.
- New settings: oss-components, STT_SUPPORT.
- Changed
- The deprecated delay setting is read-only.
- DSP library (for creating embedded spotter models) version 7.4.0.
- tnl The effects of
:terminal rewrites @b are now visible in ^result text values. - tnl The lightweight NLU processor scoring algorithm no longer considers
:insertedandremoved:words when ranking result parses. This potentially changes the primary NLU result, or the order in which NLU results are presented when nlu-match-max> 1, for grammars that use the:rewrite feature to better match expectations. - tnl If the time required to compute a partial LVCSR result exceeds the push-duration-limit, the ^result-partial callback does not happen.
- tnl The grammar-based recognition grammars support the literal use of special tokens by escaping them with a backslash.
- Deprecated
- Lightweight VAD. Use a VAD model instead.
- Removed
- tnl References to the
<-slot assignment operator in grammar-based recognition. This had been a symbol reserved for internal use only. - tnl lvcsr-broad-enUS-3.1.0-t5.snsr
- tnl References to the
- Fixed
- Machine-learned VAD models could unexpectedly report an error when the from-index value was less than the first-index value.
- A subset of spotter models showed increased false accept rates when used with task templates.
- tnl tpl-opt-spot-vad-lvcsr mistakenly invoked ^silence and ^listen-end multiple times at end-of-stream if 0.include-leading-silence was set to
1. - tnl tpl-spot-concurrent with a spotter model in slot 0 and an LVCSR model (gated by a VAD, or spotter and VAD) in slot 1 would mistakenly return nlu-slot-name and nlu-slot-value values as
NULL. - tnl ^nlu-slot could still occur even if complete-only suppressed the recognition result.
- tnl grammar-based recognition with classes could fail with a segmentation fault when attempting to build a recognizer with too many class references.
- Security
- This sequence of operations could lead to getString returning an unterminated string:
- In the Java language binding fromMemory and fromString could potentially access the underlying
byte[]memory after it was garbage-collected.