Subject: [bug#50663] Add Mycroft - Voice Assistant

From: Nicolas Goaziou <[email-masked]>
Date: Mon, 24 Jan 2022 23:45:13 +0100

Hello,

phodina via Guix-patches via <[email-masked]> writes:

> The aim of this patch set is to bring in the MyCroft - private and
> open Voice Assistant.

Thank you.

I fixed some descriptions, removed labels from inputs, fixed compilation
with GCC 10 (for Mimic). Then I tried to apply the patch set. Alas
Mycroft core fails to build. You may want to have a look at it.

I'm sending back the updated patches to you, if that helps.

Regards,
-- 
Nicolas Goaziou
>From a8e11183ad26ec2bc601c5a4e8265a10ce52948e Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:15:41 +0200
Subject: [PATCH v2 01/19] gnu: Add python-requests-futures.

* gnu/packages/python-xyz.scm (python-requests-futures): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 8bd5f655ba..4500121e10 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -22223,6 +22223,29 @@ (define-public python-requests-file
 (define-public python2-requests-file
   (package-with-python2 python-requests-file))
 
+(define-public python-requests-futures
+  (package
+    (name "python-requests-futures")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "requests-futures" version))
+       (sha256
+        (base32
+         "0j611g1wkn98qp2b16kqz7lfz29a153jyfm02r3h8n0rpw17am1m"))))
+    (build-system python-build-system)
+    (arguments
+     ;; The test tries to open a connection to a remote server.
+     `(#:tests? #f))
+    (propagated-inputs
+     (list python-requests))
+    (home-page "https://github.com/ross/requests-futures")
+    (synopsis "Asynchronous Python HTTP for humans")
+    (description "This package is a small add-on for the Python Requests HTTP
+library.  It makes use of @code{concurrent.futures}.")
+    (license license:asl2.0)))
+
 (define-public python-identify
   (package
     (name "python-identify")
-- 
2.34.0

>From f0b3d8e874ec2bba9851166bfa27cf34ca1a53fe Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:19:21 +0200
Subject: [PATCH v2 02/19] gnu: Add python-pyee.

* gnu/packages/python-xyz.scm (python-pyee): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4500121e10..2e90f540f4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17733,6 +17733,31 @@ (define-public python-pyev
 (define-public python2-pyev
   (package-with-python2 python-pyev))
 
+(define-public python-pyee
+  (package
+    (name "python-pyee")
+    (version "8.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pyee" version))
+       (sha256
+        (base32
+         "0cgxbdr4zmil03wwr5fv58789i51gka8a9fxm1dgkf5xs9dwrnlj"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-pytest-trio python-pytest-asyncio python-pytest-runner
+           python-pytest python-mock))
+    (propagated-inputs
+     (list python-vcversioner python-twisted python-trio))
+    (home-page "https://github.com/jfhbrook/pyee")
+    (synopsis "Port of Node.js's EventEmitter to Python")
+    (description "Pyee supplies a @code{EventEmitter} object that is similar
+to the @code{EventEmitter} class from Node.js.  It also supplies a number of
+subclasses with added support for async and threaded programming in Python,
+such as async/await.")
+    (license license:expat)))
+
 (define-public python-imagesize
   (package
     (name "python-imagesize")
-- 
2.34.0

>From 599b00e8f24ebaa8951e9510f9c2956b732dad1b Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Mon, 24 Jan 2022 15:56:57 +0100
Subject: [PATCH v2 03/19] gnu: Add python-fann2.

* gnu/packages/python-xyz.scm (python-fann2): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2e90f540f4..f05827a1a4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -177,6 +177,7 @@ (define-module (gnu packages python-xyz)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages man)
   #:use-module (gnu packages markup)
   #:use-module (gnu packages maths)
@@ -19134,6 +19135,25 @@ (define-public python-factory-boy
      current test, while only declaring the test-specific fields")
     (license license:expat)))
 
+(define-public python-fann2
+  (package
+    (name "python-fann2")
+    (version "1.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fann2" version))
+       (sha256
+        (base32
+         "17zv6hbq26qg9jmsshx3xnnnv203fr4cyjg4v3rgq38a5i5agv2k"))))
+    (build-system python-build-system)
+    (native-inputs (list swig))
+    (propagated-inputs (list fann))
+    (home-page "https://github.com/FutureLinkCorporation/fann2")
+    (synopsis "Fast Artificial Neural Network library (FANN) Python bindings")
+    (description "This package provides Python bindings for Fast Artificial
+Neural Networks (FANN) 2.2.0.")
+    (license license:lgpl2.1)))
 (define-public python-translate-toolkit
   (package
     (name "python-translate-toolkit")
-- 
2.34.0

>From 5abc0b770c771b54ed7fb90ef36ebee76391a3cc Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:23:50 +0200
Subject: [PATCH v2 04/19] gnu: Add python-padaos.

* gnu/packages/python-xyz.scm (python-padaos): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index f05827a1a4..c1ea6c47f6 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15040,6 +15040,27 @@ (define-public python-pathlib
 (define-public python2-pathlib
   (package-with-python2 python-pathlib))
 
+(define-public python-padaos
+  (package
+    (name "python-padaos")
+    (version "0.1.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "padaos" version))
+       (sha256
+        (base32
+         "0wkd6p3ggf3ffsg3j47fgfcfmmj5k7h5rak88mbkr1r6r35mzh1a"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/MycroftAI/padaos")
+    (synopsis "Rigid, lightweight, simple intent parser")
+    (description "To deploy an intent parser into production with an automated
+feedback loop, it's essential that the new data doesn't interfere with the old
+data.  It's also necessary that the parser can learn from sentences that
+closely match written English (or any other language).  That's what Padaos
+does.")
+    (license license:expat)))
+
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-- 
2.34.0

>From 048e7f578828ac84944de827d06d0538434aea70 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:25:02 +0200
Subject: [PATCH v2 05/19] gnu: Add python-precise-runner.

* gnu/packages/python-xyz.scm (python-precise-runner): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c1ea6c47f6..25c10752e6 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -139,6 +139,7 @@ (define-module (gnu packages python-xyz)
   #:use-module (gnu packages adns)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages attr)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
@@ -23378,6 +23379,27 @@ (define-public python-precis-i18n
 RFC 8265 and RFC 8266.")
     (license license:expat)))
 
+(define-public python-precise-runner
+  (package
+    (name "python-precise-runner")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "precise-runner" version))
+       (sha256
+        (base32
+         "03dqjvw0mafxs5hakhvb3ah8f157n8632a54spss7w2bzc4l4ihs"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-pyaudio))
+    (home-page "https://github.com/MycroftAI/mycroft-precise")
+    (synopsis "Wrapper to use Mycroft Precise Wake Word Listener")
+    (description "Precise is a wake word listener.  The software monitors an
+audio stream---usually a microphone---and when it recognizes a specific phrase
+it triggers an event.")
+    (license license:asl2.0)))
+
 (define-public python-absl-py
   (package
     (name "python-absl-py")
-- 
2.34.0

>From bdb397ea8b48a8de193482f0394a8f6ddda2d0f4 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:26:12 +0200
Subject: [PATCH v2 06/19] gnu: Add python-petact.

* gnu/packages/python-xyz.scm (python-petact): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 25c10752e6..9be5e77be8 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -10235,6 +10235,24 @@ (define-public python2-pep517
          ,@(package-arguments base)))
     (native-inputs `()))))
 
+(define-public python-petact
+  (package
+    (name "python-petact")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "petact" version))
+       (sha256
+        (base32
+         "1rjh0fjimmixbvrv6znkfrfa83ndjc4pgyfyl90iwq3az120vjsx"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/matthewscholefield/petact")
+    (synopsis "Library for installing and updating compressed tar files")
+    (description "Petact is a library used for installing and updating
+compressed tar files.")
+    (license license:expat))) ; MIT
+
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
-- 
2.34.0

>From 96fa261f50a067a3b1e08d750bc875bd0f3055e6 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:29:42 +0200
Subject: [PATCH v2 07/19] gnu: Add python-padatious.

* gnu/packages/python-xyz.scm (python-padatious): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 9be5e77be8..c8230030ff 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -148,6 +148,7 @@ (define-module (gnu packages python-xyz)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dbm)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages django)
   #:use-module (gnu packages djvu)
   #:use-module (gnu packages docker)
@@ -15080,6 +15081,26 @@ (define-public python-padaos
 does.")
     (license license:expat)))
 
+(define-public python-padatious
+  (package
+    (name "python-padatious")
+    (version "0.4.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "padatious" version))
+       (sha256
+        (base32
+         "0xbgf75kxclacgairid8m948hrrngcxhykr1wkvav32fp58z4wg4"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-fann2 python-padaos python-xxhash))
+    (home-page "https://github.com/MycroftAI/padatious")
+    (synopsis "Neural network intent parser")
+    (description "Padatious is an efficient and agile neural network intent
+parser.  It is a core component of Mycroft AI.")
+    (license license:asl2.0)))
+
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-- 
2.34.0

>From d7e819a3d0803aa8bb3a361803fa60697e60f8db Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:32:07 +0200
Subject: [PATCH v2 08/19] gnu: Add python-lazy.

* gnu/packages/python-xyz.scm (python-lazy): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c8230030ff..534aeabec2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -16527,6 +16527,28 @@ (define-public python-typing-inspect
 inspection of types defined in the Python standard typing module.")
     (license license:expat)))
 
+(define-public python-lazy
+  (package
+    (name "python-lazy")
+    (version "1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference            ;pypi release link leads to project page
+             (url "https://github.com/stefanholek/lazy")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1y3y35jr0nnfh32zgdrb4r4sf9v8k36j07z2m0g6kz7bf3azsgc5"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/stefanholek/lazy")
+    (synopsis "Lazy attributes for Python objects")
+    (description "This library provides lazy attributes that are evaluated
+only once, the first time they are used.  Subsequent uses return the results
+of the first call.")
+    (license license:bsd-2)))
+
 (define-public python-lazy-object-proxy
   (package
     (name "python-lazy-object-proxy")
-- 
2.34.0

>From ffbd98650b530679b923fe67cdb209cb6a438c9d Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:33:03 +0200
Subject: [PATCH v2 09/19] gnu: Add python-pako.

* gnu/packages/python-xyz.scm (python-pako): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 534aeabec2..6f4c88a953 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15101,6 +15101,26 @@ (define-public python-padatious
 parser.  It is a core component of Mycroft AI.")
     (license license:asl2.0)))
 
+(define-public python-pako
+  (package
+    (name "python-pako")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pako" version))
+       (sha256
+        (base32
+         "07r3f86idlxb2x2mvy24fzkxyq5xalkbmk0zmqva7341pdrs0cy0"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-appdirs))
+    (home-page "https://github.com/MycroftAI/pako")
+    (synopsis "Universal package manager library")
+    (description
+     "Pako provides a unified way to handle native package managers.")
+    (license license:asl2.0)))
+
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-- 
2.34.0

>From 39abe4f0a6aefe087073d7546fffa6b22de4400e Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:34:56 +0200
Subject: [PATCH v2 10/19] gnu: Add python-adapt-parser.

* gnu/packages/python-xyz.scm (python-adapt-parser): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6f4c88a953..2706dac029 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14746,6 +14746,31 @@ (define-public python-translitcodec
 (define-public python2-translitcodec
   (package-with-python2 python-translitcodec))
 
+(define-public python-adapt-parser
+  (package
+    (name "python-adapt-parser")
+    (version "0.5.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/MycroftAI/adapt")
+             (commit (string-append "release/v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "08ma098saysspm7bbja8ic26lqg2bibz51bzfnifdch89r30i23n"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-pyee python-six))
+    (home-page "https://github.com/MycroftAI/adapt")
+    (synopsis "Text-to-intent parsing framework")
+    (description "The Adapt intent parser is a flexible and extensible intent
+definition and determination framework.  It is intended to parse natural
+language text into a structured intent that can then be invoked
+programatically.")
+    (license license:asl2.0)))
+
 (define-public python-anyqt
   (package
     (name "python-anyqt")
-- 
2.34.0

>From 10c02e7b77e51e3946fff4c1ca0f9ada154fadb7 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Mon, 24 Jan 2022 16:01:00 +0100
Subject: [PATCH v2 11/19] gnu: Add python-msm.

* gnu/packages/python-xyz.scm (python-msm): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2706dac029..aec75b3ac4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -11196,6 +11196,33 @@ (define-public python-msgpack-transitional
 (define-public python2-msgpack
   (package-with-python2 python-msgpack))
 
+(define-public python-msm
+  (package
+    (name "python-msm")
+    (version "0.8.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "msm" version))
+       (sha256
+        (base32
+         "00z588imq7q33iv3hn83mf2cyqrbs5f6zzyfa6445ainxvskkzz2"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-fasteners
+           python-gitpython
+           python-lazy
+           python-pako
+           python-pyxdg
+           python-pyyaml
+           python-requests))
+    (home-page "https://github.com/MycroftAI/mycroft-skills-manager")
+    (synopsis "Mycroft skills manager")
+    (description "This package provides a command line tool for interacting
+with the Mycroft skills repository.")
+    (license license:asl2.0)))
+
+
 (define-public python-netaddr
   (package
     (name "python-netaddr")
@@ -11205,14 +11232,14 @@ (define-public python-netaddr
        (method url-fetch)
        (uri (pypi-uri "netaddr" version))
        (sha256
-         (base32
-          "0hx2npi0wnhwlcybilgwlddw6qffx1mb7a3sj4p9s7bvl33mgk6n"))))
+        (base32
+         "0hx2npi0wnhwlcybilgwlddw6qffx1mb7a3sj4p9s7bvl33mgk6n"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f)) ;; No tests.
     (home-page "https://github.com/drkjam/netaddr/")
     (synopsis "Pythonic manipulation of  network addresses")
     (description
-      "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
+     "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
 and MAC network addresses.")
     (license license:bsd-3)))
 
-- 
2.34.0

>From 53b3478c8df3f8bbe39a6215322afc2a314437a5 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:36:26 +0200
Subject: [PATCH v2 12/19] gnu: Add python-msk.

* gnu/packages/python-xyz.scm (python-msk): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index aec75b3ac4..ff33d7adba 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -11196,6 +11196,27 @@ (define-public python-msgpack-transitional
 (define-public python2-msgpack
   (package-with-python2 python-msgpack))
 
+(define-public python-msk
+  (package
+    (name "python-msk")
+    (version "0.3.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "msk" version))
+       (sha256
+        (base32
+         "11zf2s5wdglzki2r05plx6j9gykwvbpdn8fbr3fnjz4g0vy1g9y6"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-colorama python-gitpython python-msm python-pygithub
+           python-requests))
+    (home-page "https://github.com/MycroftAI/mycroft-skills-kit")
+    (synopsis "Mycroft Skills Kit")
+    (description "MSK is a tool to help with creating, uploading, and
+upgrading Mycroft skills.")
+    (license license:asl2.0)))
+
 (define-public python-msm
   (package
     (name "python-msm")
-- 
2.34.0

>From 4a52fa1d3009007376af92d01f8574dbebd11dd0 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:38:54 +0200
Subject: [PATCH v2 13/19] gnu: Add python-lingua-franca.

* gnu/packages/python-xyz.scm (python-lingua-franca): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ff33d7adba..ede522d61e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -20542,6 +20542,36 @@ (define-public python-linecache2
 (define-public python2-linecache2
   (package-with-python2 python-linecache2))
 
+(define-public python-lingua-franca
+  (package
+    (name "python-lingua-franca")
+    (version "0.4.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/MycroftAI/lingua-franca")
+         (commit (string-append "release/v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1wx1c8a2k9155z74113yn1xcs6y0zljbgan2pbbmzsvki8m0z6jn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'relax-requirements
+           (lambda _
+             (substitute* "requirements.txt"
+               (("python-dateutil==") "python-dateutil>=")))))))
+    (propagated-inputs
+     (list python-dateutil))
+    (home-page "https://github.com/MycroftAI/lingua-franca")
+    (synopsis "Mycroft's multilingual text parsing and formatting library")
+    (description "Lingua Franca converts data into spoken equivalents.")
+    (license license:asl2.0)))
+
 (define-public python-traceback2
   (package
     (name "python-traceback2")
-- 
2.34.0

>From 79fea0ab52d4f390f3640c173644e2ae421af656 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Mon, 24 Jan 2022 16:03:28 +0100
Subject: [PATCH v2 14/19] gnu: Add python-pocketsphinx.

* gnu/packages/sphinx.scm (python-pocketsphinx): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/sphinx.scm | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index dfbc3194ea..c62f28b24e 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -46,15 +46,44 @@ (define-module (gnu packages sphinx)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages time)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages graph))
 
+(define-public python-pocketsphinx
+  (package
+    (name "python-pocketsphinx")
+    (version "0.1.15")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bambocher/pocketsphinx-python")
+             (recursive? #t)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18i1jw9138ldxigfcjz6rk9z2c2wc2ng2zdnkzippv45d5izkdz8"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-pytest swig))
+    (propagated-inputs
+     (list pulseaudio alsa-lib))
+    (home-page "https://github.com/bambocher/pocketsphinx-python")
+    (synopsis "Python interface to CMU Sphinxbase and Pocketsphinx libraries")
+    (description "This package provides a Python interface to CMU Sphinxbase
+and Pocketsphinx libraries.")
+    (license license:bsd-3)))
+
 (define-public python-sphinx
   (package
     (name "python-sphinx")
@@ -97,7 +126,7 @@ (define-public python-sphinx
            python-sphinxcontrib-serializinghtml))
     (native-inputs
      (list graphviz
-           imagemagick ;for "convert"
+           imagemagick                  ;for "convert"
            python-html5lib
            python-mock
            python-nose
-- 
2.34.0

>From 8f8dcdbd69c76beed20bdc88c86a5033d54f8dcc Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Mon, 24 Jan 2022 16:05:19 +0100
Subject: [PATCH v2 15/19] gnu: Add python-gtts.

* gnu/packages/python-xyz.scm (python-gtts): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ede522d61e..e8b7139073 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17705,6 +17705,35 @@ (define-public python-graphene
      with an associated set of resolve methods that know how to fetch data.")
     (license license:expat)))
 
+(define-public python-gtts
+  (package
+    (name "python-gtts")
+    (version "2.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "gTTS" version))
+       (sha256
+        (base32
+         "0g467h1501kxw4zniym03xkz3766bdp6j2j5l04p11ki4h8smkw8"))))
+    (build-system python-build-system)
+    (native-inputs
+     (list python-flake8
+           python-mock
+           python-pytest
+           python-pytest-cov
+           python-six
+           python-testfixtures))
+    (propagated-inputs
+     (list python-click
+           python-requests
+           python-six))
+    (home-page "https://github.com/pndurette/gTTS")
+    (synopsis "Python interface to Google Translate text-to-speech API")
+    (description "This package provides a Python library and CLI tool to
+interface with Google Translate text-to-speech API.")
+    (license license:expat)))
+
 (define-public python-random2
   (package
     (name "python-random2")
-- 
2.34.0

>From 31b5eee023b1bd62775157d281bfb34134fdd6fc Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:17:21 +0200
Subject: [PATCH v2 16/19] gnu: Add python-mycroft-messagebus-client.

* gnu/packages/python-xyz.scm (python-mycroft-messagebus-client): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e8b7139073..f3c05232e1 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -21943,6 +21943,27 @@ (define-public python2-more-itertools
     (propagated-inputs
      `(("python2-six" ,python2-six-bootstrap)))))
 
+(define-public python-mycroft-messagebus-client
+  (package
+    (name "python-mycroft-messagebus-client")
+    (version "0.9.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "mycroft-messagebus-client" version))
+       (sha256
+        (base32
+         "08vsamppk12a15yiv5ra6rr3x3psinsln7y06aw4abpj6cja8pgw"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     (list python-pyee python-websocket-client))
+    (home-page "https://github.com/MycroftAI/mycroft-messagebus-client")
+    (synopsis "Mycroft Messagebus Client")
+    (description "This module provides simple interface for the mycroft
+messagebus and can be used to connect to mycroft, send messages and react
+to messages sent by the Mycroft system.")
+    (license license:asl2.0)))
+
 (define-public python-latexcodec
   (package
     (name "python-latexcodec")
-- 
2.34.0

>From a8500175c36ce90a97d78d9bfcfbcb1db40af9cc Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 20:35:12 +0200
Subject: [PATCH v2 17/19] gnu: Add mycroft-mimic.

* gnu/packages/speech.scm (mycroft-mimic): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/speech.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index f6ca6099de..98b6ebffe2 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2020 Nicolas Goaziou <[email-masked]>
 ;;; Copyright © 2020 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2021 qblade <[email-masked]>
+;;; Copyright © 2021 Petr Hodina <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +46,7 @@ (define-module (gnu packages speech)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
@@ -232,6 +234,34 @@ (define-public mitlm
     (home-page "https://github.com/mitlm/mitlm")
     (license license:expat)))
 
+(define-public mycroft-mimic
+  (package
+    (name "mycroft-mimic")
+    (version "1.3.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri
+               (git-reference
+                (url "https://github.com/MycroftAI/mimic1")
+                (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1agwgby9ql8r3x5rd1rgx3xp9y4cdg4pi3kqlz3vanv9na8nf3id"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("CFLAGS=-fcommon"))) ;for GCC-10
+    (native-inputs
+     (list pkg-config libtool automake autoconf))
+    (inputs (list alsa-lib pcre2))
+    (synopsis "Mycroft's TTS engine, based on CMU's Flite (Festival Lite)")
+    (description "Mimic is a fast, lightweight Text-to-speech engine developed
+by Mycroft A.I. and VocaliD, based on Carnegie Mellon University’s Flite
+(Festival-Lite) software.  Mimic takes in text and reads it out loud to create
+a high quality voice.")
+    (home-page "https://github.com/MycroftAI/mimic1")
+    (license license:asl2.0)))
+
 (define-public speech-dispatcher
   (package
     (name "speech-dispatcher")
-- 
2.34.0

>From cc13f0700b7b2c3f49e76a45b38f3f7a72a0d6a5 Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Mon, 24 Jan 2022 16:07:12 +0100
Subject: [PATCH v2 18/19] gnu: Add python-speech-recognition.

* gnu/packages/python-xyz.scm (python-speech-recognition): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index f3c05232e1..4353797e83 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -5787,6 +5787,31 @@ (define-public python-spectra
 @end enumerate\n")
     (license license:expat)))
 
+(define-public python-speech-recognition
+  (package
+    (name "python-speech-recognition")
+    (version "3.8.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Uberi/speech_recognition")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1lq6g4kl3y1b4ch3b6wik7xy743x6pp5iald0jb9zxqgyxy1zsz4"))))
+    (build-system python-build-system)
+    (arguments
+     ;; Attempts to aquire sound card
+     '(#:tests? #f))
+    (inputs (list python-pyaudio))
+    (home-page "https://github.com/Uberi/speech_recognition")
+    (synopsis "Speech recognition module for Python")
+    (description "This package is a Python library for performing speech
+recognition, with support for several engines and APIs, online and offline.")
+    (license license:bsd-2)))
+
 (define-public python-pyspnego
   (package
     (name "python-pyspnego")
-- 
2.34.0

>From 51e054b823c60442317bc3487a0c769f14de9d1f Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:21:07 +0200
Subject: [PATCH v2 19/19] gnu: Add python-mycroft-core.

* gnu/packages/python-xyz.scm (python-mycroft-core): New variable.

Signed-off-by: Nicolas Goaziou <[email-masked]>
---
 gnu/packages/python-xyz.scm | 80 +++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4353797e83..1834152c3c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -210,6 +210,7 @@ (define-module (gnu packages python-xyz)
   #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages shells)
+  #:use-module (gnu packages speech)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages swig)
@@ -21968,6 +21969,85 @@ (define-public python2-more-itertools
     (propagated-inputs
      `(("python2-six" ,python2-six-bootstrap)))))
 
+(define-public python-mycroft-core
+  (package
+    (name "python-mycroft-core")
+    (version "21.2.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/MycroftAI/mycroft-core")
+         (commit (string-append "release/v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "02r0vxw0hsihnvviwn4fyspwky3kwq42f9z455q1s70k0snzhb28"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-requirements
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Use newer version of pkg
+             (substitute* "requirements/requirements.txt"
+               (("mycroft-messagebus-client==") "mycroft-messagebus-client>=")
+               (("tornado==") "tornado>=")
+               (("pyserial==") "pyserial>=")
+               (("psutil==") "psutil>=")
+               (("padaos==") "padaos>=")
+               (("precise-runner==") "precise-runner>=")
+               (("pocketsphinx==") "pocketsphinx>=")
+               (("python-dateutil==") "python-dateutil>=")
+               (("fasteners==") "fasteners>=")
+               (("requests-futures==") "requests-futures>=")
+               (("pillow==") "pillow>=")
+               (("PyYAML==5.4") "PyYAML>=5.3.1")
+               (("pyxdg==") "pyxdg>=")
+               (("requests>=2.20.0,<2.26.0") "requests>=2.20.0"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "PYTHONPATH"
+                       (string-append "./build/lib:"
+                                      (or (getenv "PYTHONPATH")
+                                          "")))))))))
+    (inputs (list mycroft-mimic pocketsphinx))
+    (propagated-inputs
+     (list python-fasteners
+           python-inflection
+           python-pyxdg
+           python-mycroft-messagebus-client
+           python-psutil
+           python-tornado-6
+           python-petact
+           python-precise-runner
+           python-padaos
+           python-speech-recognition
+           python-padatious
+           python-msk
+           python-pillow
+           python-gtts
+           python-requests-futures
+           python-pyserial
+           python-pocketsphinx
+           python-adapt-parser
+           python-lingua-franca
+           python-pyyaml
+           python-fasteners
+           python-pyee
+           python-psutil
+           python-fann2
+           python-pyxdg
+           python-websocket-client
+           python-requests
+           python-requests-futures))
+    (home-page "https://github.com/HelloChatterbox/HolmesIV")
+    (synopsis "Mycroft Core, the Mycroft Artificial Intelligence platform")
+    (description "This module provides a hackable open source voice assistant - Mycroft")
+    (license license:asl2.0)))
+
 (define-public python-mycroft-messagebus-client
   (package
     (name "python-mycroft-messagebus-client")
-- 
2.34.0