# TrulyNatural SDK -- agent documentation (Markdown bundle)
> On-device speech recognition SDK for embedded systems, mobile apps, and desktop software. Wake words, command sets, LVCSR, and STT — runs locally with C, Java, and Python bindings (Android Kotlin uses the Java binding).
> This file is the agent-oriented Markdown index of that documentation: the same content as the themed HTML site, rendered as Markdown with stable link targets, packaged for coding agents, RAG pipelines, and other LLM tools.
> Register this file's URL in a documentation index and ingest the linked
> `.md` pages on this host (same content as the paired `HTML:` URLs below).
Canonical HTML site: https://doc.sensory.com/tnl/7.8/
Version: 7.9.0-pre.0 · Latest: https://doc.sensory.com/tnl/latest/llms.txt
## How to read this file
- Every entry below is `- [title](markdown_url): summary (HTML: html_url)`. Fetch the `.md` URL for ingestion or the `HTML:` URL for the rendered page; both reach the same content.
- **If you have network access, this file plus the linked `.md` pages and `manifest.json` are sufficient -- ignore the zip.** [agent-docs.zip](https://doc.sensory.com/tnl/7.8/agent-docs.zip) packages the same bytes for vendored / air-gapped use; agents with HTTP access should crawl the loose mirror instead so the index and pages stay in lock-step with the canonical site.
- **Do not synthesize URLs by stripping `.md` and appending `/`.** Follow the explicit links above instead. Mirror paths match `manifest.json` `source_path` values: section roots use `
/index.md` beside `/index.html`; leaf pages use `/.md` beside `//index.html` (not `//index.md` inside the HTML directory). Trailing-slash heuristics are not reliable.
- **Ingestion:** fetch individual `.md` pages (use `manifest.json` `bytes` to budget context). Reserve [llms-full.txt](https://doc.sensory.com/tnl/7.8/llms-full.txt) for bulk offline indexing, not as default chat context. Both are catalogued in `## Machine index` below.
- **Priority (drop first under a tight context budget):** the lowest-value sections to skip are `## Symbols` (identifier deep-links), the per-file source mirrors under `## C examples` / `## Java examples` (raw `.c` / `.java` listings), `## Changes` (v5 / v6 history), and `## Licenses`. Keep `## Common tasks`, `## Start here`, `## API reference`, `## Setting keys`, and `## Models`.
## Machine index
- [manifest.json](https://doc.sensory.com/tnl/7.8/manifest.json): JSON index of every member with `path`, `source_path`, `bytes`, `title`, `canonical_url`, optional `headings` (H2/H3 outline on reference pages and any page ≥ 5 KiB), and optional `last_modified` (ISO 8601 UTC); top-level `symbols` (per-heading `bindings` for C/Java/Python); schema version 3.
- [llms-full.txt](https://doc.sensory.com/tnl/7.8/llms-full.txt): every Markdown page concatenated into a single file, with one HTML-comment header per page so LLMs can locate sections by path.
## Common tasks
- [First wake-word program](https://doc.sensory.com/tnl/7.8/getting-started/your-first-program.md): Write your first program with the Session API in C, Java, Python, Android, or iOS. (HTML: https://doc.sensory.com/tnl/7.8/getting-started/your-first-program/)
- [Install SDK and try snsr-eval](https://doc.sensory.com/tnl/7.8/getting-started/index.md): Install the SDK and try `snsr-eval` and `snsr-edit` to learn the concepts. (HTML: https://doc.sensory.com/tnl/7.8/getting-started/)
- [Integrate into your build](https://doc.sensory.com/tnl/7.8/api/build-system.md): Add the SDK to a CMake, Make, Java, Python/uv, Gradle (Android), or Xcode (iOS) build. (HTML: https://doc.sensory.com/tnl/7.8/api/build-system/)
- [Push audio / third-party ASR](https://doc.sensory.com/tnl/7.8/api/sample/c/push-audio.md): Push audio from your own source through the recognizer with VAD, for third-party ASR pipelines. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/push-audio/)
- [Wake word then LVCSR or STT](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-vad-lvcsr.md): Run a wake word, segment with VAD, then transcribe with LVCSR or STT (template model). (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-vad-lvcsr/)
- [Setting keys reference](https://doc.sensory.com/tnl/7.8/api/setting-keys/index.md): Look up setting keys for configuration, events, iterators, results, runtime, and library info. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/)
- [Session API](https://doc.sensory.com/tnl/7.8/api/inference.md): Use the Session API: create, `load`, `run`/`push`, register handlers, and inspect return codes. (HTML: https://doc.sensory.com/tnl/7.8/api/inference/)
- [Streams and I/O](https://doc.sensory.com/tnl/7.8/api/io.md): Open audio devices, read/write memory streams, and load models with the Stream API. (HTML: https://doc.sensory.com/tnl/7.8/api/io/)
- [Recipes and how-tos](https://doc.sensory.com/tnl/7.8/faq.md): Solve common problems: push audio, capture post-wake speech, UI-thread callbacks, enrollment, code size. (HTML: https://doc.sensory.com/tnl/7.8/faq/)
- [Set up an AI coding editor](https://doc.sensory.com/tnl/7.8/agent-tools.md): Register `llms.txt` in Claude Code, Aider, Continue, or Cline (HTML site root in Cursor — it does not parse `llms.txt`); plus `manifest.json` for programmatic ingestion. (HTML: https://doc.sensory.com/tnl/7.8/agent-tools/)
- [Sample: live wake word (C)](https://doc.sensory.com/tnl/7.8/api/sample/c/live-spot.md): Build a minimal live-audio wake-word spotter in C with `load` + `run`. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/live-spot/)
- [Run Python samples with uv](https://doc.sensory.com/tnl/7.8/api/sample/python/index.md): Create the Python sample venv, install the local SDK wheel, and run pytest with uv. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/)
- [Spot a wake word from Python](https://doc.sensory.com/tnl/7.8/api/sample/python/hello_world.md): Run pull-mode phrase spotting from Python using the SDK wheel and file audio. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/hello_world/)
- [Push STT audio from Python](https://doc.sensory.com/tnl/7.8/api/sample/python/stt_push.md): Feed audio chunks to a Speech-to-Text session from Python with `push`. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/stt_push/)
- [Enroll a user-defined wake word (Java)](https://doc.sensory.com/tnl/7.8/api/sample/java/enrollUDT.md): Enroll a UDT (user-defined trigger) on the command line in Java with Gradle. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/enrollUDT/)
- [Enroll a user-defined wake word (Python)](https://doc.sensory.com/tnl/7.8/api/sample/python/live_enroll.md): Enroll a UDT from recordings or live microphone input with Python. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/live_enroll/)
- [Enroll a UDT inside an Android app](https://doc.sensory.com/tnl/7.8/api/sample/android/enroll-trigger.md): Enroll a user-defined wake word from an Android app (Android Studio or Gradle). (HTML: https://doc.sensory.com/tnl/7.8/api/sample/android/enroll-trigger/)
- [Capture audio after a wake word (C)](https://doc.sensory.com/tnl/7.8/api/sample/c/live-segment.md): Spot a wake word, then segment the post-wake utterance with a VAD and save it to a `.wav` file (C). (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/live-segment/)
- [Spot from a custom audio stream (C, RTOS)](https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data-stream.md): Spot from a custom audio stream on an RTOS device with `fromProvider` and pull-mode `run` (C). (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data-stream/)
- [Spot from a custom audio stream (Python)](https://doc.sensory.com/tnl/7.8/api/sample/python/custom_stream.md): Implement a Python `from_provider` stream with zero-copy memoryview callbacks. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/custom_stream/)
- [Embedded keyword spotter (C, no OS)](https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data.md): Run a small keyword spotter from code space with a custom allocator and no file-system / heap calls (C). (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data/)
- [Phrase spotter on iOS (Swift)](https://doc.sensory.com/tnl/7.8/api/sample/ios/phrasespot.md): Run a phrase spotter on iOS in Swift via the native C API of the SDK. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/ios/phrasespot/)
- [Run snsr-eval / snsr-edit / spot-enroll](https://doc.sensory.com/tnl/7.8/tools/index.md): Use the command-line tools `snsr-eval`, `snsr-edit`, `spot-enroll`, and friends. (HTML: https://doc.sensory.com/tnl/7.8/tools/)
- [Model catalog](https://doc.sensory.com/tnl/7.8/models/index.md): Browse the catalog of sample `.snsr` task models and grammar reference material. (HTML: https://doc.sensory.com/tnl/7.8/models/)
- [Version 7 changes](https://doc.sensory.com/tnl/7.8/changes/index.md): See what changed in version 7 (STT support, migration from v6, backwards compatibility). (HTML: https://doc.sensory.com/tnl/7.8/changes/)
- [Upgrade from earlier SDK](https://doc.sensory.com/tnl/7.8/upgrade.md): Upgrade from an earlier SDK release with full backwards compatibility for code and models. (HTML: https://doc.sensory.com/tnl/7.8/upgrade/)
## Start here
- [TrulyNatural SDK](https://doc.sensory.com/tnl/7.8/index.md): On-device speech recognition SDK for embedded systems, mobile apps, and desktop software. Wake words, command sets, LVCSR, and STT — runs locally with C, Java, and Python bindings (Android Kotlin uses the Java binding). (HTML: https://doc.sensory.com/tnl/7.8/)
- [Quick start](https://doc.sensory.com/tnl/7.8/getting-started/index.md): Quick walk-through to install the TrulyNatural SDK, set up your environment, and run your first wake word, LVCSR, or STT recognizer using the command-line tools. (HTML: https://doc.sensory.com/tnl/7.8/getting-started/)
- [Your first program](https://doc.sensory.com/tnl/7.8/getting-started/your-first-program.md): Hands-on walk-through to embed a wake-word spotter in your own application using the TrulyNatural Session API, live microphone input, and platform-specific build steps for C, Java, Python, Android, and iOS. (HTML: https://doc.sensory.com/tnl/7.8/getting-started/your-first-program/)
- [API reference](https://doc.sensory.com/tnl/7.8/api/index.md): Reference for the TrulyNatural SDK programming interfaces — C, Java, and Python bindings (Android Kotlin uses the Java binding), inference, I/O, settings, and constants — with sample code for C, Java, Python, Android… (HTML: https://doc.sensory.com/tnl/7.8/api/)
- [Reference](https://doc.sensory.com/tnl/7.8/reference/index.md): TrulyNatural SDK reference — variants and platforms, command-line tools, supplied models, model types and templates, license keys, and the changelog. (HTML: https://doc.sensory.com/tnl/7.8/reference/)
- [Overview](https://doc.sensory.com/tnl/7.8/reference/overview.md): TrulyNatural SDK reference overview — variants, host requirements, target platforms, snsr model files, command-line tools, and license keys. (HTML: https://doc.sensory.com/tnl/7.8/reference/overview/)
- [Command-line tools](https://doc.sensory.com/tnl/7.8/tools/index.md): Reference for the TrulyNatural SDK command-line utilities — snsr-eval, snsr-edit, spot-enroll, live-enroll, snsr-eval-batch, and spot-convert — for running, editing, and enrolling models. (HTML: https://doc.sensory.com/tnl/7.8/tools/)
- [Version 7 changes (current)](https://doc.sensory.com/tnl/7.8/changes/index.md): Release notes for the current TrulyNatural SDK major version (v7), with backwards compatibility, semver, and links to v6 and v5 (beta) changelogs. (HTML: https://doc.sensory.com/tnl/7.8/changes/)
- [Models](https://doc.sensory.com/tnl/7.8/models/index.md): Sample wake word, LVCSR, and STT models shipped with the TrulyNatural SDK distribution, plus pointers to additional language and size variants available for download. (HTML: https://doc.sensory.com/tnl/7.8/models/)
## Overview
- [Coding agents](https://doc.sensory.com/tnl/7.8/agent-tools.md): Use the TrulyNatural SDK documentation with AI coding tools (Cursor, Claude Code, GitHub Copilot, Aider, Continue) via llms.txt, llms-full.txt, manifest.json, or the HTML site root. (HTML: https://doc.sensory.com/tnl/7.8/agent-tools/)
- [Contact information](https://doc.sensory.com/tnl/7.8/contact.md): Contact information for Sensory — technical support, sales offices, and company address. Get in touch about TrulyNatural SDK licensing, integration, and support. (HTML: https://doc.sensory.com/tnl/7.8/contact/)
- [Frequently Asked Questions](https://doc.sensory.com/tnl/7.8/faq.md): Frequently asked questions about the TrulyNatural SDK — embedding recipes, concepts (thread safety, model formats), performance tuning, and troubleshooting. (HTML: https://doc.sensory.com/tnl/7.8/faq/)
- [How to upgrade](https://doc.sensory.com/tnl/7.8/upgrade.md): How to upgrade applications to a new TrulyNatural SDK version or variant — replace libraries and headers, update Gradle properties, and rebuild. (HTML: https://doc.sensory.com/tnl/7.8/upgrade/)
## Reference
- [VoiceHub](https://doc.sensory.com/tnl/7.8/reference/voicehub.md): Sensory's VoiceHub is a web portal that provides a convenient interface for developers to prototype and experiment with wake words, language models and natural language understanding.… (HTML: https://doc.sensory.com/tnl/7.8/reference/voicehub/)
## API reference
- [Integrate with your build](https://doc.sensory.com/tnl/7.8/api/build-system.md): Add the TrulyNatural SDK to your application build — integration for CMake, Make, Java, Python, Gradle on Android, and Xcode on iOS. (HTML: https://doc.sensory.com/tnl/7.8/api/build-system/)
- [Compile-time macros](https://doc.sensory.com/tnl/7.8/api/compile-macros.md): Optional TrulyNatural SDK C/C++ preprocessor macros for library initialization, symbol linkage, and generated model-code placement. (HTML: https://doc.sensory.com/tnl/7.8/api/compile-macros/)
- [Constants](https://doc.sensory.com/tnl/7.8/api/constants.md): TrulyNatural SDK build constants — preprocessor macros and module constants for variant, version, and linkage. (HTML: https://doc.sensory.com/tnl/7.8/api/constants/)
- [Memory management](https://doc.sensory.com/tnl/7.8/api/heap.md): Memory management for the TrulyNatural SDK C binding — reference counting, retain and release, and heap allocator configuration. (HTML: https://doc.sensory.com/tnl/7.8/api/heap/)
- [Inference](https://doc.sensory.com/tnl/7.8/api/inference.md): TrulyNatural Session API reference — create, load, run, push, handlers, getters and setters, iterators, and return codes for model inference. (HTML: https://doc.sensory.com/tnl/7.8/api/inference/)
- [Input and output](https://doc.sensory.com/tnl/7.8/api/io.md): TrulyNatural Stream API reference — files, memory buffers, live audio devices, compiled models, and user-defined data sources and sinks. (HTML: https://doc.sensory.com/tnl/7.8/api/io/)
- [Library configuration](https://doc.sensory.com/tnl/7.8/api/library-config.md): TrulyNatural library configuration reference (C API) — heap, allocators, logging, initialization, and platform-specific library settings. (HTML: https://doc.sensory.com/tnl/7.8/api/library-config/)
- [API overview](https://doc.sensory.com/tnl/7.8/api/overview.md): Overview of the TrulyNatural Session API — design goals, conceptual model, C, Java, and Python bindings, and pull vs push audio processing. (HTML: https://doc.sensory.com/tnl/7.8/api/overview/)
## Setting keys
- [Setting keys](https://doc.sensory.com/tnl/7.8/api/setting-keys/index.md): Reference for the string keys used in TrulyNatural SDK Session calls — configuration, runtime, results, events, iterators, values, and library information. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/)
- [Configuration](https://doc.sensory.com/tnl/7.8/api/setting-keys/configuration.md): TrulyNatural configuration setting keys — read and write model settings persisted by dup, load, and save. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/configuration/)
- [Events](https://doc.sensory.com/tnl/7.8/api/setting-keys/events.md): TrulyNatural event setting keys — register Session callback handlers with setHandler for recognizer events. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/events/)
- [Iterators](https://doc.sensory.com/tnl/7.8/api/setting-keys/iterators.md): TrulyNatural iterator setting keys — loop over list-valued settings with forEach on a Session. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/iterators/)
- [Library information](https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information.md): TrulyNatural library-information setting keys — query SDK version, license, and build details before loading a model. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/library-information/)
- [Results](https://doc.sensory.com/tnl/7.8/api/setting-keys/results.md): TrulyNatural results setting keys — read-only inference outputs such as spotted phrases, scores, and transcripts. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/results/)
- [Runtime](https://doc.sensory.com/tnl/7.8/api/setting-keys/runtime.md): TrulyNatural runtime setting keys — inspect or change live Session state; not serialized by save or dup. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/runtime/)
- [Values](https://doc.sensory.com/tnl/7.8/api/setting-keys/values.md): TrulyNatural value constants — task-type strings for require and template slot identifiers. (HTML: https://doc.sensory.com/tnl/7.8/api/setting-keys/values/)
## C examples
- [C examples](https://doc.sensory.com/tnl/7.8/api/sample/c/index.md): C sample programs that demonstrate the TrulyNatural SDK API — wake-word spotting, enrollment, audio streaming, and snsr-edit / snsr-eval scripting. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/)
- [alsa-stream.c](https://doc.sensory.com/tnl/7.8/api/sample/c/alsa-stream.md): This is the source for the fromAudioDevice Stream implementation for ALSA, used for live audio capture on Linux. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/alsa-stream/)
- [aqs-stream.c](https://doc.sensory.com/tnl/7.8/api/sample/c/aqs-stream.md): This is the source for the fromAudioDevice Stream implementation for Audio Queue Services, used for live audio capture on macOS and iOS. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/aqs-stream/)
- [data-stream.c](https://doc.sensory.com/tnl/7.8/api/sample/c/data-stream.md): This is the source for the fromAudioDevice Stream implementation for memory data, similar to fromMemory. It's used in the spot-data-stream.c example. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/data-stream/)
- [live-enroll.c](https://doc.sensory.com/tnl/7.8/api/sample/c/live-enroll.md): This is the source code for the live-enroll command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/live-enroll/)
- [live-segment.c](https://doc.sensory.com/tnl/7.8/api/sample/c/live-segment.md): This example runs a wake word recognizer on live audio, segments the speech following the wake word with a VAD, and then saves this audio snippet to a file. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/live-segment/)
- [live-spot-stream.c](https://doc.sensory.com/tnl/7.8/api/sample/c/live-spot-stream.md): This example shows how to run a recognizer on live audio captured using a custom audio stream. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/live-spot-stream/)
- [live-spot.c](https://doc.sensory.com/tnl/7.8/api/sample/c/live-spot.md): C sample that runs a TrulyNatural wake-word spotter on live microphone audio using the Session API load and run pattern. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/live-spot/)
- [push-audio.c](https://doc.sensory.com/tnl/7.8/api/sample/c/push-audio.md): This example runs a recognizer where the application pushes data through the recognition pipeline. Shows VAD audio processing for use with third-party recognizers such as keyword-to-search applications. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/push-audio/)
- [snsr-edit.c](https://doc.sensory.com/tnl/7.8/api/sample/c/snsr-edit.md): This is the source code for the snsr-edit command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/snsr-edit/)
- [snsr-eval.c](https://doc.sensory.com/tnl/7.8/api/sample/c/snsr-eval.md): This is the source code for the snsr-eval command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/snsr-eval/)
- [spot-convert.c](https://doc.sensory.com/tnl/7.8/api/sample/c/spot-convert.md): This is the source code for the spot-convert command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/spot-convert/)
- [spot-data-stream.c](https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data-stream.md): This example runs a wake word from code space with a custom audio stream, using pull mode processing with run. It is a reasonable starting point for running on a small device with an RTOS. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data-stream/)
- [spot-data.c](https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data.md): This example runs a small keyword spotter from code space. It uses a custom memory allocator to avoid calls to the system heap allocator, and reads audio data from code space to avoid file system use. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/spot-data/)
- [spot-enroll.c](https://doc.sensory.com/tnl/7.8/api/sample/c/spot-enroll.md): This is the source code for the spot-enroll command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/spot-enroll/)
- [wmme-stream.c](https://doc.sensory.com/tnl/7.8/api/sample/c/wmme-stream.md): This is the source for the fromAudioDevice Stream implementation for Windows Multimedia Extensions, used for live audio capture on Windows. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/c/wmme-stream/)
## Java examples
- [Java examples](https://doc.sensory.com/tnl/7.8/api/sample/java/index.md): Java sample programs that demonstrate the TrulyNatural SDK Java binding — wake-word spotting, enrollment, evaluation, and audio device streaming. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/)
- [SnsrEnrollmentTest.java](https://doc.sensory.com/tnl/7.8/api/sample/java/SnsrEnrollmentTest.md): This file contains UDT enrollment and evaluation unit tests. It shows how to remove an enrollment from an enrollment context loaded from file. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/SnsrEnrollmentTest/)
- [SnsrStreamAudioDeviceGeneric.java](https://doc.sensory.com/tnl/7.8/api/sample/java/SnsrStreamAudioDeviceGeneric.md): This is the source for the fromAudioDevice implementation for Java. It provides a Stream adapter for Java Audio. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/SnsrStreamAudioDeviceGeneric/)
- [enrollUDT.java](https://doc.sensory.com/tnl/7.8/api/sample/java/enrollUDT.md): This example shows how to enroll a user-defined wake word (UDT, trigger, key word spotter). (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/enrollUDT/)
- [evalUDT.java](https://doc.sensory.com/tnl/7.8/api/sample/java/evalUDT.md): This example shows how to run a wake word recognizer. It uses the UDT phrase enrolled with enrollUDT.java. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/evalUDT/)
- [segmentSpottedAudio.java](https://doc.sensory.com/tnl/7.8/api/sample/java/segmentSpottedAudio.md): This example runs a phrase spotter followed by a VAD. It saves the VAD-segmented audio to file. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/java/segmentSpottedAudio/)
## Python examples
- [Python examples](https://doc.sensory.com/tnl/7.8/api/sample/python/index.md): Python sample programs that demonstrate the TrulyNatural SDK Python binding — pull mode, push mode, custom streams, live audio, and wake-word enrollment. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/)
- [custom_stream.py](https://doc.sensory.com/tnl/7.8/api/sample/python/custom_stream.md): This example demonstrates fromProvider from Python.… (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/custom_stream/)
- [hello_world.py](https://doc.sensory.com/tnl/7.8/api/sample/python/hello_world.md): Python sample that loads a TrulyNatural phrase-spotter model, runs pull-mode inference on a WAV file, and prints each spotted phrase. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/hello_world/)
- [live_audio.py](https://doc.sensory.com/tnl/7.8/api/sample/python/live_audio.md): This example captures live audio from the host's default microphone with fromAudioDevice and runs a wake-word spotter for a fixed duration. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/live_audio/)
- [live_enroll.py](https://doc.sensory.com/tnl/7.8/api/sample/python/live_enroll.md): This example runs User-Defined Trigger (UDT) wake-word enrollment from Python.… (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/live_enroll/)
- [stt_push.py _(STT only)_](https://doc.sensory.com/tnl/7.8/api/sample/python/stt_push.md): This example shows push-mode Speech-to-Text. The application owns the audio source, reads a WAV file in small chunks, and feeds each chunk to the recognizer with push. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/python/stt_push/)
## Android examples
- [Android examples](https://doc.sensory.com/tnl/7.8/api/sample/android/index.md): Android sample programs that demonstrate the TrulyNatural SDK on Android — UDT enrollment, phrase spotting, recognizer debugging, and audio device streaming. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/android/)
- [SnsrStreamAudioDeviceAndroid.java](https://doc.sensory.com/tnl/7.8/api/sample/android/SnsrStreamAudioDeviceAndroid.md): This is the source for the fromAudioDevice implementation for Android. It provides a Stream adapter for Android Audio. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/android/SnsrStreamAudioDeviceAndroid/)
- [enroll-trigger](https://doc.sensory.com/tnl/7.8/api/sample/android/enroll-trigger.md): This example shows how to enroll a user-defined wake word (UDT, trigger, key word spotter). (HTML: https://doc.sensory.com/tnl/7.8/api/sample/android/enroll-trigger/)
- [snsr-debug](https://doc.sensory.com/tnl/7.8/api/sample/android/snsr-debug.md): This sample shows how to log recognizer audio and event timing debug information using the tpl-spot-debug template. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/android/snsr-debug/)
## iOS examples
- [iOS examples](https://doc.sensory.com/tnl/7.8/api/sample/ios/index.md): iOS sample programs that demonstrate the TrulyNatural SDK on iOS — including a PhraseSpot wake-word recognizer that displays results in a text window. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/ios/)
- [PhraseSpot](https://doc.sensory.com/tnl/7.8/api/sample/ios/phrasespot.md): This Swift application runs a phrase spotter and shows the results in a text window. (HTML: https://doc.sensory.com/tnl/7.8/api/sample/ios/phrasespot/)
## Models
- [Templates](https://doc.sensory.com/tnl/7.8/models/tpl/index.md): Task templates compose multiple fundamental models — for example, a wake word followed by LVCSR or STT — into a single recognizer with slot-fillable behavior. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/)
- [Model types](https://doc.sensory.com/tnl/7.8/models/types/index.md): Overview of the fundamental and composed model types supported by the TrulyNatural SDK — wake word, adapting wake word, enrollment, VAD, LVCSR, STT, and templates. (HTML: https://doc.sensory.com/tnl/7.8/models/types/)
- [Downloads _(STT only)_](https://doc.sensory.com/tnl/7.8/models/downloads.md): The following STT models are available for download. These are compatible with TrulyNatural STT SDK 7.7.0 and later. (HTML: https://doc.sensory.com/tnl/7.8/models/downloads/)
- [tpl-opt-spot-vad-lvcsr _(TrulyNatural only)_](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-opt-spot-vad-lvcsr.md): tpl-opt-spot-vad-lvcsr template — optional wake word, then VAD segment and LVCSR or STT in slot 1. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-opt-spot-vad-lvcsr/)
- [tpl-spot-concurrent](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-concurrent.md): tpl-spot-concurrent template — run two wake word models concurrently with combined vocabulary. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-concurrent/)
- [tpl-spot-debug](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-debug.md): tpl-spot-debug template — collect runtime audio and event timings from an embedded wake word model. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-debug/)
- [tpl-spot-select](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-select.md): tpl-spot-select template — dynamically choose which of two embedded wake word models to run. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-select/)
- [tpl-spot-sequential](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-sequential.md): tpl-spot-sequential template — trigger phrase followed by a command in two sequential wake word slots. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-sequential/)
- [tpl-spot-vad-lvcsr _(TrulyNatural only)_](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-vad-lvcsr.md): tpl-spot-vad-lvcsr template — wake word, VAD segment, then LVCSR or STT transcription in slot 1. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-vad-lvcsr/)
- [tpl-spot-vad](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-vad.md): tpl-spot-vad template — wake word detection followed by VAD segmentation on the post-wake audio stream. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-spot-vad/)
- [tpl-vad-lvcsr _(TrulyNatural only)_](https://doc.sensory.com/tnl/7.8/models/tpl/tpl-vad-lvcsr.md): tpl-vad-lvcsr template — VAD speech segmentation followed by LVCSR or STT transcription. (HTML: https://doc.sensory.com/tnl/7.8/models/tpl/tpl-vad-lvcsr/)
- [Adapting wake word](https://doc.sensory.com/tnl/7.8/models/types/ca.md): Adapting wake word model type for the TrulyNatural SDK — fixed triggers that adapt to speakers to cut false accepts. (HTML: https://doc.sensory.com/tnl/7.8/models/types/ca/)
- [Wake word enrollment](https://doc.sensory.com/tnl/7.8/models/types/enroll.md): Wake word enrollment model type — EFT and UDT enrollment flows that produce custom wake-word models. (HTML: https://doc.sensory.com/tnl/7.8/models/types/enroll/)
- [LVCSR _(TrulyNatural only)_](https://doc.sensory.com/tnl/7.8/models/types/lvcsr.md): LVCSR model type for the TrulyNatural SDK — phonetic acoustic models with FST decoders for command-sized vocabularies. (HTML: https://doc.sensory.com/tnl/7.8/models/types/lvcsr/)
- [Speech To Text _(STT only)_](https://doc.sensory.com/tnl/7.8/models/types/stt.md): Speech-to-text model type for the TrulyNatural STT SDK — transformer-based audio transcription models. (HTML: https://doc.sensory.com/tnl/7.8/models/types/stt/)
- [VAD](https://doc.sensory.com/tnl/7.8/models/types/vad.md): Voice activity detection model type — finds speech segments in audio streams for TrulyNatural SDK pipelines. (HTML: https://doc.sensory.com/tnl/7.8/models/types/vad/)
- [Wake word](https://doc.sensory.com/tnl/7.8/models/types/wake-word.md): Wake word model type — fixed and enrolled wake words and command sets for TrulyNatural phrase spotting. (HTML: https://doc.sensory.com/tnl/7.8/models/types/wake-word/)
## Tools
- [audio-check](https://doc.sensory.com/tnl/7.8/tools/audio-check.md): This tool runs checks on the audio for problems such as all-zero runs or clipping. Also estimates signal-to-noise ratio. (HTML: https://doc.sensory.com/tnl/7.8/tools/audio-check/)
- [live-enroll](https://doc.sensory.com/tnl/7.8/tools/live-enroll.md): Enroll custom wake words from live microphone input with the TrulyNatural live-enroll interactive command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/tools/live-enroll/)
- [snsr-edit](https://doc.sensory.com/tnl/7.8/tools/snsr-edit.md): This tool edits default task settings, and composes specialized tasks by filling template task slots with spotter models. (HTML: https://doc.sensory.com/tnl/7.8/tools/snsr-edit/)
- [snsr-eval-batch](https://doc.sensory.com/tnl/7.8/tools/snsr-eval-batch.md): Batch-evaluate wake word, LVCSR, or STT models over many audio files — FA, FR, WER, and command-substitution metrics. (HTML: https://doc.sensory.com/tnl/7.8/tools/snsr-eval-batch/)
- [snsr-eval](https://doc.sensory.com/tnl/7.8/tools/snsr-eval.md): This tool evaluates / runs TrulyNatural SDK snsr model files. It supports all task types, except wake word enrollment which is handled by spot-enroll and live-enroll. (HTML: https://doc.sensory.com/tnl/7.8/tools/snsr-eval/)
- [snsr-log-split](https://doc.sensory.com/tnl/7.8/tools/snsr-log-split.md): Split tpl-spot-debug log files into event logs, captured audio, and the source spotter model with snsr-log-split. (HTML: https://doc.sensory.com/tnl/7.8/tools/snsr-log-split/)
- [spot-convert](https://doc.sensory.com/tnl/7.8/tools/spot-convert.md): Convert phrase spotter models for deeply embedded THF Micro DSP targets with the spot-convert command-line tool. (HTML: https://doc.sensory.com/tnl/7.8/tools/spot-convert/)
- [spot-enroll](https://doc.sensory.com/tnl/7.8/tools/spot-enroll.md): Enroll custom wake words from audio files with the TrulyNatural spot-enroll command-line enrollment tool. (HTML: https://doc.sensory.com/tnl/7.8/tools/spot-enroll/)
## Changes
- [Version 5 beta changes](https://doc.sensory.com/tnl/7.8/changes/version-5.md): Looking for the latest changes? See Version 7 changes. (HTML: https://doc.sensory.com/tnl/7.8/changes/version-5/)
- [Version 6 changes](https://doc.sensory.com/tnl/7.8/changes/version-6.md): Looking for the latest changes? See Version 7 changes. (HTML: https://doc.sensory.com/tnl/7.8/changes/version-6/)
## Symbols
Direct deep-links from C, Java, and Python identifiers to the documenting heading on the relevant API page (binding-extensible). Each row lists every binding's spelling for one concept — e.g. `snsr.Stream.from_audio_device` and `SnsrStream.fromAudioDevice` both resolve to `fromAudioDevice` on the Stream API page.
- [callback](https://doc.sensory.com/tnl/7.8/api/inference.md#callback): Session API · C `snsrCallback` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#callback)
- [onEvent](https://doc.sensory.com/tnl/7.8/api/inference.md#onevent): Session API · Java `SnsrSession.onEvent` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#onevent)
- [clearRC](https://doc.sensory.com/tnl/7.8/api/inference.md#clearrc): Session API · C `snsrClearRC` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#clearrc)
- [describeError](https://doc.sensory.com/tnl/7.8/api/inference.md#describeerror): Session API · C `snsrDescribeError` · Java `SnsrSession.describeError` · Python `snsr.Session.describe_error` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#describeerror)
- [dup](https://doc.sensory.com/tnl/7.8/api/inference.md#dup): Session API · C `snsrDup` · Java `SnsrSession.dup` · Python `snsr.Session.dup` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#dup)
- [errorDetail](https://doc.sensory.com/tnl/7.8/api/inference.md#errordetail): Session API · C `snsrErrorDetail` · Java `SnsrSession.errorDetail` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#errordetail)
- [forEach](https://doc.sensory.com/tnl/7.8/api/inference.md#foreach): Session API · C `snsrForEach` · Java `SnsrSession.forEach` · Python `snsr.Session.for_each` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#foreach)
- [getters](https://doc.sensory.com/tnl/7.8/api/inference.md#getters): Session API · C `snsrGetDouble / snsrGetInt / snsrGetStream / snsrGetString` · Java `SnsrSession.getDouble / SnsrSession.getInt / SnsrSession.getStream / SnsrSession.getString` · Python `snsr.Session.get_double / snsr.Session.get_int / snsr.Session.get_stream / snsr.Session.get_string` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#getters)
- [load](https://doc.sensory.com/tnl/7.8/api/inference.md#load): Session API · C `snsrLoad` · Java `SnsrSession.load` · Python `snsr.Session.load` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#load)
- [new](https://doc.sensory.com/tnl/7.8/api/inference.md#new): Session API · C `snsrNew` · Python `snsr.Session` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#new)
- [profile](https://doc.sensory.com/tnl/7.8/api/inference.md#profile): Session API · C `snsrProfile` · Java `SnsrSession.profile` · Python `snsr.Session.profile` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#profile)
- [push](https://doc.sensory.com/tnl/7.8/api/inference.md#push): Session API · C `snsrPush` · Java `SnsrSession.push` · Python `snsr.Session.push` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#push)
- [rC](https://doc.sensory.com/tnl/7.8/api/inference.md#rc): Session API · C `snsrRC` · Java `SnsrSession.rC` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#rc)
- [rCMessage](https://doc.sensory.com/tnl/7.8/api/inference.md#rcmessage): Session API · C `snsrRCMessage` · Python `snsr.Session.rc_message` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#rcmessage)
- [release](https://doc.sensory.com/tnl/7.8/api/inference.md#release): Session API · Java `SnsrSession.release` · Python `snsr.Session.release` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#release)
- [require](https://doc.sensory.com/tnl/7.8/api/inference.md#require): Session API · C `snsrRequire` · Java `SnsrSession.require` · Python `snsr.Session.require` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#require)
- [reset](https://doc.sensory.com/tnl/7.8/api/inference.md#reset): Session API · C `snsrReset` · Java `SnsrSession.reset` · Python `snsr.Session.reset` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#reset)
- [run](https://doc.sensory.com/tnl/7.8/api/inference.md#run): Session API · C `snsrRun` · Java `SnsrSession.run` · Python `snsr.Session.run` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#run)
- [save](https://doc.sensory.com/tnl/7.8/api/inference.md#save): Session API · C `snsrSave` · Java `SnsrSession.save` · Python `snsr.Session.save` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#save)
- [set](https://doc.sensory.com/tnl/7.8/api/inference.md#set): Session API · C `snsrSet` · Java `SnsrSession.set` · Python `snsr.Session.apply` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#set)
- [setHandler](https://doc.sensory.com/tnl/7.8/api/inference.md#sethandler): Session API · C `snsrSetHandler` · Java `SnsrSession.setHandler` · Python `snsr.Session.set_handler` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#sethandler)
- [setters](https://doc.sensory.com/tnl/7.8/api/inference.md#setters): Session API · C `snsrSetDouble / snsrSetInt / snsrSetStream / snsrSetString` · Java `SnsrSession.setDouble / SnsrSession.setInt / SnsrSession.setStream / SnsrSession.setString` · Python `snsr.Session.set_double / snsr.Session.set_int / snsr.Session.set_stream / snsr.Session.set_string` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#setters)
- [stop](https://doc.sensory.com/tnl/7.8/api/inference.md#stop): Session API · C `snsrStop` · Java `SnsrSession.stop` · Python `snsr.Session.stop` (HTML: https://doc.sensory.com/tnl/7.8/api/inference/#stop)
- [fromAsset](https://doc.sensory.com/tnl/7.8/api/io.md#fromasset): Stream API · C `snsrStreamFromAsset` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromasset)
- [fromAudioDevice](https://doc.sensory.com/tnl/7.8/api/io.md#fromaudiodevice): Stream API · C `snsrStreamFromAudioDevice` · Java `SnsrStream.fromAudioDevice` · Python `snsr.Stream.from_audio_device` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromaudiodevice)
- [fromAudioFile](https://doc.sensory.com/tnl/7.8/api/io.md#fromaudiofile): Stream API · C `snsrStreamFromAudioFile` · Java `SnsrStream.fromAudioFile` · Python `snsr.Stream.from_audio_file` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromaudiofile)
- [fromAudioStream](https://doc.sensory.com/tnl/7.8/api/io.md#fromaudiostream): Stream API · C `snsrStreamFromAudioStream` · Java `SnsrStream.fromAudioStream` · Python `snsr.Stream.from_audio_stream` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromaudiostream)
- [fromBuffer](https://doc.sensory.com/tnl/7.8/api/io.md#frombuffer): Stream API · C `snsrStreamFromBuffer` · Java `SnsrStream.fromBuffer` · Python `snsr.Stream.from_buffer` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#frombuffer)
- [fromCode](https://doc.sensory.com/tnl/7.8/api/io.md#fromcode): Stream API · C `snsrStreamFromCode` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromcode)
- [fromFILE](https://doc.sensory.com/tnl/7.8/api/io.md#fromfile): Stream API · C `snsrStreamFromFILE` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromfile)
- [fromFileName](https://doc.sensory.com/tnl/7.8/api/io.md#fromfilename): Stream API · C `snsrStreamFromFileName` · Java `SnsrStream.fromFileName` · Python `snsr.Stream.from_filename` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromfilename)
- [fromMemory](https://doc.sensory.com/tnl/7.8/api/io.md#frommemory): Stream API · C `snsrStreamFromMemory` · Java `SnsrStream.fromMemory` · Python `snsr.Stream.from_memory` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#frommemory)
- [fromOpenStream](https://doc.sensory.com/tnl/7.8/api/io.md#fromopenstream): Stream API · C `snsrStreamFromOpenStream` · Java `SnsrStream.fromOpenStream` · Python `snsr.Stream.from_open_stream` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromopenstream)
- [fromProvider](https://doc.sensory.com/tnl/7.8/api/io.md#fromprovider): Stream API · C `snsrStreamFromProvider` · Java `SnsrStream.fromProvider` · Python `snsr.Stream.from_provider` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromprovider)
- [fromStreams](https://doc.sensory.com/tnl/7.8/api/io.md#fromstreams): Stream API · C `snsrStreamFromStreams` · Java `SnsrStream.fromStreams` · Python `snsr.Stream.from_streams` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromstreams)
- [fromString](https://doc.sensory.com/tnl/7.8/api/io.md#fromstring): Stream API · C `snsrStreamFromString` · Java `SnsrStream.fromString` · Python `snsr.Stream.from_string` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#fromstring)
- [raise](https://doc.sensory.com/tnl/7.8/api/io.md#raise): Stream API · C `snsrStreamRaise` · Java `SnsrStream.onOpen / SnsrStream.raise` · Python `snsr.Stream.from_event` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#raise)
- [atEnd](https://doc.sensory.com/tnl/7.8/api/io.md#atend): Stream API · C `snsrStreamAtEnd` · Java `SnsrStream.atEnd` · Python `snsr.Stream.at_end` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#atend)
- [close](https://doc.sensory.com/tnl/7.8/api/io.md#close): Stream API · C `snsrStreamClose` · Java `SnsrStream.close` · Python `snsr.Stream.close` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#close)
- [copy](https://doc.sensory.com/tnl/7.8/api/io.md#copy): Stream API · C `snsrStreamCopy` · Java `SnsrStream.copy` · Python `snsr.Stream.copy` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#copy)
- [errorDetail](https://doc.sensory.com/tnl/7.8/api/io.md#errordetail): Stream API · C `snsrStreamErrorDetail` · Java `SnsrStream.errorDetail` · Python `snsr.Stream.error_detail` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#errordetail)
- [getDelim](https://doc.sensory.com/tnl/7.8/api/io.md#getdelim): Stream API · C `snsrStreamGetDelim` · Java `SnsrStream.getDelim` · Python `snsr.Stream.get_delim / snsr.Stream.readline / snsr.Stream.readlines` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#getdelim)
- [getMeta](https://doc.sensory.com/tnl/7.8/api/io.md#getmeta): Stream API · C `snsrStreamGetMeta` · Java `SnsrStream.getMeta` · Python `snsr.Stream.get_meta / snsr.Stream.closed / snsr.Stream.readable / snsr.Stream.seekable / snsr.Stream.writable` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#getmeta)
- [open](https://doc.sensory.com/tnl/7.8/api/io.md#open): Stream API · C `snsrStreamOpen` · Java `SnsrStream.open` · Python `snsr.Stream.open` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#open)
- [print](https://doc.sensory.com/tnl/7.8/api/io.md#print): Stream API · C `snsrStreamPrint` · Java `SnsrStream.print` · Python `snsr.Stream.print` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#print)
- [rC](https://doc.sensory.com/tnl/7.8/api/io.md#rc): Stream API · C `snsrStreamRC` · Java `SnsrStream.rC` · Python `snsr.Stream.rc` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#rc)
- [read](https://doc.sensory.com/tnl/7.8/api/io.md#read): Stream API · C `snsrStreamRead` · Java `SnsrStream.read` · Python `snsr.Stream.read / snsr.Stream.readinto` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#read)
- [release](https://doc.sensory.com/tnl/7.8/api/io.md#release): Stream API · Java `SnsrStream.release` · Python `snsr.Stream.release` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#release)
- [skip](https://doc.sensory.com/tnl/7.8/api/io.md#skip): Stream API · C `snsrStreamSkip` · Java `SnsrStream.skip` · Python `snsr.Stream.skip` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#skip)
- [write](https://doc.sensory.com/tnl/7.8/api/io.md#write): Stream API · C `snsrStreamWrite` · Java `SnsrStream.write` · Python `snsr.Stream.write` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#write)
- [Provider](https://doc.sensory.com/tnl/7.8/api/io.md#provider): Stream API · Java `SnsrStream.onOpen / SnsrStream.onClose / SnsrStream.onRelease / SnsrStream.onRead / SnsrStream.onWrite` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#provider)
- [getData](https://doc.sensory.com/tnl/7.8/api/io.md#getdata): Stream API · C `snsrStream_getData` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#getdata)
- [getVmt](https://doc.sensory.com/tnl/7.8/api/io.md#getvmt): Stream API · C `snsrStream_getVmt` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#getvmt)
- [setDetail](https://doc.sensory.com/tnl/7.8/api/io.md#setdetail): Stream API · C `snsrStream_setDetail` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#setdetail)
- [setRC](https://doc.sensory.com/tnl/7.8/api/io.md#setrc): Stream API · C `snsrStream_setDetail` (HTML: https://doc.sensory.com/tnl/7.8/api/io/#setrc)
- [release](https://doc.sensory.com/tnl/7.8/api/heap.md#release): Memory management · C `snsrRelease` (HTML: https://doc.sensory.com/tnl/7.8/api/heap/#release)
- [retain](https://doc.sensory.com/tnl/7.8/api/heap.md#retain): Memory management · C `snsrRetain` (HTML: https://doc.sensory.com/tnl/7.8/api/heap/#retain)
- [malloc](https://doc.sensory.com/tnl/7.8/api/heap.md#malloc): Memory management · C `snsrMalloc` (HTML: https://doc.sensory.com/tnl/7.8/api/heap/#malloc)
- [free](https://doc.sensory.com/tnl/7.8/api/heap.md#free): Memory management · C `snsrFree` (HTML: https://doc.sensory.com/tnl/7.8/api/heap/#free)
- [realloc](https://doc.sensory.com/tnl/7.8/api/heap.md#realloc): Memory management · C `snsrRealloc` (HTML: https://doc.sensory.com/tnl/7.8/api/heap/#realloc)
- [tearDown](https://doc.sensory.com/tnl/7.8/api/heap.md#teardown): Memory management · C `snsrTearDown` (HTML: https://doc.sensory.com/tnl/7.8/api/heap/#teardown)
## Format notes
- Markdown pages begin with YAML front matter (`---` … `---`) containing
`source_path` and `canonical_url` before the body.
- mkdocs-autorefs are expanded to `[text](url)` when resolvable; in-page
targets use absolute `.md` URLs on this host (fragments preserved).
Unresolved references keep `[id]` form with matching `[id]: …` and
`*[abbrev]: …` definition lines at the bottom of that `.md` member.
- See the `How to read this file` section above for entry format and a warning about URL synthesis.
- Legal boilerplate (`Sensory SDK license`, `Open Source licenses`) lives in `## Licenses` at the bottom of this file so RAG pipelines that bail on proprietary-text snippets only lose the license links, not the technical content.
- `llms-full.txt` per-page headers have the form `` on this site mirror. The in-zip copy of `llms-full.txt` uses bundle-relative paths instead (``); the parenthesized canonical URL is identical on both surfaces and is the most stable join key.
## Licenses
- [Sensory SDK license](https://doc.sensory.com/tnl/7.8/licenses/index.md): Sensory SDK End User License Agreement and the open-source licenses for third-party software shipped with the TrulyNatural SDK. (HTML: https://doc.sensory.com/tnl/7.8/licenses/)
- [Open Source licenses](https://doc.sensory.com/tnl/7.8/licenses/oss.md): Open-source licenses for third-party components shipped with the TrulyNatural SDK, with build-time options to omit OSS modules. (HTML: https://doc.sensory.com/tnl/7.8/licenses/oss/)