Simon/Licensing

    From KDE UserBase Wiki
    Revision as of 18:02, 17 August 2012 by Claus chr (talk | contribs)
    (diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

    Simon is licensed under the GPL license making it free and open source software.

    However, as most larger software projects we use a lot of third party products and pragmatically decided to use those that for the time being seemed to work best. This is why one of our dependencies and the trainings modules use external software that is not licensed in a GPL compatible way.

    Disclaimer

    I am not a lawyer. As such everything written here is just my interpretation of various licenses and complicated legal situations.

    I might be wrong.

    Julius

    Usage in Simon

    Simon uses the Large Vocabulary Continuous Speech Recognition Engine Julius for the recognition.

    The Problem

    Julius, while being free and open source software as well uses the Original 4 clause BSD License which, according to Gnu is a recognized free software license but not compatible with the GPL.

    Solution

    Simons License includes a special exception allowing to link to Julius.

    Below is the affected part of the license. The added part is highlighted.

     3. You may copy and distribute the Program (or a work based on it,
      under Section 2) in object code or executable form under the terms of
      Sections 1 and 2 above provided that you also do one of the following:
       a) Accompany it with the complete corresponding machine-readable
       source code, which must be distributed under the terms of Sections
       1 and 2 above on a medium customarily used for software interchange; or,
       b) Accompany it with a written offer, valid for at least three
       years, to give any third party, for a charge no more than your
       cost of physically performing source distribution, a complete
       machine-readable copy of the corresponding source code, to be
       distributed under the terms of Sections 1 and 2 above on a medium
       customarily used for software interchange; or,
       c) Accompany it with the information you received as to the offer
       to distribute corresponding source code.  (This alternative is
       allowed only for noncommercial distribution and only if you
       received the program in object code or executable form with such
       an offer, in accord with Subsection b above.)
    The source code for a work means the preferred form of the work for
    making modifications to it.  For an executable work, complete source
    code means all the source code for all modules it contains, plus any
    associated interface definition files, plus the scripts used to
    control compilation and installation of the executable.  However, as a
    special exception, the source code distributed need not include
    anything that is normally distributed (in either source or binary
    form) with the major components (compiler, kernel, and so on) of the
    operating system on which the executable runs, unless that component
    itself accompanies the executable.
    In addition, as a special exception, the copyright holders give
    permission to link the code of portions of this program with the
    Julius library under certain conditions as described in each
    individual source file, and distribute linked combinations
    including the two.
    You must obey the GNU General Public License in all respects
    for all of the code used other than Julius.  If you modify
    file(s) with this exception, you may extend this exception to your
    version of the file(s), but you are not obligated to do so.  If you
    do not wish to do so, delete this exception statement from your
    version.  If you delete this exception statement from all source
    files in the program, then also delete it here.
    If distribution of executable or object code is made by offering
    access to copy from a designated place, then offering equivalent
    access to copy the source code from the same place counts as
    distribution of the source code, even though third parties are not
    compelled to copy the source along with the object code.
    

    To the best of my knowledge, the same issue has been handled in the same way with OpenSSL: [1].


    HTK

    Usage in Simon

    For a speech recognition to work, you need a speech model which itself consists of two parts: The first one describes what words, sentences, etc. exist and of which sounds they are composed of ("language model"). The second one describes how these phonemes sound ("acoustic model").

    Simon builds and manages the language model on his own (with the help of the Julius LVCSR in some places).

    If you want to create your own acoustic model instead of just using a predefined one or want to adapt a general model to your voice, Simon provides the ability to use the HTK for that.

    The Problem

    The HTK license is not a free license.

    You are allowed to browse and edit the source code but you can not re-distribute the downloaded version of the HTK.

    However, you are encouraged to file bug reports and re-distribute patches if you write them.

    There have been free software projects based on the HTK like the free and open source HTS text to speech engine.

    Solution

    Simon never links to the HTK

    The HTK is never directly linked to Simon but started as external program.

    This way both the GPL and the HTK license can be fullfilled to the letter.

    Simon is functional without the HTK

    Since Simon 0.3 many features of Simon do no longer depend on the HTK at all.

    Even without ever downloading the HTK the user can set up a completely working speech recognition system including custom use case scenarios, commands and many of the advanced features.

    The only part of Simon that doesn't work without the HTK is the user specific acoustic model training.

    The following example usage of Simon doesn't need the HTK:

    • User downloads Simon
    • User downloads Firefox, Amarok and window management scenario to control Mozilla Firefox, Amarok and his window manager
    • User downloads the Voxforge GPL acoustic model for English and sets it to be a static base model

    The user can then control his computer through voice commands.

    The following example usage of Simon still doesn't need the HTK:

    • The user would like to change the command "Start Browser" to "Launch Internet Explorer":
      • Adding the new words to the language model
      • Creating a new grammar structure allowing Simon to recognize this sentence
      • Recompiling the language model
      • Add a new command "Launch Internet Explorer" to start the browser.

    The user can then use "Launch Internet Explorer" to start the browser.

    On the other hand, the following example usage of Simon does require the HTK:

    • The recognition performance is poor so he decides to train the acoustic model some more through the integrated training procedure.

    In short: Without the HTK Simon provides still much more control over the speech model than comparable open source solutions like GnomeVoiceControl which provides no way to change the acoustic model at all.

    Speech models generated with the HTK can be free

    Speech mdoels created with the HTK do not inherit the HTK license.

    The HTK license does not limit the redistribution of the models created with it.

    The license covers these parts (direct quote):

    All source code, object or executable code, associated technical documentation and any data files in this HTK distribution.


    Models created with the software are not covered by this license. In fact, the official FAQ clearly says so (direct quote):

    Can I build & sell products based on HTK3?

    Yes. You can for example use HTK3 to train models that are then used in your products.

    There are free acoustic models available

    As models created by the HTK can be free and open source, there are of course free acoustic models already available.

    In fact this Wiki contains a list which Free and open source acoustic models that can be used with Simon.

    The HTK file format is not proprietary

    The models created by the HTK are use a quite simple ASCII file format that is very well documented.

    You can for example create your models using the free and open source SPHINX speech recognition toolkit to compile an acoustic model and convert it to the HTK format.

    There are multiple model converters between SPHINX and HTK models available (a quick google search turns up a lot more).

    The HTK is interchangable

    Simon is only very loosely bound to the HTK.

    Technically the free and open source SPHINX speech recognition toolkit could replace both the HTK and Julius.

    Simon has been designed for both these components to be interchangable.

    The only reason why SPHINX support was not yet imported is that the documentation of SPHINX is - in my opinion - not as good as the one from the HTK and the University of Technology Graz that helps us with the speech recognition part of Simon has never used CMU SPHINX before.