Releases: cmusphinx/pocketsphinx
5.0.3: Major bugfix release
This release mainly fixes building for Python 3.12, but also fixes a serious bug in the NGramModel
wrapper class along the way. Note that Python 3.6 and 3.7 are no longer supported.
What's Changed
- Switch to scikit-build-core and tox to fix many issues by @dhdaines in #372
- Release 5.0.3 by @dhdaines in #373
Full Changelog: v5.0.2...v5.0.3
5.0.2: Minor bugfix release
What's Changed
- Removed unnecessary shinxbase in package config by @Elastino in #351
- Do not attempt to align phones to impossibly short durations (fixes #339) by @dhdaines in #354
- Require specific setuptools version to fix editable install (fixes: #353) by @dhdaines in #355
Full Changelog: v5.0.1...v5.0.2
5.0.1: Bug and documentation fixes
What's Changed
- Include examples of live recognition on various platforms by @dhdaines in #319
- Add missing close brace for C++ by @FigBug in #322
- Use a separate search for ps_set_align_text() by @dhdaines in #324
- Fix regression tests and
-phone_align
in main program by @dhdaines in #331 - Use trailing slash with include directory by @samford in #332
- Removed unnecessary libpthread in package config by @Elastino in #337
- fix: fix a stray #if WORDS_BIGENDIAN (fixes: #343) by @dhdaines in #344
- 5.0.1 Release by @dhdaines in #345
New Contributors
- @FigBug made their first contribution in #322
- @samford made their first contribution in #332
- @Elastino made their first contribution in #337
Full Changelog: v5.0.0...v5.0.1
5.0.0: First official release in a decade or so
Finally, now that it is thoroughly obsolete, it is time to get PocketSphinx out of its eternal "prealpha" status. The version number is strangely large because "5prealpha" existed for such a long time that it became treated as a real release, and for some reason it did not have a conventional version number like, say, 1.0.0-alpha5.
The purpose of this release is to fix and document the public API, as well as to debug, stabilize, test, and fully document the current state of PocketSphinx. I do expect that there will be bug fixes and possibly some new APIs, but all 5.x releases are guaranteed to be backwards source and binary compatible.
Notably this release is not source-compatible in C with the previous versions. Your code will fail to compile. By contrast, in Python, old code should not fail at runtime, and if this isn't the case, please report it as an issue. Such is the way of the world with dynamic languages.
API documentation can be found at https://cmusphinx.github.io/doc/pocketsphinx/ and https://pocketsphinx.readthedocs.io/
Among other notable changes:
pocketsphinx_continuous
is gone, replaced by plain oldpocketsphinx
, which is documented in the README file.- The configuration interface is now quite different. It is not a "command-line parser" anymore and the configuration parameters have lost their leading dashes.
- All of the SphinxBase "utility" headers have also been made internal and their symbols will no longer be exported on Windows. Conversely, the JSGF and N-Gram language model API has been included in
<pocketsphinx/model.h>
. - The
sphinx_fe
andsphinx_cepview
utilities have been moved to SphinxTrain. - The audio interface (
<sphinxbase/ad.h>
) has been removed. - The
-remove_noise
option is now controlled by the acoustic model as it needs to match the training. - The
-remove_silence
option has been removed as it is a Bad Idea and Considered Harmful for batch mode recognition. Please use the endpointer API as detailed in<pocketsphinx/endpointer.h>
andexamples/live.c
orexamples/live.py
. - The
-cmninit
option is not controlled by the default acoustic model anymore. This may cause some problems for live recognition as the defaults may not match the feature extraction parameters. - The SWIG wrappers have been removed. Only Python 3 is directly supported as a dynamic language binding. Node.js may be supported in the near future. The C API is specifically designed to be easily supported through FFI, so you can do that.
- Python support is much improved, fully documented, and builds a proper module directly from the (top level of the) source tree with
pip
orbuild
. - Android support is gone but may come back (contributions welcome, I don't have time to support anything other than Linux on x86_64 and s390x)
What's Changed
- Change the <pocketsphinx/search.h> API to be slightly more intuitive by @dhdaines in #298
- New force-alignment API and two-pass alignment to get phone/state durations by @dhdaines in #300
- Uniformize API and test fixed-point mode properly by @dhdaines in #302
- Fix float-to-int underflows (#199, #252) by @dhdaines in #303
- Disallow multiple search types in config or command-line by @dhdaines in #304
- Revert incorrect optimizations to JSGF compiler (fixes #53) by @dhdaines in #305
- Make seg_iter and hyp behave as expected in kws search (fixes #122) by @dhdaines in #306
- feat: add -config and config to parse and save JSON by @dhdaines in #307
- Resurrect GStreamer support by @dhdaines in #308
- Remove sphinxbase and modernize configuration API by @dhdaines in #295
- Add support for input files to pocketsphinx command line by @dhdaines in #297
- Add compatibility with pocketsphinx-python 0.1.5 by @dhdaines in #292
- Rename
pocketsphinx5
topocketsphinx
by @dhdaines in #293 - Updated the en-us dict by @Coeur in #124
- Fix memory leak in allphone_search.c by @chussong in #138
- Forward declare allphone_clear_segments in allphone_search.c by @chussong in #140
- Make force alignment accessible from pocketsphinx_batch and the ps_decoder API by @dhdaines in #144
- Improve linking for internal headers by @chussong in #168
- Fix memory leak in bin_mdef_read_text by @guidovranken in #198
- Large build system and small API modernizations by @dhdaines in #250
- Fix windows build by @dhdaines in #251
- Fix endianness issues in binary trie LM code by @dhdaines in #253
- Build a proper Python package by @dhdaines in #254
- Update -cmninit parameter when CMN is updated by @dhdaines in #259
- Switch back to Cython and use scikit-build for Python module by @dhdaines in #271
- Document Python module better and build ReadTheDocs with (the other) Sphinx by @dhdaines in #273
- Fix install command for Mac and iOS builds by @mattlarose in #280
- Incoporate WebRTC VAD code by @dhdaines in #278
- Reorganize header files by @dhdaines in #282
- Remove thread library by @dhdaines in #283
- Add a proper API for cepstral mean normalization by @dhdaines in #284
- Make -samprate an int after all these years by @dhdaines in #285
New Contributors
- @alexanderkoller made their first contribution in #105
- @Coeur made their first contribution in #124
- @cshung made their first contribution in #131
- @chussong made their first contribution in #138
- @dhdaines made their first contribution in #144
- @sc0ty made their first contribution in #151
- @nxdefiant made their first contribution in #157
- @jschueller made their first contribution in #160
- @guidovranken made their first contribution in #198
- @sthibaul made their first contribution in #202
- @freddii made their first contribution in #231
- @lenzo-duo made their first contribution in #245
- @flyn-org made their first contribution in #244
- @Crozzers made their first contribution in #268
- @mattlarose made their first contribution in #280
Full Changelog: last-pre-1.0...v5.0.0
5.0.0rc5: Fifth (and final) release candidate
Basically everything I wanted to do is in this release, and more. If all goes well there will just be a final release in a couple days, then I can get on with the rest of my life.
What's Changed
- Change the <pocketsphinx/search.h> API to be slightly more intuitive by @dhdaines in #298
- New force-alignment API and two-pass alignment to get phone/state durations by @dhdaines in #300
- Uniformize API and test fixed-point mode properly by @dhdaines in #302
- Fix float-to-int underflows (#199, #252) by @dhdaines in #303
- Disallow multiple search types in config or command-line by @dhdaines in #304
- Revert incorrect optimizations to JSGF compiler (fixes #53) by @dhdaines in #305
- Make seg_iter and hyp behave as expected in kws search (fixes #122) by @dhdaines in #306
- feat: add -config and config to parse and save JSON by @dhdaines in #307
- Resurrect GStreamer support by @dhdaines in #308
Full Changelog: v5.0.0rc4...v5.0.0rc5
5.0.0rc4: Fourth Release Candidate
The purpose of this pre-release is to solidify and modernize the library API and ABI.
The configuration interface in particular is now quite different. It is not a "command-line parser" anymore and the configuration parameters have lost their leading dashes. So instead of this:
cmd_ln_set_str_r(ps_get_config(decoder), "-hmm", "/whatever/blah");
You now do this:
ps_config_set_str(ps_get_config(decoder), "hmm", "/whatever/blah");
As well, the parameter setting functions will coerce the value you give them to whatever the underlying parameter is instead of printing an error and failing (or worse, crashing the program, like they used to do in the bad old days). So it is okay to do this for instance:
ps_config_set_str(ps_get_config(decoder), "samprate", "16000");
As well, configurations can be saved and loaded as JSON (or a sort of pseudo-YAML as well). This is the recommended way to create configurations from scratch as well at the moment though I may bring back something like cmd_ln_init()
as it was quite convenient.
All of the SphinxBase "utility" headers have also been made internal and their symbols will no longer be exported on Windows. Conversely, the JSGF and N-Gram language model API has been included in <pocketsphinx.h>
.
The pocketsphinx
command-line program now accepts input files on the command-line which can be raw, WAV, or NIST Sphere format.
What's Changed
- Remove sphinxbase and modernize configuration API by @dhdaines in #295
- Add support for input files to pocketsphinx command line by @dhdaines in #297
Full Changelog: v5.0.0rc3...v5.0.0rc4
5.0.0rc3: Third Release Candidate
The main point of this pre-release is to reintegrate and reclaim the pocketsphinx-python module into the main source tree. The API is not precisely the same because some bits are no longer relevant, but it should support code written for that module. Some more rigorous testing will be done before the final release.
The secondary point is to begin improving the documentation, but it's not quite there yet.
What's Changed
- Add compatibility with pocketsphinx-python 0.1.5 by @dhdaines in #292
- Rename
pocketsphinx5
topocketsphinx
by @dhdaines in #293
Full Changelog: v5.0.0rc2...v5.0.0rc3
5.0.0rc2: Second Release Candidate
- Fix system-wide installation (pkg-config, models, get_default_args())
- Make Python module "batteries-included" unless USE_INSTALLED_POCKETSPHINX option is set (see Dockerfile for example)
- Add a Dockerfile, but note that audio Does Not Work, Ever inside a Docker container, so don't even try and please don't file any bugs
- Start writing real documentation
- Reinstate something like
pocketsphinx_continuous
but just calledpocketsphinx
Full Changelog: v5.0.0rc1...v5.0.0rc2
5.0.0rc1: First Release Candidate
Why This pre-Release?
PLEASE DO NOT BUILD DISTRIBUTION PACKAGES FROM THIS PRERELEASE. The API is nearly guaranteed to change before the true release. I do not want to end up with a shared library named libpocketsphinx.so.362.3.4
. THIS IS A PRERELEASE AND NOT A REAL RELEASE!!! (sorry for the shouting but I want to make it clear that although PocketSphinx was a "prealpha" for 10 years, this is not going to be the way things work anymore)
The purpose of the 5.0.0 release will be to debug, stabilize, test, and fully document the current state of PocketSphinx. As part of this, some APIs have been removed, others are deprecated, and a few have changed and may still change. Notably:
- SphinxBase is integrated into PocketSphinx now. The header files remain the same.
- The
sphinx_fe
andsphinx_cepview
utilities have been moved to SphinxTrain. - The audio interface (
<sphinxbase/ad.h>
) has been removed. - The
-remove_noise
option is now controlled by the acoustic model as it needs to match the training. - The
-remove_silence
option has been removed as it is a Bad Idea and Considered Harmful for batch mode recognition. Please use the endpointer API as detailed in<pocketsphinx/endpointer.h>
andexamples/live.c
orexamples/live.py
. - The
-cmninit
option is not controlled by the default acoustic model anymore. This may cause some problems for live recognition as the defaults may not match the feature extraction parameters. - The SWIG wrappers have been removed. Only Python 3 is directly supported as a dynamic language binding. Node.js may be supported in the near future. The C API is specifically designed to be easily supported through FFI, so you can do that.
- Python support is much improved, fully documented, and builds a proper module directly from the (top level of the) source tree with
pip
orbuild
. - The GStreamer module is gone but it will come back, sorry.
- Android support is gone but may come back (contributions welcome, I don't have time to support anything other than Linux on x86_64 and s390x)
What's Changed
- Updated the en-us dict by @Coeur in #124
- Fix memory leak in allphone_search.c by @chussong in #138
- Forward declare allphone_clear_segments in allphone_search.c by @chussong in #140
- Make force alignment accessible from pocketsphinx_batch and the ps_decoder API by @dhdaines in #144
- Improve linking for internal headers by @chussong in #168
- Fix memory leak in bin_mdef_read_text by @guidovranken in #198
- Large build system and small API modernizations by @dhdaines in #250
- Fix windows build by @dhdaines in #251
- Fix endianness issues in binary trie LM code by @dhdaines in #253
- Build a proper Python package by @dhdaines in #254
- Update -cmninit parameter when CMN is updated by @dhdaines in #259
- Switch back to Cython and use scikit-build for Python module by @dhdaines in #271
- Document Python module better and build ReadTheDocs with (the other) Sphinx by @dhdaines in #273
- Fix install command for Mac and iOS builds by @mattlarose in #280
- Incoporate WebRTC VAD code by @dhdaines in #278
- Reorganize header files by @dhdaines in #282
- Remove thread library by @dhdaines in #283
- Add a proper API for cepstral mean normalization by @dhdaines in #284
- Make -samprate an int after all these years by @dhdaines in #285
New Contributors
- @alexanderkoller made their first contribution in #105
- @Coeur made their first contribution in #124
- @cshung made their first contribution in #131
- @chussong made their first contribution in #138
- @dhdaines made their first contribution in #144
- @sc0ty made their first contribution in #151
- @nxdefiant made their first contribution in #157
- @jschueller made their first contribution in #160
- @guidovranken made their first contribution in #198
- @sthibaul made their first contribution in #202
- @freddii made their first contribution in #231
- @lenzo-duo made their first contribution in #245
- @flyn-org made their first contribution in #244
- @Crozzers made their first contribution in #268
- @mattlarose made their first contribution in #280
Full Changelog: https://github.com/cmusphinx/pocketsphinx/commits/v5.0.0rc1