meta-speech-framework: Update Alexa Auto SDK wakeword support for v2.3 81/25981/1
authorScott Murray <scott.murray@konsulko.com>
Mon, 1 Feb 2021 23:06:35 +0000 (18:06 -0500)
committerScott Murray <scott.murray@konsulko.com>
Mon, 1 Feb 2021 23:06:35 +0000 (18:06 -0500)
Update the agl-voiceagent-alexa-wakeword feature template for v2.3:
- Added a scriptlet to handle installing and patching the amazonlite
  zip file contents.  The amazonlite-2.3.zip file is now expected to
  be in the directory set with the XDG_DOWNLOAD_DIR environment
  variable, and if that is not set, it will use $HOME/Downloads (i.e.
  the same behavior as the rcar3 graphics support files).
- Added a patch to tweak a couple of things in the amazonlite layer
  to fix building against Yocto dunfell.

Bug-AGL: SPEC-3783

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I75783860e4ce332ba89e8a7768fe4ff7367bcd93

templates/feature/agl-voiceagent-alexa-wakeword/50_setup.sh [new file with mode: 0644]
templates/feature/agl-voiceagent-alexa-wakeword/README_feature_agl-voiceagent-alexa-wakeword.md
templates/feature/agl-voiceagent-alexa-wakeword/amazonlite-2.3.patch [new file with mode: 0644]

diff --git a/templates/feature/agl-voiceagent-alexa-wakeword/50_setup.sh b/templates/feature/agl-voiceagent-alexa-wakeword/50_setup.sh
new file mode 100644 (file)
index 0000000..6e1d250
--- /dev/null
@@ -0,0 +1,45 @@
+# Install and patch Amazon Alexa Auto SDK "amazonlite" wakeword engine
+
+pushd $METADIR >/dev/null 2>&1
+
+WAKEWORD_FEATURE_DIR="$METADIR/meta-agl-devel/templates/feature/agl-voiceagent-alexa-wakeword"
+AMAZONLITE_VER="2.3"
+AMAZONLITE_PATCH="${WAKEWORD_FEATURE_DIR}/amazonlite-${AMAZONLITE_VER}.patch"
+AUTOSDK_EXTRAS_DIR="$METADIR/external/alexa-auto-sdk/extensions/extras"
+AMAZONLITE_DIR="${AUTOSDK_EXTRAS_DIR}/amazonlite"
+
+if [ -f "${AMAZONLITE_DIR}/README.md" ]; then
+    ver=`grep '^Unzip the' "${AMAZONLITE_DIR}/README.md" | sed 's/.*amazonlite-\([0-9]\+\.[0-9]\+\)\.zip.*/\1/'`
+    if [ "$ver" != ${AMAZONLITE_VER} ]; then
+        echo "ERROR: ${AMAZONLITE_DIR} does not contain version ${AMAZONLITE_VER}!" >&2
+        exit 1
+    fi
+fi
+
+test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
+DOWNLOAD_DIR=${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
+
+if [ ! -f "${DOWNLOAD_DIR}/amazonlite-${AMAZONLITE_VER}.zip" ]; then
+    echo "ERROR: amazonlite-${AMAZONLITE_VER}.zip not found in ${DOWNLOAD_DIR}!" >&2
+    exit 1
+elif [ ! -d "${AUTOSDK_EXTRAS_DIR}" ]; then
+    echo "ERROR: Directory ${AUTOSDK_EXTRAS_DIR} not present!" >&2
+    exit 1
+fi
+cd "${AUTOSDK_EXTRAS_DIR}"
+if [ ! -d amazonlite ]; then
+    echo "Extracting ${DOWNLOAD_DIR}/amazonlite-${AMAZONLITE_VER}.zip"
+    unzip -q "${DOWNLOAD_DIR}/amazonlite-${AMAZONLITE_VER}.zip" || exit 1
+    cd amazonlite
+    echo "Patching ${AMAZONLITE_DIR}"
+    patch -p0 < "${AMAZONLITE_PATCH}"
+else
+    cat <<-EOF
+The amazonlite ${AMAZONLITE_VER} wakeword engine is already installed.
+To force reinstallation, manually remove the directory:
+           ${AMAZONLITE_DIR}
+
+EOF
+fi
+
+popd >/dev/null 2>&1
index e849128..4917a96 100644 (file)
@@ -7,4 +7,9 @@ authors: Scott Murray <scott.murray@konsulko.com>
 
 Enables building the Amazon Alexa voiceagent binding with included wakeword engine support.
 
-Note that this features assumes that the amazonlite wakeword engine ZIP file (e.g. amazonlite-2.0.zip) containing the required additional files has been decompressed to external/alexa-auto-sdk/extensions/extras/amazonlite in the tree.  Without this, attempting to build with bitbake will fail. Please contact your Amazon Alexa developer account representative if you wish to obtain the wakeword engine.
+Note that this features assumes that the amazonlite wakeword engine ZIP file
+(i.e. amazonlite-2.3.zip) is present in the directory pointed at by the
+XDG_DOWNLOAD_DIR environment variable if it is set, and $HOME/Downloads
+otherwise.  The zip file will be extracted into place in the alexa-auto-sdk
+repository (at external/alexa-auto-sdk/extensions/extra/amazonlite), and
+patched to work with the version of Yocto used by AGL.
diff --git a/templates/feature/agl-voiceagent-alexa-wakeword/amazonlite-2.3.patch b/templates/feature/agl-voiceagent-alexa-wakeword/amazonlite-2.3.patch
new file mode 100644 (file)
index 0000000..0db3a0a
--- /dev/null
@@ -0,0 +1,31 @@
+--- meta-aac-amazonlite/recipes-avs/avs-device-sdk/avs-device-sdk_%.bbappend.bak       2021-02-01 16:41:34.464564753 -0500
++++ meta-aac-amazonlite/recipes-avs/avs-device-sdk/avs-device-sdk_%.bbappend   2021-02-01 16:41:54.392457938 -0500
+@@ -3,6 +3,8 @@
+ SRC_URI += "file://${AMAZONLITE_PACKAGES}/${WRAPPER_NAME}-${WRAPPER_VERSION}.tgz"
++inherit python3native
++
+ AMAZONLITE_CPP_MODEL_NAME ?= "D.en-US.alexa.cpp"
+ AMAZONLITE_CPP_MODEL_PATH = "${STAGING_DIR_HOST}${datadir}/pryon-lite/models"
+@@ -19,5 +21,5 @@
+ PACKAGECONFIG += "amazonlite"
+ do_configure_prepend() {
+-      ${WORKDIR}/${WRAPPER_NAME}/apply_adapter.py ${S}
+-}
+\ No newline at end of file
++      ${PYTHON} ${WORKDIR}/${WRAPPER_NAME}/apply_adapter.py ${S}
++}
+--- meta-aac-amazonlite/conf/layer.conf.bak    2021-02-01 17:44:07.559285446 -0500
++++ meta-aac-amazonlite/conf/layer.conf        2021-02-01 17:44:42.847875916 -0500
+@@ -9,6 +9,8 @@
+ BBFILE_PATTERN_aac-amazonlite = "^${LAYERDIR}/"
+ BBFILE_PRIORITY_aac-amazonlite = "6"
++LAYERSERIES_COMPAT_aac-amazonlite = "dunfell"
++
+ AMAZONLITE ?= "ON"
+ AMAZONLITE_PACKAGES = "${LAYERDIR}/packages"