14

A Frank Look at Simon: Where To Go From Here

As I had previously announced, I am resigning my active positions in Simon and KDE Speech.

As part of me handing over the project to an eventual successor, I had announced a day-long workshop on speech recognition basics for anyone who’s interested. Mario Fux of Randa fame took me up on that offer. In a long and intense Jitsi meeting we discussed basic theory, went through all the processes involved in creating and adapting language- and acoustic models and looked at the Simon codebase. But maybe most importantly of all, we talked about what I also want to outline in this blog post: What Simon is, what it could and should be, and how to get there.

Vision.

As some of you may know, Simon started as a speech control solution for people with speech impediments. This use case required immense flexibility when it comes to speech model processing. But flexibility doesn’t come cheap – it eliminates many simplifying assumptions. This increases the complexity of the codebase substantially, makes adding new features more difficult and ultimately also leads to a more confusing user interface.
Just to give you an example of how deep this problem runs, I remember fretting over what to call the smallest lexical element of the recognition vocabulary. Can we even call it a “word”? It may actually not be in Simon – this is up to the user’s configuration.

Now, everyone reading this would be forgiven for asking, why, almost 9 years in, Simon hasn’t simply been streamlined yet. The answer is, that removing what makes Simon difficult to understand, and difficult to maintain, would necessarily also entail removing most of what makes Simon a great tool for what it was engineered to be: An extremely flexible speech control platform, allowing even people with speech impediments to control all kinds of systems in (almost) all kinds of environments.

Vision..?

Over the years, it became clear that Simon’s core functionality could also be useful to a much wider audience.
Eventually, this lead to the decision to shoehorn a “simple” speech recognition system for end-users into the Simon concept.

The logic was simple: Putting both use cases in the same application allowed for easier branding, and additional developers, who would hopefully be attracted by the prospect of working on a speech recognition system for a larger audience, would automatically improve the system for both use-cases. Moreover, the shared codebase could ease maintenance and further development.

In hindsight, however, this was a mistake.

Ostensibly making Simon easier to use meant that all the complexity, which was purposefully still there to support the core use case, needed to be wrapped in another layer of “simplification”, which in practice only further complicated the codebase. For the end-user, this was problematic as well, as the low-level settings were basically only hidden under a thin veil of convenience over a power-user system.

Vision!

In my opinion, it’s time to treat Simon’s two personalities as the two separate projects, that simply share common libraries for common tasks.

Simon itself should stay the tool for power-users, that allows to fiddle with vocabulary transcription, grammar rules and adaption configurations. It’s really quite good at this, and there is a genuine need, as the adoption of Simon shows.
The new project should be a straight-forward dictation-enabled command and control system for the Plasma desktop. Plasma’s answer to Windows’ and OS X’ built in speech recognition, so to say. This project’s task would be vastly simpler than Simon’s task, which allows a substantially leaner codebase. Let’s look at a small list of simplifying assumptions that could never hold in Simon, but which would be appropriate for this new project:

  • As the system will be dictation enabled, it will necessarily only work for languages where a dictation-capable acoustic model already exists. Therefore, the capability to create acoustic models from scratch is not required.
  • As dictation capable speech models would need to be built anyway, a common model architecture can be enforced, removing the need to support HTK / Julius.
  • As generic speech models (base models) will be used, the pronunciations of words can be assumed to be known (for example, following the “rules” for “US English”). Therefore, users would not need to transcribe their words, as this can be done automatically through grapheme to phoneme conversion (the g2p model would be part of the speech model distribution). This, together with the switch from Grammars to N-Grams would eliminate the need for what were the entire “Vocabulary” and “Grammar” sections in the Simon UI.

But talk is cheap. Let’s look at a prototype. Let’s look at Lera.

Lera's Main UI

Lera’s main user interface is a simple app indicator, that gets out the way. Clicking on it opens the configuration dialog.

Lera's Configuration

Lera’s configuration dialog (mockup, non-functional) is an exercise in austerity. A drop-down lets the user chose the used speech model, which should default to the system’s language if a matching speech model is available. A list of scenarios, which should be auto-enabled based on installed applications, show what can be controlled and how. The user should be able to improve performance by going through training (in the second tab) and to configure when Lera should be listening (in the third tab).

Here’s the best part: Lera is a working prototype. Only the core functionality, the actual decoding, is implemented, but it works out of the box, powered by an improved version of the speech model I presented on this blog in 2013, enabling continuous “dictation” in English (the model is available in Lera’s git repository; So far, the only output produced is a small popup showing the recognition result).

Lera in Action

I implemented this prototype mostly to show off what I think the future of open-source speech recognition should look like, and how you could get started to get there. Lera’s whole codebase has 1099 lines, 821 of which are responsible for recording audio. The actual integration of the SPHINX speech recognizer is only a handful of lines. The model too, is built with absolute simplicity in mind. There’s no “secret sauce”, just a basic SPHINX acoustic model, built from open corpora (see the readme in the model folder).

Execution

If anything, Lera is a starting point. The next steps would be to move Simon’s “eventsimulation” library into a separate framework, to be shared between Lera and Simon. Lera could then use this to type out the recognition results (see Simon’s Dictation plugin). Then, I would suggest porting a simplified notion of “Scenarios” to Lera, which should only really contain a set of commands, and maybe context information (vocabulary and “grammar” can be synthesized automatically from the command triggers). The implementation of training (acoustic model adaption) would then complete a very sensible, very usable version 1.0.

Sadly, as I mentioned before, I will not be able to work on this any longer. I do, however, consider open-source speech recognition to be an important project, and would love to see it continued. If Lera kindled your interest, feel free to clone the repo and hack on it a little. It’s fun. I promise.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Peter Grasch

14 Comments

  1. Any chance of switching to Kaldi? They recently created a language model based on librivox which is quite competitive.

  2. Yes, I’m aware of the LibriSpeech corpus, and the associated Kaldi acoustic models. In fact, the model used by the Lera prototype is built from a combination of the Voxforge corpus and the Librispeech corpus (roughly 1000 hours of speech).

    However, I purposefully did not propose to use KALDI for Lera, as SPHINX’ whole application suite (both decoder and trainer) are much easier to understand for a newcomer, and their documentation is more geared towards users than researchers. And since I’m leaving the project, I wanted the stack it to be as accessible as possible.

    If someone with a strong speech background were to take on the project, using Kaldi over Sphinx would also be my suggestion.

  3. Hi and congrats for your evolutions in Apple and thanks for the good work you did on the project.
    I felt like giving a spin to the lera prototype on ubuntu 15.04 and I came across some dev issues, I would not even know where to start.

    so here I go (in the hope someone will pickup the phone on the other end ;-))

    Ubuntu 15.04 Desktop
    installed dependencies
    sudo apt-get install cmake extra-cmake-modules qt5-qmake qt5keychain-dev qt5-default kdelibs5-dev kdelibs5-data kdelibs5-plugins kdesdk-misc qtdeclarative5-dev doxygen graphviz libfarstream-0.1-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libqt4-dev libtelepathy-farstream-0.4-dev libtelepathy-glib-dev pkg-config cmake debhelper kdelibs5-dev libtelepathy-logger-dev libtelepathy-logger-qt4-dev libtelepathy-qt4-dev pkg-kde-tools bison cmake flex libqt4-dev libqtgstreamer-dev libtelepathy-glib-dev libtelepathy-logger-dev libxml2-dev python python-dev libxml-parser-perl librpc-xml-perl libqjson-dev libqca2-dev libqca2-plugin-ossl kdepim-dev libqtwebkit-dev libkf5coreaddons-dev libkf5i18n-dev libkf5kcmutils-dev libkf5notifications-dev pocketsphinx-utils libpocketsphinx-dev libpocketsphinx1 libsphinxbase1 libsphinxbase-dev simon

    Some might be in fact not be required and apparently I have issues compiling which would lead me to think I miss something or I have a version conflicting.

    I did a clone of master
    git clone git://anongit.kde.org/scratch/grasch/lera.git

    cd lera
    mkdir -p build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr/share/kde4 -DCMAKE_BUILD_TYPE=Debug ..^C
    — The C compiler identification is GNU 4.9.2
    — The CXX compiler identification is GNU 4.9.2
    — Check for working C compiler: /usr/bin/cc
    — Check for working C compiler: /usr/bin/cc — works
    — Detecting C compiler ABI info
    — Detecting C compiler ABI info – done
    — Check for working CXX compiler: /usr/bin/c++
    — Check for working CXX compiler: /usr/bin/c++ — works
    — Detecting CXX compiler ABI info
    — Detecting CXX compiler ABI info – done
    — Looking for __GLIBC__
    — Looking for __GLIBC__ – found
    — Performing Test _OFFT_IS_64BIT
    — Performing Test _OFFT_IS_64BIT – Success
    — Found KF5CoreAddons: /usr/lib/x86_64-linux-gnu/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake (found version “5.9.0”)
    — Found Gettext: /usr/bin/msgmerge (found version “0.19.2”)
    — Found PythonInterp: /usr/bin/python (found version “2.7.9”)
    — Found KF5I18n: /usr/lib/x86_64-linux-gnu/cmake/KF5I18n/KF5I18nConfig.cmake (found version “5.9.0”)
    — Found KF5: success (found version “5.9.0”) found components: CoreAddons I18n

    — The following REQUIRED packages have been found:

    * ECM (required version >= 1.0.0)
    * Qt5Core
    * Qt5Gui
    * Qt5Widgets
    * Qt5 (required version >= 5.3.0)
    * KF5CoreAddons
    * Gettext
    * PythonInterp
    * KF5I18n
    * KF5

    — Found PkgConfig: /usr/bin/pkg-config (found version “0.28”)
    — checking for module ‘sphinxbase’
    — found sphinxbase, version 0.8
    — Found SphinxBase
    — Found Pocketsphinx: /usr/lib/libpocketsphinx.so
    — Found ALSA: /usr/lib/x86_64-linux-gnu/libasound.so
    — Configuring done
    — Generating done
    — Build files have been written to: /home/marcomoscardini/lera/build

    So far so good… but then “make” returns:
    Scanning dependencies of target kcm_lera_automoc
    [ 7%] Automatic moc for target kcm_lera
    Generating leraconfiguration.moc
    Generating moc_leraconfiguration.cpp
    [ 7%] Built target kcm_lera_automoc
    [ 14%] Generating ui_leraconfiguration.h
    Scanning dependencies of target kcm_lera
    [ 21%] Building CXX object src/CMakeFiles/kcm_lera.dir/leraconfiguration.cpp.o
    [ 28%] Building CXX object src/CMakeFiles/kcm_lera.dir/kcm_lera_automoc.cpp.o
    Linking CXX shared module kcm_lera.so
    [ 28%] Built target kcm_lera
    Scanning dependencies of target lera_automoc
    [ 35%] Automatic moc for target lera
    Generating lera.moc
    /home/marcomoscardini/lera/src/lera.cpp:0: Note: No relevant classes found. No output generated.
    Generating moc_decoder.cpp
    Generating moc_soundbackend.cpp
    Generating moc_soundinput.cpp
    Generating moc_lera.cpp
    Generating moc_leraapplet.cpp
    [ 35%] Built target lera_automoc
    [ 42%] Generating ui_lera.h
    Scanning dependencies of target lera
    [ 50%] Building CXX object src/CMakeFiles/lera.dir/main.cpp.o
    /home/marcomoscardini/lera/src/main.cpp: In function ‘int main(int, char**)’:
    /home/marcomoscardini/lera/src/main.cpp:51:11: warning: unused variable ‘l’ [-Wunused-variable]
    Lera *l = new Lera();
    ^
    [ 57%] Building CXX object src/CMakeFiles/lera.dir/lera.cpp.o
    [ 64%] Building CXX object src/CMakeFiles/lera.dir/leraapplet.cpp.o
    [ 71%] Building CXX object src/CMakeFiles/lera.dir/asr/decoder.cpp.o
    /home/marcomoscardini/lera/src/asr/decoder.cpp: In member function ‘bool Decoder::startSample()’:
    /home/marcomoscardini/lera/src/asr/decoder.cpp:58:26: error: too few arguments to function ‘int ps_start_utt(ps_decoder_t*, const char*)’
    return ps_start_utt(mPS) >= 0;
    ^
    In file included from /home/marcomoscardini/lera/src/asr/decoder.h:26:0,
    from /home/marcomoscardini/lera/src/asr/decoder.cpp:22:
    /usr/include/pocketsphinx/pocketsphinx.h:363:5: note: declared here
    int ps_start_utt(ps_decoder_t *ps, char const *uttid);
    ^
    /home/marcomoscardini/lera/src/asr/decoder.cpp: In member function ‘QString Decoder::getCurrentHypothesis()’:
    /home/marcomoscardini/lera/src/asr/decoder.cpp:84:31: error: too few arguments to function ‘const char* ps_get_hyp(ps_decoder_t*, int32*, const char**)’
    hyp = ps_get_hyp(mPS, &score);
    ^
    In file included from /home/marcomoscardini/lera/src/asr/decoder.h:26:0,
    from /home/marcomoscardini/lera/src/asr/decoder.cpp:22:
    /usr/include/pocketsphinx/pocketsphinx.h:449:13: note: declared here
    char const *ps_get_hyp(ps_decoder_t *ps, int32 *out_best_score,
    ^
    /home/marcomoscardini/lera/src/asr/decoder.cpp: In member function ‘bool Decoder::startSample()’:
    /home/marcomoscardini/lera/src/asr/decoder.cpp:59:1: error: control reaches end of non-void function [-Werror=return-type]
    }
    ^
    cc1plus: some warnings being treated as errors
    src/CMakeFiles/lera.dir/build.make:128: recipe for target ‘src/CMakeFiles/lera.dir/asr/decoder.cpp.o’ failed
    make[2]: *** [src/CMakeFiles/lera.dir/asr/decoder.cpp.o] Error 1
    CMakeFiles/Makefile2:176: recipe for target ‘src/CMakeFiles/lera.dir/all’ failed
    make[1]: *** [src/CMakeFiles/lera.dir/all] Error 2
    Makefile:127: recipe for target ‘all’ failed
    make: *** [all] Error 2

    Any help would be more than welcome

  4. Sorry; I forgot to be precise and future-prof, I cloned master(be121a1)
    thanks to include in previous comment.

  5. Just noticed they do not have an Italian model on their site, do you know if there is any kicking around?

  6. No Italian model, maybe it is an opportunity to “jam-in”? 😉
    OK, compiled fine… beside no tests to proveit, but I guess POC do not need tests 😉

    sudo make install
    [sudo] password for marcomoscardini:
    [ 7%] Automatic moc for target kcm_lera
    [ 7%] Built target kcm_lera_automoc
    [ 28%] Built target kcm_lera
    [ 35%] Automatic moc for target lera
    [ 35%] Built target lera_automoc
    [100%] Built target lera
    Install the project…
    — Install configuration: “Debug”
    — Installing: /usr/share/kde4/share/lera//models
    — Installing: /usr/share/kde4/share/lera//models/en
    — Installing: /usr/share/kde4/share/lera//models/en/mixture_weights
    — Installing: /usr/share/kde4/share/lera//models/en/decode.dic
    — Installing: /usr/share/kde4/share/lera//models/en/feat.params
    — Installing: /usr/share/kde4/share/lera//models/en/transition_matrices
    — Installing: /usr/share/kde4/share/lera//models/en/README
    — Installing: /usr/share/kde4/share/lera//models/en/means
    — Installing: /usr/share/kde4/share/lera//models/en/noisedict
    — Installing: /usr/share/kde4/share/lera//models/en/variances
    — Installing: /usr/share/kde4/share/lera//models/en/decode.lm.bin
    — Installing: /usr/share/kde4/share/lera//models/en/mdef
    — Installing: /usr/share/kde4/bin/lera
    — Set runtime path of “/usr/share/kde4/bin/lera” to “/usr/share/kde4/lib/x86_64-linux-gnu:/usr/local/lib”
    — Installing: /usr/share/kde4/share/applications/lera.desktop
    — Installing: /usr/share/kde4/lib/x86_64-linux-gnu/plugins/kcm_lera.so
    — Set runtime path of “/usr/share/kde4/lib/x86_64-linux-gnu/plugins/kcm_lera.so” to “/usr/share/kde4/lib/x86_64-linux-gnu”
    — Installing: /usr/share/kde4/share/kservices5/leraconfiguration.desktop
    — Installing: /usr/share/kde4/share/icons/hicolor/16×16/apps/lera.png
    — Installing: /usr/share/kde4/share/icons/hicolor/22×22/apps/lera.png
    — Installing: /usr/share/kde4/share/icons/hicolor/32×32/apps/lera.png
    — Installing: /usr/share/kde4/share/icons/hicolor/48×48/apps/lera.png

    when I execute lera, get an error:
    $ /usr/share/kde4/bin/lera
    service is “org.kde.StatusNotifierItem-15264-1”
    Registering a client interface to the KStatusNotifierWatcher
    Default input device: “Playback/recording through the PulseAudio sound server (default)”
    Model: “”
    Current configuration:
    [NAME] [DEFLT] [VALUE]
    -agc none none
    -agcthresh 2.0 2,000000e+00
    -allphone
    -allphone_ci no no
    -alpha 0.97 9,700000e-01
    -ascale 20.0 2,000000e+01
    -aw 1 1
    -backtrace no no
    -beam 1e-48 1,000000e-48
    -bestpath yes yes
    -bestpathlw 9.5 9,500000e+00
    -ceplen 13 13
    -cmn current current
    -cmninit 8.0 8.0
    -compallsen no no
    -debug 0
    -dict /decode.dic
    -dictcase no no
    -dither no no
    -doublebw no no
    -ds 1 1
    -fdict
    -feat 1s_c_d_dd 1s_c_d_dd
    -featparams
    -fillprob 1e-8 1,000000e-08
    -frate 100 100
    -fsg
    -fsgusealtpron yes yes
    -fsgusefiller yes yes
    -fwdflat yes yes
    -fwdflatbeam 1e-64 1,000000e-64
    -fwdflatefwid 4 4
    -fwdflatlw 8.5 8,500000e+00
    -fwdflatsfwin 25 25
    -fwdflatwbeam 7e-29 7,000000e-29
    -fwdtree yes yes
    -hmm
    -input_endian little little
    -jsgf
    -keyphrase
    -kws
    -kws_delay 10 10
    -kws_plp 1e-1 1,000000e-01
    -kws_threshold 1 1,000000e+00
    -latsize 5000 5000
    -lda
    -ldadim 0 0
    -lifter 0 0
    -lm /decode.lm.bin
    -lmctl
    -lmname
    -logbase 1.0001 1,000100e+00
    -logfn
    -logspec no no
    -lowerf 133.33334 1,333333e+02
    -lpbeam 1e-40 1,000000e-40
    -lponlybeam 7e-29 7,000000e-29
    -lw 6.5 6,500000e+00
    -maxhmmpf 30000 30000
    -maxwpf -1 -1
    -mdef
    -mean
    -mfclogdir
    -min_endfr 0 0
    -mixw
    -mixwfloor 0.0000001 1,000000e-07
    -mllr
    -mmap yes yes
    -ncep 13 13
    -nfft 512 512
    -nfilt 40 40
    -nwpen 1.0 1,000000e+00
    -pbeam 1e-48 1,000000e-48
    -pip 1.0 1,000000e+00
    -pl_beam 1e-10 1,000000e-10
    -pl_pbeam 1e-10 1,000000e-10
    -pl_pip 1.0 1,000000e+00
    -pl_weight 3.0 3,000000e+00
    -pl_window 5 5
    -rawlogdir
    -remove_dc no no
    -remove_noise yes yes
    -remove_silence yes yes
    -round_filters yes yes
    -samprate 16000 1,600000e+04
    -seed -1 -1
    -sendump
    -senlogdir
    -senmgau
    -silprob 0.005 5,000000e-03
    -smoothspec no no
    -svspec
    -tmat
    -tmatfloor 0.0001 1,000000e-04
    -topn 4 4
    -topn_beam 0 0
    -toprule
    -transform legacy legacy
    -unit_area yes yes
    -upperf 6855.4976 6,855498e+03
    -uw 1.0 1,000000e+00
    -vad_postspeech 50 50
    -vad_prespeech 20 20
    -vad_startspeech 10 10
    -vad_threshold 2.0 2,000000e+00
    -var
    -varfloor 0.0001 1,000000e-04
    -varnorm no no
    -verbose no no
    -warp_params
    -warp_type inverse_linear inverse_linear
    -wbeam 7e-29 7,000000e-29
    -wip 0.65 6,500000e-01
    -wlen 0.025625 2,562500e-02

    INFO: feat.c(715): Initializing feature stream to type: ‘1s_c_d_dd’, ceplen=13, CMN=’current’, VARNORM=’no’, AGC=’none’
    INFO: cmn.c(143): mean[0]= 12,00, mean[1..12]= 0.0
    ERROR: “acmod.c”, line 83: Folder ” does not contain acoustic model definition ‘mdef’
    Decoder setup failed; Model: “”
    Segmentation fault (core dumped)

    Any idea why?

    ps.
    BTW the git repository seams to be currently offline, but I worked with earlier version be121a1

    • Hi Marco,

      Please use a pasting service (pastebin) for long outputs to keep this comment section clean. Thank you.

      As for your problem: It appears that you’re building Lera against KDE libs 4, whereas I developed it against KF5. The problems seems to stem from a problem in resolving the model installation path.
      In KF5, KStandardDirs (the typical way to find resources in Kdelibs 4) was deprecated and replaced with Qt5’s QStandardPaths. The latter is also what Lera uses. There seems to be a mismatch in where cmake installs your data with where QStandardPaths expects it.

      Restoring backwards compatibility here would be a great first patch for you to prepare. Search the codebase for QStandardPaths (IIRC you’ll only find one match) and verify that this (incorrectly) returns an empty string. That’s what you need to fix (by ensuring that cmake and Qt resolve to the same path so that the installation directory and the search directory match on all versions). Have fun!

      Kind regards,
      Peter

  7. For what it s worth this is how I did my install on ubuntu 15.04

    apt-get install autoconf libtool swig cmake extra-cmake-modules qt5-qmake qt5keychain-dev qt5-default kdelibs5-dev kdelibs5-data kdelibs5-plugins kdesdk-misc qtdeclarative5-dev doxygen graphviz libfarstream-0.1-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libqt4-dev libtelepathy-farstream-0.4-dev libtelepathy-glib-dev pkg-config cmake debhelper kdelibs5-dev libtelepathy-logger-dev libtelepathy-logger-qt4-dev libtelepathy-qt4-dev pkg-kde-tools bison cmake flex libqt4-dev libqtgstreamer-dev libtelepathy-glib-dev libtelepathy-logger-dev libxml2-dev python python-dev libxml-parser-perl librpc-xml-perl libqjson-dev libqca2-dev libqca2-plugin-ossl kdepim-dev libqtwebkit-dev libkf5coreaddons-dev libkf5i18n-dev libkf5kcmutils-dev libkf5notifications-dev pocketsphinx-utils libpocketsphinx-dev libpocketsphinx1 libsphinxbase1 libsphinxbase-dev simon

    Download Sphinxbase and Sphinxpocket 5 prealpha from:
    http://cmusphinx.sourceforge.net/wiki/download

    Follow the links to sources
    http://sourceforge.net/projects/cmusphinx/files/sphinxbase/5prealpha
    http://sourceforge.net/projects/cmusphinx/files/pocketsphinx/5prealpha

    untar and go to the folder of sphinxbase-5prealpha where ever you might have it stored
    cd ~/Downloads/sphinxbase-5prealpha
    ./autogen.sh && ./configure && make

    Test your work
    make check
    Install it
    sudo make install

    Continue with pocketsphinx
    cd ~/Downloads/pocketsphinx-5prealpha
    ./autogen.sh
    ./configure
    make clean all
    make check
    sudo make install

    git clone git://anongit.kde.org/scratch/grasch/lera.git && cd lera
    git checkout be121a1

    mkdir -p build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr/share/kde4 -DCMAKE_BUILD_TYPE=Debug ..
    then build with make
    make
    make test
    sudo make install

    /usr/share/kde4/bin/lera

    but I still end up with this error
    service is “org.kde.StatusNotifierItem-545-1”
    Registering a client interface to the KStatusNotifierWatcher
    Default input device: “Playback/recording through the PulseAudio sound server (default)”
    Model: “”
    Current configuration:
    [NAME] [DEFLT] [VALUE]
    -agc none none
    -agcthresh 2.0 2,000000e+00
    -allphone
    -allphone_ci no no
    -alpha 0.97 9,700000e-01
    -ascale 20.0 2,000000e+01
    -aw 1 1
    -backtrace no no
    -beam 1e-48 1,000000e-48
    -bestpath yes yes
    -bestpathlw 9.5 9,500000e+00
    -ceplen 13 13
    -cmn current current
    -cmninit 8.0 8.0
    -compallsen no no
    -debug 0
    -dict /decode.dic
    -dictcase no no
    -dither no no
    -doublebw no no
    -ds 1 1
    -fdict
    -feat 1s_c_d_dd 1s_c_d_dd
    -featparams
    -fillprob 1e-8 1,000000e-08
    -frate 100 100
    -fsg
    -fsgusealtpron yes yes
    -fsgusefiller yes yes
    -fwdflat yes yes
    -fwdflatbeam 1e-64 1,000000e-64
    -fwdflatefwid 4 4
    -fwdflatlw 8.5 8,500000e+00
    -fwdflatsfwin 25 25
    -fwdflatwbeam 7e-29 7,000000e-29
    -fwdtree yes yes
    -hmm
    -input_endian little little
    -jsgf
    -keyphrase
    -kws
    -kws_delay 10 10
    -kws_plp 1e-1 1,000000e-01
    -kws_threshold 1 1,000000e+00
    -latsize 5000 5000
    -lda
    -ldadim 0 0
    -lifter 0 0
    -lm /decode.lm.bin
    -lmctl
    -lmname
    -logbase 1.0001 1,000100e+00
    -logfn
    -logspec no no
    -lowerf 133.33334 1,333333e+02
    -lpbeam 1e-40 1,000000e-40
    -lponlybeam 7e-29 7,000000e-29
    -lw 6.5 6,500000e+00
    -maxhmmpf 30000 30000
    -maxwpf -1 -1
    -mdef
    -mean
    -mfclogdir
    -min_endfr 0 0
    -mixw
    -mixwfloor 0.0000001 1,000000e-07
    -mllr
    -mmap yes yes
    -ncep 13 13
    -nfft 512 512
    -nfilt 40 40
    -nwpen 1.0 1,000000e+00
    -pbeam 1e-48 1,000000e-48
    -pip 1.0 1,000000e+00
    -pl_beam 1e-10 1,000000e-10
    -pl_pbeam 1e-10 1,000000e-10
    -pl_pip 1.0 1,000000e+00
    -pl_weight 3.0 3,000000e+00
    -pl_window 5 5
    -rawlogdir
    -remove_dc no no
    -remove_noise yes yes
    -remove_silence yes yes
    -round_filters yes yes
    -samprate 16000 1,600000e+04
    -seed -1 -1
    -sendump
    -senlogdir
    -senmgau
    -silprob 0.005 5,000000e-03
    -smoothspec no no
    -svspec
    -tmat
    -tmatfloor 0.0001 1,000000e-04
    -topn 4 4
    -topn_beam 0 0
    -toprule
    -transform legacy legacy
    -unit_area yes yes
    -upperf 6855.4976 6,855498e+03
    -uw 1.0 1,000000e+00
    -vad_postspeech 50 50
    -vad_prespeech 20 20
    -vad_startspeech 10 10
    -vad_threshold 2.0 2,000000e+00
    -var
    -varfloor 0.0001 1,000000e-04
    -varnorm no no
    -verbose no no
    -warp_params
    -warp_type inverse_linear inverse_linear
    -wbeam 7e-29 7,000000e-29
    -wip 0.65 6,500000e-01
    -wlen 0.025625 2,562500e-02

    INFO: feat.c(715): Initializing feature stream to type: ‘1s_c_d_dd’, ceplen=13, CMN=’current’, VARNORM=’no’, AGC=’none’
    INFO: cmn.c(143): mean[0]= 12,00, mean[1..12]= 0.0
    ERROR: “acmod.c”, line 83: Folder ” does not contain acoustic model definition ‘mdef’
    Decoder setup failed; Model: “”
    Segmentation fault (core dumped)

  8. hi Peter! I stumbled upon this page by accident and just wanted to ask you why did you name your project Lera Simon as it happens to be my name 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *