From 3eb1a00c35bd817472067a153c793c9c7aef00a3 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 1 Feb 2021 18:06:35 -0500 Subject: meta-speech-framework: Update Alexa Auto SDK wakeword support for v2.3 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 Change-Id: I75783860e4ce332ba89e8a7768fe4ff7367bcd93 --- .../agl-voiceagent-alexa-wakeword/50_setup.sh | 45 ++++++++++++++++++++++ ...README_feature_agl-voiceagent-alexa-wakeword.md | 7 +++- .../amazonlite-2.3.patch | 31 +++++++++++++++ 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 templates/feature/agl-voiceagent-alexa-wakeword/50_setup.sh create mode 100644 templates/feature/agl-voiceagent-alexa-wakeword/amazonlite-2.3.patch 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 index 00000000..6e1d2503 --- /dev/null +++ b/templates/feature/agl-voiceagent-alexa-wakeword/50_setup.sh @@ -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 diff --git a/templates/feature/agl-voiceagent-alexa-wakeword/README_feature_agl-voiceagent-alexa-wakeword.md b/templates/feature/agl-voiceagent-alexa-wakeword/README_feature_agl-voiceagent-alexa-wakeword.md index e8491289..4917a96f 100644 --- a/templates/feature/agl-voiceagent-alexa-wakeword/README_feature_agl-voiceagent-alexa-wakeword.md +++ b/templates/feature/agl-voiceagent-alexa-wakeword/README_feature_agl-voiceagent-alexa-wakeword.md @@ -7,4 +7,9 @@ authors: Scott Murray 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 index 00000000..0db3a0a5 --- /dev/null +++ b/templates/feature/agl-voiceagent-alexa-wakeword/amazonlite-2.3.patch @@ -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" + -- cgit 1.2.3-korg