Subject: Add Mycroft - Voice Assistant

From: phodina <[email-masked]>
Date: Wed, 08 Dec 2021 11:48:42 +0000

Hi,

I've rebased the patch set and updated the package definitions.

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

----
Petr

From 247ec26f040f9d6237b9ab28bd7a4acf6da8c8a7 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:15:41 +0200
Subject: [PATCH 01/20] gnu: Add python-requests-futures.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 81b99e1d2e..23fa409e1a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -21936,6 +21936,28 @@ (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
+     `(("python-requests" ,python-requests)))
+    (home-page "https://github.com/ross/requests-futures")
+    (synopsis "Asynchronous Python HTTP for Humans")
+    (description "Asynchronous Python HTTP for Humans.")
+    (license license:asl2.0)))
+
 (define-public python-identify
   (package
     (name "python-identify")
-- 
2.34.0

From 31f15387f18a9e50cf8df030230636bec968cbad Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:19:21 +0200
Subject: [PATCH 02/20] gnu: Add python-pyee.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 23fa409e1a..c6775cf522 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17363,6 +17363,33 @@ (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
+     `(("python-pytest-trio" ,python-pytest-trio)
+       ("python-pytest-asyncio" ,python-pytest-asyncio)
+       ("python-pytest-runner" ,python-pytest-runner)
+       ("python-pytest" ,python-pytest)
+       ("python-mock" ,python-mock)))
+    (propagated-inputs
+     `(("python-vcversioner" ,python-vcversioner)
+       ("python-twisted" ,python-twisted)
+       ("python-trio" ,python-trio)))
+    (home-page "https://github.com/jfhbrook/pyee")
+    (synopsis "Port of node.js's EventEmitter to python")
+    (description "Provides a port of node.js's EventEmitter to python.")
+    (license license:expat)))
+
 (define-public python-imagesize
   (package
     (name "python-imagesize")
-- 
2.34.0

From 953d8b2c5d353e63c1bd7a1ebfa8be6a5a4e9aa0 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:38:01 +0200
Subject: [PATCH 11/20] gnu: Add python-msm.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 426295844a..23f111092e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -151,6 +151,7 @@ (define-module (gnu packages python-xyz)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages geo)
   #:use-module (gnu packages ghostscript)
@@ -10787,6 +10788,32 @@ (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
+     `(("python-fasteners" ,python-fasteners)
+       ("python-gitpython" ,python-gitpython)
+       ("python-lazy" ,python-lazy)
+       ("python-pako" ,python-pako)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-requests" ,python-requests)))
+    (home-page "https://github.com/MycroftAI/mycroft-skills-manager")
+    (synopsis "Mycroft Skills Manager")
+    (description "Command line tool for interacting with the mycroft-skills
+repository.")
+    (license license:asl2.0)))
+
 (define-public python-netaddr
   (package
     (name "python-netaddr")
-- 
2.34.0

From 1a6a90388fa2b114ce62f7df3b04c0011679331b Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:22:48 +0200
Subject: [PATCH 03/20] gnu: Add python-fann2.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c6775cf522..6152b82b6e 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 maths)
   #:use-module (gnu packages monitoring)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openstack)
@@ -18800,6 +18801,25 @@ (define-public python-factory-boy
 (define-public python2-factory-boy
   (package-with-python2 python-factory-boy))
 
+(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 `(("swig" ,swig)))
+    (propagated-inputs `(("fann" ,fann)))
+    (home-page "https://github.com/FutureLinkCorporation/fann2")
+    (synopsis "Fast Artificial Neural Network Library (FANN) Python bindings")
+    (description "Provides bindings for Fast Artificial Neural Networks 2.2.0.")
+    (license license:lgpl2.1)))
+
 (define-public python-translate-toolkit
   (package
     (name "python-translate-toolkit")
-- 
2.34.0

From fd95175e36583558956a8b9e508e3ccd66d12df6 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:26:12 +0200
Subject: [PATCH 06/20] gnu: Add python-petact.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 82d11f04aa..6d23941899 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -9972,6 +9972,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 "Package extraction tool")
+    (description "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 b5fe6b583e1993cb4c11af033b724e39a13ca966 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:33:03 +0200
Subject: [PATCH 09/20] gnu: Add python-pako.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2b5e2a94b2..b7a816fef8 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14630,6 +14630,26 @@ (define-public python-padatious
     (description "A neural network intent parser")
     (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
+     `(("python-appdirs" ,python-appdirs)))
+    (home-page "https://github.com/MycroftAI/pako")
+    (synopsis "The universal package manager library")
+    (description
+     "Provides unified way to handle native universal package manager.")
+    (license license:asl2.0)))
+
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-- 
2.34.0

From 02ce61ca029307e35509496281470eaa0a4ab14e Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:29:42 +0200
Subject: [PATCH 07/20] gnu: Add python-padatious.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6d23941899..d36eb615fd 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -144,6 +144,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)
@@ -14608,6 +14609,27 @@ (define-public python-padaos
 is a single compiled regex matcher.")
     (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
+     `(("python-fann2" ,python-fann2)
+       ("python-padaos" ,python-padaos)
+       ("python-xxhash" ,python-xxhash)))
+    (home-page "https://github.com/MycroftAI/padatious")
+    (synopsis "Neural network intent parser")
+    (description "A neural network intent parser")
+    (license license:asl2.0)))
+
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-- 
2.34.0

From 8ce1a3a51e000672e9aa45e52d934e02a0a78dad Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:32:07 +0200
Subject: [PATCH 08/20] gnu: Add python-lazy.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d36eb615fd..2b5e2a94b2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -16095,6 +16095,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 "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 c215af1ee2de09a03e87bf908c3e4ebac5174ce3 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:36:26 +0200
Subject: [PATCH 12/20] gnu: Add python-msk.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 23f111092e..39c6741d2f 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -10788,6 +10788,30 @@ (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
+     `(("python-colorama" ,python-colorama)
+       ("python-gitpython" ,python-gitpython)
+       ("python-msm" ,python-msm)
+       ("python-pygithub" ,python-pygithub)
+       ("python-requests" ,python-requests)))
+    (home-page "https://github.com/MycroftAI/mycroft-skills-kit")
+    (synopsis "Mycroft Skills Kit")
+    (description "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 c716eba3bcb200935ade8022e6c9b6accd168cc0 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:38:54 +0200
Subject: [PATCH 13/20] gnu: Add python-lingua-franca.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 39c6741d2f..527cf80903 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -20308,6 +20308,35 @@ (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))
+       (modules '((guix build utils)))
+       (snippet '(begin
+                   ;; Use newer version of pkg
+                   (substitute* "requirements.txt"
+                     (("python-dateutil==") "python-dateutil>="))
+                   #t))
+       (sha256
+        (base32
+         "1wx1c8a2k9155z74113yn1xcs6y0zljbgan2pbbmzsvki8m0z6jn"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)))
+    (home-page "https://github.com/MycroftAI/lingua-franca")
+    (synopsis "Mycroft's multilingual text parsing and formatting library")
+    (description "Converts data into spoken equivalents.")
+    (license license:asl2.0)))
+
 (define-public python-traceback2
   (package
     (name "python-traceback2")
-- 
2.34.0

From 12160ba8d72c6a5738bca7cc7f2f92ea95548f49 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 20:35:12 +0200
Subject: [PATCH 17/20] gnu: Add mycroft-mimic.

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

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index cbc46b32b4..ad073322cf 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)
@@ -237,6 +239,36 @@ (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)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)
+       ("automake" ,automake)
+       ("autoconf" ,autoconf)))
+    (inputs `(("alsa-lib" ,alsa-lib)
+              ("pcre2" ,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 3f5b3fde4527c04c40aab777696061a424b31f09 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:21:07 +0200
Subject: [PATCH 20/20] gnu: Add python-mycroft-core.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 992c6fbd1b..e236b170c2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -206,6 +206,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)
@@ -21685,6 +21686,86 @@ (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.1")
+    (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
+         "1v5yb48y3zr4s0cgkid8y1zsi6x1wrhy1jfb9axzi090ammgy700"))))
+    (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>="))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "PYTHONPATH"
+                       (string-append "./build/lib:" (getenv
+                                                      "PYTHONPATH")))))))))
+    (inputs `(("mycroft-mimic" ,mycroft-mimic)
+              ("pocketsphinx" ,pocketsphinx)))
+    (propagated-inputs
+     `(("python-fasteners" ,python-fasteners)
+       ("python-inflection" ,python-inflection)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-mycroft-messagebus-client"
+        ,python-mycroft-messagebus-client)
+       ("python-psutil" ,python-psutil)
+       ("python-tornado" ,python-tornado-6)
+       ("python-petact" ,python-petact)
+       ("python-precise-runner" ,python-precise-runner)
+       ("python-padaos" ,python-padaos)
+       ("python-speech-recoginition" ,python-speech-recognition)
+       ("python-padatious" ,python-padatious)
+       ("python-msk" ,python-msk)
+       ("python-pillow" ,python-pillow)
+       ("python-gtts" ,python-gtts)
+       ("python-requests-futures" ,python-requests-futures)
+       ("python-pyserial" ,python-pyserial)
+       ("python-pocketsphinx" ,python-pocketsphinx)
+       ("python-adapt-parser" ,python-adapt-parser)
+       ("python-lingua-franca" ,python-lingua-franca)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-fasteners" ,python-fasteners)
+       ("python-pyee" ,python-pyee)
+       ("python-psutil" ,python-psutil)
+       ("python-fann2" ,python-fann2)
+       ("python-pyxdg" ,python-pyxdg)
+       ("python-websocket-client" ,python-websocket-client)
+       ("python-requests" ,python-requests)
+       ("python-requests-futures"
+        ,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

From 135d4b404bb00b10e27a9c464126d4fa02402758 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:23:50 +0200
Subject: [PATCH 04/20] gnu: Add python-padaos.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6152b82b6e..fd3a2e1b75 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14571,6 +14571,24 @@ (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, dead-simple intent parser")
+    (description "Converts sentences into one big chunk of regex.  Each intent
+is a single compiled regex matcher.")
+    (license license:expat)))
+
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-- 
2.34.0

From 31ec8ea31331f55fae43bf2f0689be7db91e2de5 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 20:29:15 +0200
Subject: [PATCH 15/20] gnu: Add python-gtts.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 527cf80903..e70e21beaa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -17289,6 +17289,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
+     `(("python-flake8" ,python-flake8)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-six" ,python-six)
+       ("python-testfixtures" ,python-testfixtures)))
+    (propagated-inputs
+     `(("python-click" ,python-click)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/pndurette/gTTS")
+    (synopsis "Python interface to Google Translate text-to-speech API")
+    (description "Python library and CLI tool to interface with Google Translate
+text-to-speech API")
+    (license license:expat)))
+
 (define-public python-nautilus
   (package
     (name "python-nautilus")
-- 
2.34.0

From d567ad4e5d7f36704fc6241ae0a6791355dbf09b Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:40:47 +0200
Subject: [PATCH 14/20] gnu: Add python-pocketsphinx.

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

diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index a7a3443707..acab5c1178 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -45,14 +45,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-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
+     `(("python-pytest" ,python-pytest)
+       ("swig" ,swig)))
+    (propagated-inputs
+     `(("pulseaudio" ,pulseaudio)
+       ("alsa-lib" ,alsa-lib)))
+    (home-page "https://github.com/bambocher/pocketsphinx-python")
+    (synopsis "Python interface to CMU Sphinxbase and Pocketsphinx libraries")
+    (description "Python interface to CMU Sphinxbase and Pocketsphinx libraries")
+    (license license:bsd-3)))
+
 (define-public python-sphinx
   (package
     (name "python-sphinx")
-- 
2.34.0

From 3ca8914bb993b6e23ffcd5836d932d9003a6d7b0 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Sat, 18 Sep 2021 18:44:39 +0200
Subject: [PATCH 18/20] gnu: Add python-speech-recognition.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index eb902b95a2..03f734169d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -5631,6 +5631,31 @@ (define-public python-spectra
 (define-public python2-spectra
   (package-with-python2 python-spectra))
 
+(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 `(("python-pyaudio" ,python-pyaudio)))
+    (home-page "https://github.com/Uberi/speech_recognition")
+    (synopsis "Speech recognition module for Python")
+    (description "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 b7494794d545306bb61a6976d0618e47d2c3a366 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:17:21 +0200
Subject: [PATCH 16/20] gnu: Add python-mycroft-messagebus-client.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e70e21beaa..eb902b95a2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -21660,6 +21660,29 @@ (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
+     `(("python-pyee" ,python-pyee)
+       ("python-websocket-client"
+        ,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 4b139255155356ef68585b794c7374f146dfc832 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:34:56 +0200
Subject: [PATCH 10/20] gnu: Add python-adapt-parser.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b7a816fef8..426295844a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14267,6 +14267,30 @@ (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
+     `(("python-pyee" ,python-pyee)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/MycroftAI/adapt")
+    (synopsis "Text-to-intent parsing framework")
+    (description "Flexible and extensible way to parse natural language text
+into a structured intent.")
+    (license license:asl2.0)))
+
 (define-public python-anyqt
   (package
     (name "python-anyqt")
-- 
2.34.0

From 2e87e2e4dd0cd8a8c4cd362e459004c024685c78 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Fri, 30 Jul 2021 17:25:02 +0200
Subject: [PATCH 05/20] gnu: Add python-precise-runner.

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

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index fd3a2e1b75..82d11f04aa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -135,6 +135,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)
@@ -23094,6 +23095,26 @@ (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
+     `(("python-pyaudio" ,python-pyaudio)))
+    (home-page "https://github.com/MycroftAI/mycroft-precise")
+    (synopsis "Wrapper to use Mycroft Precise Wake Word Listener")
+    (description "Audio stream monitoring wrapper which triggers an event when
+it recognizes a specific phrase.")
+    (license license:asl2.0)))
+
 (define-public python-absl-py
   (package
     (name "python-absl-py")
-- 
2.34.0

From a5466aab965cce20c7b490af7b98628769cba239 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Wed, 8 Dec 2021 12:44:47 +0100
Subject: [PATCH 19/20] gnu: python-pillow: Update to 8.4.0.

* gnu/packages/python-xyz.scm (python-pillow): Update to 8.4.0.

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 03f734169d..992c6fbd1b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -7018,14 +7018,14 @@ (define-public python-pikepdf
 (define-public python-pillow
   (package
     (name "python-pillow")
-    (version "8.1.1")
+    (version "8.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pillow" version))
        (sha256
         (base32
-         "086g7nhv52wclrwnzbzs2x3nvyzs2hfq1bvgivsrp5f7r7wiiz7n"))))
+         "1vbn66rlzpqfvbca569wdvxzp7biwcnqajs674694hg1aqygiqmq"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pytest" ,python-pytest)))
-- 
2.34.0