Version 5 beta changes¶
TrulyHandsfree version 5 introduced a new API and model file format, neither of which were backwards compatible with TrulyHandsfree version 4. The end of this beta release cycle resulted in stable release v6.0.0.
5.0.0-beta.18 (2018-03-09)¶
- Added
- Live audio support in fromAudioDevice for macOS and iOS.
- snsr-log-split computes average throughput and real-time factor.
- Fixed
- User-Defined Trigger enrollments with a low phrase quality were rejected without providing sensible feedback.
5.0.0-beta.17 (2018-02-23)¶
- Added
- Spotter debug logging:
- Task model: tpl-spot-debug-type.
- snsr-log-split utility.
- faq answer for How do I diagnose wake word audio issues?.
- audio-check utility.
- Android
SpotDebugsample app. See Android examples. - Example Android Stream implementation
sample/android/misc/SnsrStreamAudioDeviceAndroid.java - Example Java Stream implementation
sample/java/misc/SnsrStreamAudioDeviceGeneric.java - iOS C library. Note that fromAudioDevice does not, as yet, support live audio recording on iOS.
- Spotter debug logging:
- Changed
- DSP library (for creating embedded spotter models) version 4.4.2.
- Fixed
- For Enrolled Fixed Triggers, incorrect enrollment phrases were reported once all enrollment recordings were complete. This error is now reported immediately after the failed recording.
- Android fromAudioDevice can throw an
IllegalStateExceptionif the underlying audio device is busy. Now reported as anIOException. - The Android sample
Enroll.onResume()method mistakenly returnedSnsrRC.ERRORinstead ofSnsrRC.STREAMifmAudio.open()failed.
5.0.0-beta.16 (2018-01-25)¶
- Changed
- Improved v4 fixed trigger false reject performance when the spotted phrase is repeated multiple times in quick succession.
- Android libraries built with NDK 16.
- Fixed
- Misleading detailed error message when attempting to load an incompatible spotter into a template.
5.0.0-beta.15 (2017-12-08)¶
- Added
- Task model vad-energy-1.0.3.snsr (removed in 5.0.0-beta.13) restored.
- Changed
- DSP library (for creating embedded spotter models) version 4.4.1.
- Fixed
- Cannot load a model created using the
tpl-spot-concurrent-1.0.3.snsrtemplate into thetpl-spot-vad-1.0.3.snsrtemplate. - noise-energy, signal-energy, snr are no longer updated once approximately
1000seconds of audio have been processed. - The md5 and sha1 hashes for licensed models and libraries in the embedded Maven repository (m2repository/) do not match the actual files.
- spot-eval command-line tool does not flush
stdoutfrequently enough. - spot-eval not compatible with spotter model versions
0.5.0through0.7.0.
- Cannot load a model created using the
5.0.0-beta.14 (2017-11-01)¶
- Fixed
- spot-eval command-line tool failed on models from earlier releases.
5.0.0-beta.13 (2017-10-31)¶
- Added
- New snsr-edit command-line utility.
- Support for task templates. This allows, for example, running two disparate phrase spotters at the same time, as a single spotter model.
- wake word settings: ^listen-begin, ^listen-end.
- faq documentation section.
- New task models:
- eft-hbg-enUS-23.0.0.3.snsr
- spot-music-enUS-1.0.3-m.snsr
- tpl-spot-concurrent-1.0.3.snsr
- tpl-spot-sequential-1.0.3.snsr
- tpl-spot-vad-1.0.3.snsr
- Changed
- spot-eval supports phrase spotter with VAD models.
- spot-convert uses only the tail portion of the task model file path to determine the output file prefix.
- Renamed Java package from
com.sensory.speechtocom.sensory.speech.snsr. - Renamed
SnsrStream.PlugintoSnsrStream.Provider. - Most
SnsrStream.Providermethods now throwIOException. - segmentSpottedAudio.java sample uses tpl-spot-vad-1.0.3.snsr template for voice audio detection.
- Support reading of RIFF wave files with padded format chunks (for example, those using a non-standard 48-byte header.)
- Updated task models:
- spot-hbg-enUS-1.2.3-m.snsr
- udt-enUS-12.0.10.3.snsr
- udt-enUS-5.1.1.3.snsr
- push-spot.c sample includes VAD audio processing.
- Removed
- Task model:
- vad-energy-1.0.3.snsr, use tpl-spot-vad-1.0.3.snsr template instead.
- Task model:
- Fixed
- operating-point-iterator did not return all operating points. Also apparent when running
spot-eval -v -v -t spot-hbg-enUS-1.2.3-m.snsr - setStream failed to set <-audio-pcm if the output stream was both readable and writable.
- Java write method signatures did not match the documentation. These returned
voidinstead oflong. - Java fromMemory and fromString streams produced incorrect data for large source stores.
- Java writable fromMemory streams did not modify the
byte[]store. - Java print crashed with an assertion.
- Java Stream methods copy, open, read skip, write, and print did not throw expected
IOExceptions.
- operating-point-iterator did not return all operating points. Also apparent when running
- Security
- Java fromMemory and fromString streams could access memory that was no longer valid.
5.0.0-beta.12 (2017-09-05)¶
- Added
- VAD with:
- Settings: backoff, ^begin, ^end, hold-over, include-leading-silence, leading-silence, ^limit, max-recording, pass-through, ^silence, skip-to-ms, skip-to-sample, trailing-silence, vad
- Stream: <-audio-pcm.
- The 64-bit Windows installer includes 32-bit libraries.
- For MSVC 2008-2013 use lib/x86-windows-2008/
- For MSVC 2015 and later, use lib/x86-windows-2015/
- VAD with:
- Changed
- Documentation for audio-stream, begin-ms, begin-sample, end-ms, end-sample.
- live-segment.c now uses the new VAD.
- segmentSpottedAudio.java now use the new VAD.
- Noted
-24dBFS peak-to-peak audio recommendation.
- Fixed
- operating-point-iterator did not return all operating points. Also apparent when running
spot-eval -v -v -t spot-hbg-enUS-1.2.3-m.snsr
- operating-point-iterator did not return all operating points. Also apparent when running
5.0.0-beta.11 (2017-06-29)¶
- Added
- VERSION_DSP.
- confidence-score.
- Support for modular feature extractors.
- Microsoft Visual Studio version-specific libraries and build files:
- For MSVC 2008-2013 use lib/x86_64-windows-2008/ and sample/c/msvc-2008/
- For MSVC 2015 and later, use lib/x86_64-windows-2015/ and sample/c/msvc-2015/
- Changed
- library-info includes VERSION_DSP.
- spot-eval shows spotter confidence scores, where available.
- Fixed
- Mistaken spots when the input audio stream ends. The work-around in previous beta was to set auto-flush to
0. - spot-convert did not report output errors.
- Mistaken spots when the input audio stream ends. The work-around in previous beta was to set auto-flush to
5.0.0-beta.10.3 (2017-06-22)¶
- Added
mipsel-openwrt-linux-muslsupport.
5.0.0-beta.10.2 (2017-05-13)¶
- Added
- auto-flush runtime library setting.
- push-spot.c sample.
5.0.0-beta.10.1 (2017-05-02)¶
- Added
arm-ca7-linux-gnueabihfsupport.
- Changed
- The
arm-linux-gnueabilibrary uses softfpfloat-abi(soft, previously.) This enables NEON optimization. x86_64-linux-gnulibrary is built with gcc 4.8 for better compatibility with older Linux distributions.
- The
5.0.0-beta.10 (2017-04-20)¶
- Added
- Support for phrase spotters with multiple operating points in a single model.
- Wake word settings: operating-point, operating-point-iterator, available-point.
- SnsrEnrollmentTest.java enrollment unit test sample.
- Changed
- The
arm-linux-gnueabilibrary now targets the ARMv7-a instruction set.
- The
- Fixed
- C examples
maketestfails when the SDK is installed on a path containing spaces. - Installer on Windows failed on paths containing unicode characters.
- C examples
5.0.0-beta.9.1 (2017-04-11)¶
- Added
mipsel-buildroot-linux-uclibcsupport.
5.0.0-beta.9 (2017-03-20)¶
- Added
- Wake word result settings: noise-energy, signal-energy and snr.
- LIBRARY_TOO_OLD.
- Wake word enrollment support for saving adapted enrollment contexts.
- ^adapted, re-adapt.
- spot-enroll has an
-aoption for saving adapted enrollment contexts.
- Changed
SNSR_TECH_LEVEL.- Task file format. Earlier betas are not compatible with the models included in this release.
- C examples Makefile uses adapted enrollment context in the
test-enroll-1target. - copy, getDelim, print, read, skip, and write open the SnsrStream if it is not already open. Previous behavior was to return a NOT_OPEN error or to throw a Java
IOException. - Java copy, getDelim, print, read, skip, and write marked as
throws IOException.
- Fixed
- Enrollment failures due to low SNR not reported.
5.0.0-beta.8.1 (2017-02-17)¶
- Added
arm-buildroot-linux-uclibcgnueabihfsupport.
5.0.0-beta.8 (2017-02-10)¶
- Added
SNSR_TECH_LEVEL.- Java
SnsrStream.fromPlugin(). - segmentSpottedAudio.java in Java examples shows how to capture audio following a spotted phrase.
- live-segment.c example shows how to capture audio following a spotted phrase.
- Changed
- Changelog format based on Keep a Changelog.
- sample-count type changed from
inttodouble- potential incompatibility with earlier betas. - fromAudioDevice on Linux:
- Uses larger capture buffer.
- Tries to recover from transient capture errors.
- new is a macro that checks VERSION found in
snsr.h. This has to match the version of binary archive library, or initialization will fail with LIBRARY_HEADER.
- Fixed
- On 32-bit CPUs, run mistakenly returns ITERATION_LIMIT after processing 74.5 hours of audio without spotted phrases.
- Spurious EOF reports from fromAudioDevice on Linux.
- Java load method failed to throw any
Exceptionson failure. This lead to misleadingExceptionmessages produced by later library calls (e.g.task type not found). - run and forEach mistakenly reported certain callback-generated error codes, such as INTERRUPTED, as the generic ERROR.
5.0.0-beta.7 (2017-01-12)¶
- Added
- fromAudioDevice supports live capture from Windows MME devices. This SnsrStream implementation is included in the C sample code as wmme-stream.c.
- Support for building the C examples code:
- with CMake on Linux, macOS and Windows.
- with Microsoft Visual C++ on Windows.
- enrollUDT.java supports enrollments for multiple users/phrases.
- Fixed
- Spotter alignment timestamps (begin-ms, begin-sample, end-ms, end-sample) wrapped around to
0after approximately1000seconds.
- Spotter alignment timestamps (begin-ms, begin-sample, end-ms, end-sample) wrapped around to
5.0.0-beta.6 (2016-12-16)¶
- Added
- Support for combined fixed, enrolled fixed, and user-defined triggers.
- Wake word enrollment configuration setting, enrollment-task-index.
- Improved Java Stream module documentation.
- Changed
- Renamed live-spot-sample.c to live-spot.c.
5.0.0-beta.5 (2016-12-02)¶
- Fixed
- Updated UDT model udt-enUS-5.1.1.1.snsr.
- Linux fromAudioDevice uses interleaved ALSA capture for improved compatiblity with PulseAudio.
5.0.0-beta.4 (2016-11-21)¶
- Added
- Support enrollments with trailing context to improve performance.
- Configuration settings: req-enroll, ctx-enroll, add-context.
- Updated wake word enrollment.
- Option to include enrollment audio in enrollment contexts.
- Configuration setting: save-enroll-audio.
- Iterator: enrollment-iterator.
- Result settings: enrollment-id, begin-sample, end-sample.
- Runtime settings: audio-stream-first, audio-stream-last, audio-stream-from, audio-stream-to.
- fromAudioDevice supports high latency audio, with reduced CPU overhead. This is the now the default behavior.
- library-info setting.
- udt-enUS-5.1.1.0.snsr User-Defined Trigger task model for backwards compatibility.
- Use this to produce enrolled spotter models for DSP ports of THF 3.x.
- Not recommended for general use, as recognizers created using this model have reduced performance compared to udt-enUS-12.2.5.snsr.
- Support enrollments with trailing context to improve performance.
- Changed
- Improved User-Defined Trigger model, udt-enUS-12.0.10.0.snsr.
- getString supports reading task configuration keys (such as task-type, task-name, task-version.)
- custom-stream.c sample renamed to alsa-stream.c.
- spot-enroll prints a warning when the number of enrollment recordings per user is different from the recommended value, req-enroll.
- Removed
- Removed
SNSR_RES_ENROLLED_USER. Use user instead.
- Removed
- Fixed
5.0.0-beta.3 (2016-11-01)¶
- Added
- fromAudioDevice supports live capture from a Linux ALSA source.
- C examples for Linux:
- spot-convert.c, spot-enroll.c, spot-eval.c sources.
- live-enroll.c interactive command-line enrollment.
- live-spot-sample.c simple one-shot spotter using live audio capture.
- live-spot-stream.c uses a custom SnsrStream implementation from custom-stream.c to do live audio capture using ALSA.
- Changed
- spot-eval tool:
- Supports live audio capture on Linux.
- No longer shows speaker verification scores at the default verbosity level. Use
-vto revert to previous behavior.
- Allow setting ->audio-pcm to
NULL, which can be used release a stream reference held by a Session instance. SnsrStreamAudioDeviceAndroid()creates theAudioRecordinstance in theonOpen()method, and releases it inonClose(). Previous behavior created the instance in the constructor and released it inonRelease(). The reducedAudioRecordlifespan improves audio resource contention on some Android implementations.
- spot-eval tool:
- Fixed
- If user was not set before a wake word enrollment task started, the value set in the initial ^next callback was ignored.
- Wake word enrollment task documentation did not reference ^resume.
- Phrase spotters with multiple enrolled phrases could return an incorrect result phrase with a sv-score of
1.0.
- Security
5.0.0-beta.2 (2016-10-09)¶
- Added
- Java support for macOS, Linux on x86_64, i686 and Raspberry Pi, and 64-bit Windows.
- Java code samples: enrollUDT.java and evalUDT.java.
- Optional input audio buffering in wake word tasks.
- Get segmented audio from recognition alignments.
- Seamless trigger-to-search applications.
- Settings:
- Return codes: BUFFER_OVERRUN, BUFFER_UNDERRUN.
- describeError.
- require supports range operators when validating version numbers.
- Changed
- Better
snsr.hC++ compatibility: Opaque struct handles use unique struct names. - Improved Java stack traces for exceptions thrown in user callbacks.
- Documentation for constants in the
com.sensory.speech.SnsrJava class.
- Better
- Removed
- Settings:
- Wake word task: SNSR_RES_SCORE, SNSR_RES_TOTAL_SCORE. These phrase spotting scores are highly non-linear and are not a measure of recognition confidence.
- Settings:
5.0.0-beta.1 (2016-07-12)¶
- Added
- Produce phrase spotter models for Sensory's deeply embedded (DSP) targets:
- spot-convert command-line tool.
- spot-convert.c source provided for reference.
- Sample UDT and phrase spotter task models updated to support conversion to embedded formats.
- Android sample app updated to show usage.
- Settings:
- Library: license-exp-message.
- All tasks: task-version.
- Wake word task: listen-window, dsp-target, dsp-header-stream, dsp-search-stream, dsp-acmodel-stream.
- Wake word enrollment task: accuracy.
- Produce phrase spotter models for Sensory's deeply embedded (DSP) targets:
- Changed
- require behavior for the task-version key.
- Documentation: read has non-blocking behavior on fromBuffer streams.
5.0.0-beta.0 (2016-06-02)¶
- Added
- Initial beta release of TrulyHandsfree 5.0.0.