30 Commits

Author SHA1 Message Date
Michael Hansen 0c37c88e61 Update README.md 2020-06-08 09:33:28 -04:00
Michael Hansen 50f05506a2 Some extra README info 2020-06-08 09:32:00 -04:00
Michael Hansen b62068da69 Can't use classes in divs in the README, I guess 2020-06-08 09:29:55 -04:00
Michael Hansen f69d7484ba Update README to point to 2.5 repo 2020-06-08 09:27:56 -04:00
Michael Hansen e478765b4e Merge branch 'master' of https://github.com/synesthesiam/rhasspy 2020-06-02 09:44:51 -04:00
Michael Hansen 8bf673c412 Merge pull request #236 from Mic92/intent-docs
Intent docs
2020-06-02 09:44:39 -04:00
Michael Hansen 8854f26dc1 Merge branch 'master' of https://github.com/synesthesiam/rhasspy 2020-06-02 09:40:21 -04:00
Michael Hansen cf8f2319b8 Merge pull request #234 from devkid/patch-1
Enable speech response for Home Assistant intent handler
2020-06-02 09:40:06 -04:00
Michael Hansen 782721fab3 Merge branch 'master' of https://github.com/synesthesiam/rhasspy 2020-06-02 09:39:10 -04:00
Michael Hansen 43dc7a07c9 Add mosquitto tools to Docker runtime image 2020-06-02 09:38:49 -04:00
Jörg Thalheim be42447620 docs: note that mycroft adapt does not convert integers back yet. 2020-06-01 23:45:32 +01:00
Alfred Krohmer 3a884888c4 Enable speech response for Home Assistant intent handler 2020-06-01 21:37:34 +02:00
Michael Hansen 3133666390 Merge pull request #230 from Romkabouter/master
Fix Google Wavenet TTS
2020-05-29 16:16:13 -04:00
Paul Romkes ff0aea4177 Fix Google Wavenet TTS 2020-05-29 20:49:31 +02:00
Michael Hansen fa418d3129 Ensure setuptools is in Docker runtime image 2020-05-26 13:39:59 -04:00
Michael Hansen d4314a85d9 Force pip in runtime Docker image 2020-05-26 13:38:19 -04:00
Michael Hansen 3d42551bfc Merge pull request #227 from kroka/patch-2
force download if deletion is enabled
2020-05-26 13:33:44 -04:00
kroka 6411924cf2 force download if deletion is enabled
ignore that file might exist already,
change motivated by #213
2020-05-22 14:33:24 +02:00
Michael Hansen 77d2196f00 Add /ssl prefix for Hass.IO SSL settings 2020-04-23 16:59:29 -04:00
Michael Hansen 3c53cd0236 Fix ssl_context 2020-04-20 08:54:33 -04:00
Michael Hansen 46a75ec83e Use ssl context in aiohttp 2020-04-19 15:03:50 -04:00
Michael Hansen 3e9c4bef68 Clean up docker file and docker run.sh 2020-04-19 11:39:46 -04:00
Michael Hansen 465d1e61e0 Add asoundrc to Hass.io config path in docker run 2020-04-19 09:19:30 -04:00
Michael Hansen 563fcfcd49 Merge pull request #207 from pheelee/master
fixes startup on hass.io
2020-04-19 09:10:25 -04:00
pheelee 0ff965a965 fixes startup on hass.io 2020-04-19 12:35:56 +02:00
Michael Hansen 998eff8708 Merge branch 'master' of pumpkin.lan:Mike/Projects/rhasspy 2020-04-15 16:48:35 -04:00
Michael Hansen 1dcf984669 Fix Docker tag 2020-04-15 16:48:18 -04:00
Michael Hansen 21c2b2ef9d Only use system Python pre-venv create 2020-04-15 16:47:37 -04:00
Michael Hansen 958c12cfb4 Merge branch 'master' of pumpkin.lan:Mike/Projects/rhasspy 2020-04-15 16:03:39 -04:00
Michael Hansen 6dbc8dc35e Fix arm64 arch 2020-04-10 13:45:07 -04:00
39 changed files with 67 additions and 979 deletions
+7 -6
View File
@@ -37,19 +37,20 @@ ENV RHASSPY_VENV ${RHASSPY_APP}/.venv
WORKDIR /
COPY --from=build ${RHASSPY_VENV} ${RHASSPY_VENV}
COPY --from=build ${RHASSPY_APP}/opt/kaldi/ ${RHASSPY_APP}/opt/kaldi/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
python3 python3-dev \
python3 python3-dev python3-setuptools python3-pip python3-venv \
bash jq unzip curl perl \
libportaudio2 libatlas3-base \
libgfortran4 ca-certificates \
sox espeak flite libttspico-utils alsa-utils lame \
libasound2-plugins \
libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev \
gstreamer1.0-tools gstreamer1.0-plugins-good
COPY --from=build ${RHASSPY_VENV} ${RHASSPY_VENV}
COPY --from=build ${RHASSPY_APP}/opt/kaldi/ ${RHASSPY_APP}/opt/kaldi/
gstreamer1.0-tools gstreamer1.0-plugins-good \
mosquitto-clients
# Web interface
ADD download/rhasspy-web-dist.tar.gz ${RHASSPY_APP}/
@@ -76,4 +77,4 @@ COPY VERSION ${RHASSPY_APP}/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX ${RHASSPY_APP}/opt
ENTRYPOINT ["/run.sh"]
ENTRYPOINT ["/run.sh"]
+3 -1
View File
@@ -3,6 +3,8 @@ SHELL := bash
DOCKER_PLATFORMS = linux/amd64,linux/arm64,linux/arm/v7
all: docker
# -----------------------------------------------------------------------------
# Docker
# -----------------------------------------------------------------------------
@@ -10,7 +12,7 @@ DOCKER_PLATFORMS = linux/amd64,linux/arm64,linux/arm/v7
docker: web-dist
docker buildx build . \
--platform $(DOCKER_PLATFORMS) \
--tag rhasspy/rhasspy-server:latest \
--tag synesthesiam/rhasspy-server:latest \
--push
# -----------------------------------------------------------------------------
+8 -2
View File
@@ -1,8 +1,14 @@
![Rhasspy logo](docs/img/rhasspy.svg)
# Rhasspy has [moved and improved!](https://github.com/rhasspy/rhasspy)
This repository contains code for an older version of Rhasspy (2.4).
---
Rhasspy (pronounced RAH-SPEE) is an offline voice assistant toolkit inspired by [Jasper](https://jasperproject.github.io/) that [supports many languages](#supported-languages). It works well with [Home Assistant](https://www.home-assistant.io/), [Hass.io](https://www.home-assistant.io/hassio/), and [Node-RED](https://nodered.org).
* [Documentation](https://rhasspy.readthedocs.io/)
**A newer version of Rhasspy (2.5) is available at [https://github.com/rhasspy/rhasspy](https://github.com/rhasspy/rhasspy)**
* [Documentation](https://rhasspy.readthedocs.io/en/v2.4.20/)
* [Discussion](https://community.rhasspy.org)
* [Video Introduction](https://www.youtube.com/watch?v=ijKTR_GqWwA)
* [Hass.IO Add-On Repository](https://github.com/synesthesiam/hassio-addons)
+12 -12
View File
@@ -13,7 +13,7 @@ DEFINE_boolean 'system' true 'Install system dependencies'
DEFINE_boolean 'flair' false 'Install flair'
DEFINE_boolean 'precise' true 'Install Mycroft Precise'
DEFINE_boolean 'adapt' true 'Install Mycroft Adapt'
DEFINE_boolean 'google' false 'Install Google Text to Speech'
DEFINE_boolean 'google' true 'Install Google Text to Speech'
DEFINE_boolean 'kaldi' true 'Install Kaldi'
DEFINE_boolean 'tools' true 'Install Rhasspy tools'
DEFINE_boolean 'web' true 'Install web UI'
@@ -170,7 +170,7 @@ case "${CPU_ARCH}" in
FRIENDLY_ARCH=armhf
;;
arm64v8)
aarch64|arm64v8)
FRIENDLY_ARCH=aarch64
;;
@@ -234,11 +234,11 @@ export LD_LIBRARY_PATH="${venv}/lib:${LD_LIBRARY_PATH}"
source "${venv}/bin/activate"
echo "Upgrading pip"
"${PYTHON}" -m pip install --upgrade pip
python3 -m pip install --upgrade pip
echo "Installing Python requirements"
"${PYTHON}" -m pip install wheel setuptools
"${PYTHON}" -m pip install requests
python3 -m pip install wheel setuptools
python3 -m pip install requests
# pytorch is not available on ARM
case "${CPU_ARCH}" in
@@ -275,18 +275,18 @@ sed -i '/^openfst/d' "${requirements_file}"
python3 -m pip install -r "${requirements_file}"
# Install Python openfst wrapper
"${PYTHON}" -m pip install \
--global-option=build_ext \
--global-option="-I${venv}/include" \
--global-option="-L${venv}/lib" \
-r <(grep '^openfst' "${this_dir}/requirements.txt")
python3 -m pip install \
--global-option=build_ext \
--global-option="-I${venv}/include" \
--global-option="-L${venv}/lib" \
-r <(grep '^openfst' "${this_dir}/requirements.txt")
# -----------------------------------------------------------------------------
# Pocketsphinx for Python
# -----------------------------------------------------------------------------
pocketsphinx_file="${download_dir}/pocketsphinx-python.tar.gz"
"${PYTHON}" -m pip install "${pocketsphinx_file}"
python3 -m pip install "${pocketsphinx_file}"
# -----------------------------------------------------------------------------
# Snowboy
@@ -295,7 +295,7 @@ pocketsphinx_file="${download_dir}/pocketsphinx-python.tar.gz"
case "${CPU_ARCH}" in
x86_64|armv7l)
snowboy_file="${download_dir}/snowboy-1.3.0.tar.gz"
"${PYTHON}" -m pip install "${snowboy_file}"
python3 -m pip install "${snowboy_file}"
;;
*)
+18 -5
View File
@@ -1,5 +1,4 @@
#!/usr/bin/env bash
this_dir="$( cd "$( dirname "$0" )" && pwd )"
# Try to detemine where Rhasspy is located
if [[ -z "${RHASSPY_APP}" ]]; then
@@ -16,7 +15,21 @@ if [[ -f "${CONFIG_PATH}" ]]; then
# Hass.IO configuration
profile_name="$(jq --raw-output '.profile_name' "${CONFIG_PATH}")"
profile_dir="$(jq --raw-output '.profile_dir' "${CONFIG_PATH}")"
RHASSPY_ARGS="--profile \"${profile_name}\" --user-profiles \"${profile_dir}\""
RHASSPY_ARGS=('--profile' "${profile_name}" '--user-profiles' "${profile_dir}")
# Copy user-defined asoundrc to root
asoundrc="$(jq --raw-output '.asoundrc' "${CONFIG_PATH}")"
if [[ ! -z "${asoundrc}" ]]; then
echo "${asoundrc}" > /root/.asoundrc
fi
# Add SSL settings
ssl="$(jq --raw-output '.ssl' "${CONFIG_PATH}")"
if [[ "${ssl}" == 'true' ]]; then
certfile="$(jq --raw-output '.certfile' "${CONFIG_PATH}")"
keyfile="$(jq --raw-output '.keyfile' "${CONFIG_PATH}")"
RHASSPY_ARGS+=('--ssl' "/ssl/${certfile}" "/ssl/${keyfile}")
fi
fi
RHASSPY_VENV="${RHASSPY_APP}/.venv"
@@ -27,10 +40,10 @@ if [[ -d "${RHASSPY_VENV}" ]]; then
export LD_LIBRARY_PATH="${RHASSPY_VENV}/lib:${LD_LIBRARY_PATH}"
fi
cd "${RHASSPY_APP}"
cd "${RHASSPY_APP}" || exit 1
if [[ -z "${RHASSPY_ARGS}" ]]; then
if [[ -z "${RHASSPY_ARGS[*]}" ]]; then
python3 app.py "$@"
else
python3 app.py "${RHASSPY_ARGS}" "$@"
python3 app.py "${RHASSPY_ARGS[@]}" "$@"
fi
-52
View File
@@ -1,52 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
QEMU
SYSTEM_DEPENDENCIES
RHASSPY_TOOLS
PYTHON_REQUIREMENTS
PYTHON_POCKETSPHINX
SNOWBOY
TTS
KALDI
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
GSTREAMER
PULSEAUDIO
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
RHASSPY_USER
PROFILES
RHASSPY_CODE
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
@@ -1 +0,0 @@
COPY profiles/ ${RHASSPY_APP}/profiles/
-1
View File
@@ -1 +0,0 @@
ENV RHASSPY_APP /usr/share/rhasspy
@@ -1,207 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/openfst-1.6.2-1_${BUILD_ARCH}.deb /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then \
apt-get install --no-install-recommends --yes libfst-dev libfst-tools; \
else \
dpkg -i /openfst-1.6.2-1_${BUILD_ARCH}.deb; \
rm /openfst*.deb; \
fi
RHASSPY_TOOLS
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
RUN apt-get install --no-install-recommends --yes flite libttspico-utils
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
ENV RHASSPY_APP /usr/share/rhasspy
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
COPY profiles/zh/profile.json \
profiles/zh/custom_words.txt \
profiles/zh/espeak_phonemes.txt \
profiles/zh/phoneme_examples.txt \
profiles/zh/frequent_words.txt \
profiles/zh/sentences.ini \
profiles/zh/stop_words.txt ${RHASSPY_APP}/profiles/zh/
COPY profiles/hi/ \
profiles/hi/profile.json \
profiles/hi/custom_words.txt \
profiles/hi/espeak_phonemes.txt \
profiles/hi/phoneme_examples.txt \
profiles/hi/frequent_words.txt \
profiles/hi/sentences.ini \
profiles/hi/stop_words.txt ${RHASSPY_APP}/profiles/hi/
COPY profiles/el/profile.json \
profiles/el/custom_words.txt \
profiles/el/espeak_phonemes.txt \
profiles/el/phoneme_examples.txt \
profiles/el/frequent_words.txt \
profiles/el/sentences.ini \
profiles/el/stop_words.txt ${RHASSPY_APP}/profiles/el/
COPY profiles/de/profile.json \
profiles/de/custom_words.txt \
profiles/de/espeak_phonemes.txt \
profiles/de/phoneme_examples.txt \
profiles/de/frequent_words.txt \
profiles/de/sentences.ini \
profiles/de/stop_words.txt ${RHASSPY_APP}/profiles/de/
COPY profiles/it/profile.json \
profiles/it/custom_words.txt \
profiles/it/espeak_phonemes.txt \
profiles/it/phoneme_examples.txt \
profiles/it/frequent_words.txt \
profiles/it/sentences.ini \
profiles/it/stop_words.txt ${RHASSPY_APP}/profiles/it/
COPY profiles/es/profile.json \
profiles/es/custom_words.txt \
profiles/es/espeak_phonemes.txt \
profiles/es/phoneme_examples.txt \
profiles/es/frequent_words.txt \
profiles/es/sentences.ini \
profiles/es/stop_words.txt ${RHASSPY_APP}/profiles/es/
COPY profiles/fr/profile.json \
profiles/fr/custom_words.txt \
profiles/fr/espeak_phonemes.txt \
profiles/fr/phoneme_examples.txt \
profiles/fr/frequent_words.txt \
profiles/fr/sentences.ini \
profiles/fr/stop_words.txt ${RHASSPY_APP}/profiles/fr/
COPY profiles/ru/profile.json \
profiles/ru/custom_words.txt \
profiles/ru/espeak_phonemes.txt \
profiles/ru/phoneme_examples.txt \
profiles/ru/frequent_words.txt \
profiles/ru/sentences.ini \
profiles/ru/stop_words.txt ${RHASSPY_APP}/profiles/ru/
COPY profiles/nl/profile.json \
profiles/nl/custom_words.txt \
profiles/nl/espeak_phonemes.txt \
profiles/nl/phoneme_examples.txt \
profiles/nl/frequent_words.txt \
profiles/nl/sentences.ini \
profiles/nl/stop_words.txt ${RHASSPY_APP}/profiles/nl/
COPY profiles/vi/profile.json \
profiles/vi/custom_words.txt \
profiles/vi/espeak_phonemes.txt \
profiles/vi/phoneme_examples.txt \
profiles/vi/frequent_words.txt \
profiles/vi/sentences.ini \
profiles/vi/stop_words.txt ${RHASSPY_APP}/profiles/vi/
COPY profiles/pt/profile.json \
profiles/pt/custom_words.txt \
profiles/pt/espeak_phonemes.txt \
profiles/pt/phoneme_examples.txt \
profiles/pt/frequent_words.txt \
profiles/pt/sentences.ini \
profiles/pt/stop_words.txt ${RHASSPY_APP}/profiles/pt/
COPY profiles/sv/profile.json \
profiles/sv/custom_words.txt \
profiles/sv/espeak_phonemes.txt \
profiles/sv/phoneme_examples.txt \
profiles/sv/frequent_words.txt \
profiles/sv/sentences.ini \
profiles/sv/stop_words.txt ${RHASSPY_APP}/profiles/sv/
COPY profiles/ca/profile.json \
profiles/ca/custom_words.txt \
profiles/ca/espeak_phonemes.txt \
profiles/ca/phoneme_examples.txt \
profiles/ca/frequent_words.txt \
profiles/ca/sentences.ini \
profiles/ca/stop_words.txt ${RHASSPY_APP}/profiles/ca/
COPY profiles/en/profile.json \
profiles/en/custom_words.txt \
profiles/en/espeak_phonemes.txt \
profiles/en/phoneme_examples.txt \
profiles/en/frequent_words.txt \
profiles/en/sentences.ini \
profiles/en/stop_words.txt ${RHASSPY_APP}/profiles/en/
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
@@ -1,96 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/openfst-1.6.2-1_${BUILD_ARCH}.deb /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then \
apt-get install --no-install-recommends --yes libfst-dev libfst-tools; \
else \
dpkg -i /openfst-1.6.2-1_${BUILD_ARCH}.deb; \
rm /openfst*.deb; \
fi
RHASSPY_TOOLS
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
RUN apt-get install --no-install-recommends --yes flite libttspico-utils
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
ENV RHASSPY_APP /usr/share/rhasspy
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
COPY profiles/en/ ${RHASSPY_APP}/profiles/en/
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
@@ -1,113 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/openfst-1.6.2-1_${BUILD_ARCH}.deb /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then \
apt-get install --no-install-recommends --yes libfst-dev libfst-tools; \
else \
dpkg -i /openfst-1.6.2-1_${BUILD_ARCH}.deb; \
rm /openfst*.deb; \
fi
RHASSPY_TOOLS
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
RUN apt-get install --no-install-recommends --yes flite libttspico-utils
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
RUN apt-get install -y pulseaudio
COPY etc/pulseaudio.client.conf /etc/pulse/client.conf
# Create new user
ENV UNAME=rhasspy
RUN export UNAME=$UNAME UID=1000 GID=1000 && \
mkdir -p "/home/${UNAME}" && \
echo "${UNAME}:x:${UID}:${GID}:${UNAME} User,,,:/home/${UNAME}:/bin/bash" >> /etc/passwd && \
echo "${UNAME}:x:${UID}:" >> /etc/group && \
mkdir -p /etc/sudoers.d && \
echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${UNAME} && \
chmod 0440 /etc/sudoers.d/${UNAME} && \
chown ${UID}:${GID} -R /home/${UNAME} && \
gpasswd -a ${UNAME} audio
ENV RHASSPY_APP /home/${UNAME}
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
# Switch to new user
USER $UNAME
ENV HOME /home/${UNAME}
COPY profiles/en/ ${RHASSPY_APP}/profiles/en/
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
@@ -1,91 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/rhasspy-tools_${BUILD_ARCH}.tar.gz /
RUN tar -C /usr -xvf /rhasspy-tools_${BUILD_ARCH}.tar.gz && \
rm -f /rhasspy-tools_${BUILD_ARCH}.tar.gz
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
RUN apt-get install --no-install-recommends --yes flite libttspico-utils lame
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
ENV RHASSPY_APP /usr/share/rhasspy
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
COPY profiles/ ${RHASSPY_APP}/profiles/
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
COPY VERSION ${RHASSPY_APP}/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
@@ -1,91 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libfst-dev libfst-tools \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/rhasspy-tools_${BUILD_ARCH}.tar.gz /
RUN tar -C /usr -xvf /rhasspy-tools_${BUILD_ARCH}.tar.gz && \
rm -f /rhasspy-tools_${BUILD_ARCH}.tar.gz
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
RUN apt-get install --no-install-recommends --yes flite libttspico-utils
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
ENV RHASSPY_APP /usr/share/rhasspy
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
COPY profiles/en/ ${RHASSPY_APP}/profiles/en/
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
@@ -1,108 +0,0 @@
ARG BUILD_FROM
FROM $BUILD_FROM
LABEL maintainer="Michael Hansen <hansen.mike@gmail.com>"
ARG BUILD_ARCH
ARG CPU_ARCH
ENV LANG C.UTF-8
ARG MAKE_THREADS=4
WORKDIR /
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libfst-dev libfst-tools \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/rhasspy-tools_${BUILD_ARCH}.tar.gz /
RUN tar -C /usr -xvf /rhasspy-tools_${BUILD_ARCH}.tar.gz && \
rm -f /rhasspy-tools_${BUILD_ARCH}.tar.gz
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
RUN apt-get install --no-install-recommends --yes flite libttspico-utils
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
RUN ldconfig
# Copy bw and mllr_solve to /usr/bin
RUN find / -name bw -exec cp '{}' /usr/bin/ \;
RUN find / -name mllr_solve -exec cp '{}' /usr/bin/ \;
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
RUN apt-get install -y pulseaudio
COPY etc/pulseaudio.client.conf /etc/pulse/client.conf
# Create new user
ENV UNAME=rhasspy
RUN export UNAME=$UNAME UID=1000 GID=1000 && \
mkdir -p "/home/${UNAME}" && \
echo "${UNAME}:x:${UID}:${GID}:${UNAME} User,,,:/home/${UNAME}:/bin/bash" >> /etc/passwd && \
echo "${UNAME}:x:${UID}:" >> /etc/group && \
mkdir -p /etc/sudoers.d && \
echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${UNAME} && \
chmod 0440 /etc/sudoers.d/${UNAME} && \
chown ${UID}:${GID} -R /home/${UNAME} && \
gpasswd -a ${UNAME} audio
ENV RHASSPY_APP /home/${UNAME}
# Copy script to run
COPY docker/run.sh /run.sh
RUN chmod +x /run.sh
# Switch to new user
USER $UNAME
ENV HOME /home/${UNAME}
COPY profiles/en/ ${RHASSPY_APP}/profiles/en/
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
ENV CONFIG_PATH /data/options.json
ENV KALDI_PREFIX /opt
ENTRYPOINT ["/run.sh"]
-1
View File
@@ -1 +0,0 @@
COPY profiles/en/ ${RHASSPY_APP}/profiles/en/
@@ -1,7 +0,0 @@
COPY download/phonetisaurus-2019.tar.gz /phonetisaurus.tar.gz
RUN cd / && tar -xf phonetisaurus.tar.gz
RUN cd /phonetisaurus && \
./configure && \
make -j $MAKE_THREADS && \
make install && \
rm -rf /phonetisaurus*
@@ -1,18 +0,0 @@
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
COPY download/openfst-1.6.2-1_${BUILD_ARCH}.deb /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then \
apt-get install --no-install-recommends --yes libfst-dev libfst-tools; \
else \
dpkg -i /openfst-1.6.2-1_${BUILD_ARCH}.deb; \
rm /openfst*.deb; \
fi
-67
View File
@@ -1,67 +0,0 @@
#!/usr/bin/env bash
# Directory of *this* script
DIR="$( cd "$( dirname "$0" )" && pwd )"
template="$DIR/Dockerfile.template"
out="$DIR/dockerfiles"
mkdir -p "$out"
# -----------------------------------------------------------------------------
# Uppercases an input string
function upper {
tr '[[:lower:]]' '[[:upper:]]'
}
# Creates m4 "define" statements from text files in one or more directories.
# The contents of dir/file.txt will be the value of variable FILE.
function set_variables {
echo "divert(-1)"
while [[ ! -z "$1" ]]; do
if [[ -d "$1" ]]; then
for var_file in $(find "$1" -type f -name "*.txt"); do
var_name=$(basename "$var_file" .txt | upper)
echo "define(\`$var_name', \`$(cat $var_file)')"
done
elif [[ -f "$1" ]]; then
var_file="$1"
var_name=$(basename "$var_file" .txt | upper)
echo "define(\`$var_name', \`$(cat $var_file)')"
fi
shift
done
echo "divert(0)dnl"
}
# -----------------------------------------------------------------------------
#------------
# From source
#------------
# set_variables "$DIR/shared/" "$DIR/from-source/" \
# "$DIR/alsa/" "$DIR/en_profile/" \
# | cat - "$template" | m4 > "$out/Dockerfile.from-source.alsa.en"
# set_variables "$DIR/shared/" "$DIR/from-source/" \
# "$DIR/pulseaudio/" "$DIR/en_profile/" \
# | cat - "$template" | m4 > "$out/Dockerfile.from-source.pulseaudio.en"
# set_variables "$DIR/shared/" "$DIR/from-source/" \
# "$DIR/alsa/" "$DIR/all_profiles/" \
# | cat - "$template" | m4 > "$out/Dockerfile.from-source.alsa.all"
#-----------
# Pre-built
#-----------
# set_variables "$DIR/shared/" "$DIR/prebuilt/" \
# "$DIR/alsa/" "$DIR/en_profile/" \
# | cat - "$template" | m4 > "$out/Dockerfile.prebuilt.alsa.en"
# set_variables "$DIR/shared/" "$DIR/prebuilt/" \
# "$DIR/pulseaudio/" "$DIR/en_profile/" \
# | cat - "$template" | m4 > "$out/Dockerfile.prebuilt.pulseaudio.en"
set_variables "$DIR/shared/" "$DIR/prebuilt/" \
"$DIR/alsa/" "$DIR/all_profiles/" \
| cat - "$template" | m4 > "$out/Dockerfile.prebuilt.alsa.all"
@@ -1,3 +0,0 @@
COPY download/phonetisaurus-2019_${BUILD_ARCH}.deb /phonetisaurus.deb
RUN dpkg -i /phonetisaurus.deb && \
rm /phonetisaurus.deb
@@ -1,3 +0,0 @@
COPY download/rhasspy-tools_${BUILD_ARCH}.tar.gz /
RUN tar -C /usr -xvf /rhasspy-tools_${BUILD_ARCH}.tar.gz && \
rm -f /rhasspy-tools_${BUILD_ARCH}.tar.gz
@@ -1,10 +0,0 @@
RUN apt-get update && \
apt-get install --no-install-recommends --yes \
bash jq unzip \
python3 python3-pip python3-dev \
build-essential portaudio19-dev swig \
libatlas-base-dev \
sox espeak flite alsa-utils \
git curl \
autoconf libtool automake bison \
sphinxbase-utils sphinxtrain
@@ -1,16 +0,0 @@
RUN apt-get install -y pulseaudio
COPY etc/pulseaudio.client.conf /etc/pulse/client.conf
# Create new user
ENV UNAME=rhasspy
RUN export UNAME=$UNAME UID=1000 GID=1000 && \
mkdir -p "/home/${UNAME}" && \
echo "${UNAME}:x:${UID}:${GID}:${UNAME} User,,,:/home/${UNAME}:/bin/bash" >> /etc/passwd && \
echo "${UNAME}:x:${UID}:" >> /etc/group && \
mkdir -p /etc/sudoers.d && \
echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${UNAME} && \
chmod 0440 /etc/sudoers.d/${UNAME} && \
chown ${UID}:${GID} -R /home/${UNAME} && \
gpasswd -a ${UNAME} audio
ENV RHASSPY_APP /home/${UNAME}
@@ -1,3 +0,0 @@
# Switch to new user
USER $UNAME
ENV HOME /home/${UNAME}
-2
View File
@@ -1,2 +0,0 @@
# Install gstreamer and plugins
RUN apt-get install --no-install-recommends --yes gstreamer1.0-tools gstreamer1.0-plugins-good
-4
View File
@@ -1,4 +0,0 @@
COPY download/kaldi_${BUILD_ARCH}.tar.gz /kaldi.tar.gz
RUN mkdir -p /opt && \
tar -C /opt -xzf /kaldi.tar.gz && \
rm /kaldi.tar.gz
-9
View File
@@ -1,9 +0,0 @@
# Install mitlm
RUN apt-get install --no-install-recommends --yes gfortran
COPY download/mitlm-0.4.2.tar.xz /
RUN cd / && tar -xf mitlm-0.4.2.tar.xz && cd mitlm-0.4.2/ && \
./configure && \
make -j $MAKE_THREADS && \
make install && \
rm -rf /mitlm-0.4.2*
@@ -1,7 +0,0 @@
# Install Mycroft Precise
COPY download/precise-engine_0.3.0_${CPU_ARCH}.tar.gz /precise-engine.tar.gz
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then \
cd / && tar -xzf /precise-engine.tar.gz && \
ln -s /precise-engine/precise-engine /usr/bin/precise-engine && \
rm /precise-engine.tar.gz; \
fi
-9
View File
@@ -1,9 +0,0 @@
# Install Opengrm
COPY download/opengrm-ngram-1.3.3.tar.gz /
RUN cd / && tar -xf opengrm-ngram-1.3.3.tar.gz && \
cd opengrm-ngram-1.3.3 && \
./configure && \
make -j $MAKE_THREADS && \
make install && \
ldconfig && \
rm -rf /opengrm*
@@ -1,4 +0,0 @@
# Install Pocketsphinx Python module with no sound
COPY download/pocketsphinx-python.tar.gz /
RUN python3 -m pip install --no-cache-dir /pocketsphinx-python.tar.gz && \
rm -rf /pocketsphinx-python*
@@ -1,10 +0,0 @@
# Install Python dependencies
RUN python3 -m pip install --no-cache-dir setuptools wheel
RUN apt-get install -y libfreetype6-dev libpng-dev pkg-config libffi-dev libssl-dev
COPY requirements.txt /requirements.txt
RUN if [ "$BUILD_ARCH" != "amd64" ]; then \
grep -v flair /requirements.txt > /requirements-noflair.txt; \
mv /requirements-noflair.txt /requirements.txt; \
fi
RUN python3 -m pip install --no-cache-dir -r /requirements.txt
-2
View File
@@ -1,2 +0,0 @@
COPY etc/qemu-arm-static /usr/bin/
COPY etc/qemu-aarch64-static /usr/bin/
-10
View File
@@ -1,10 +0,0 @@
COPY profiles/defaults.json ${RHASSPY_APP}/profiles/
COPY docker/rhasspy ${RHASSPY_APP}/bin/
COPY dist/ ${RHASSPY_APP}/dist/
COPY etc/wav/* ${RHASSPY_APP}/etc/wav/
COPY rhasspy/profile_schema.json ${RHASSPY_APP}/rhasspy/
COPY rhasspy/train/jsgf2fst/*.py ${RHASSPY_APP}/rhasspy/train/jsgf2fst/
COPY rhasspy/train/*.py ${RHASSPY_APP}/rhasspy/train/
COPY *.py ${RHASSPY_APP}/
COPY rhasspy/*.py ${RHASSPY_APP}/rhasspy/
COPY VERSION ${RHASSPY_APP}/
-3
View File
@@ -1,3 +0,0 @@
# Install snowboy
COPY download/snowboy-1.3.0.tar.gz /
RUN if [ "$BUILD_ARCH" != "aarch64" ]; then pip3 install --no-cache-dir /snowboy-1.3.0.tar.gz; fi
-1
View File
@@ -1 +0,0 @@
RUN apt-get install --no-install-recommends --yes flite libttspico-utils lame
+1 -1
View File
@@ -55,7 +55,7 @@ See `rhasspy.intent.FuzzyWuzzyRecognizer` for details.
## Mycroft Adapt
Recognizes intents using [Mycroft Adapt](https://github.com/MycroftAI/adapt). Works best when you have a medium number of sentences (hundreds to thousands) and need to be able to recognize sentences not seen during training (no new words, though).
Recognizes intents using [Mycroft Adapt](https://github.com/MycroftAI/adapt). Works best when you have a medium number of sentences (hundreds to thousands) and need to be able to recognize sentences not seen during training (no new words, though). This recognizer does not support converters, i.e. numbers are not converted back to integers.
Add to your [profile](profiles.md):
+1
View File
@@ -70,6 +70,7 @@ declare -A CPU_TO_FRIENDLY
CPU_TO_FRIENDLY["x86_64"]="amd64"
CPU_TO_FRIENDLY["armv7l"]="armhf"
CPU_TO_FRIENDLY["arm64v8"]="aarch64"
CPU_TO_FRIENDLY["aarch64"]="aarch64"
CPU_TO_FRIENDLY["armv6l"]="armv6l"
declare -A FRIENDLY_TO_DOCKER
+5 -2
View File
@@ -5,6 +5,7 @@ import logging
import os
import platform
import shutil
import ssl
import tempfile
from collections import defaultdict
from pathlib import Path
@@ -86,6 +87,8 @@ class RhasspyCore:
self.defaults = Profile.load_defaults(system_profiles_dir)
self.loop = asyncio.get_event_loop()
self.ssl_context = ssl.SSLContext()
self._session: Optional[aiohttp.ClientSession] = aiohttp.ClientSession()
self.dialogue_manager: Optional[RhasspyActor] = None
@@ -523,7 +526,7 @@ class RhasspyCore:
self._logger.debug(status)
os.makedirs(os.path.dirname(filename), exist_ok=True)
async with self.session.get(url) as response:
async with self.session.get(url, ssl=self.ssl_context) as response:
with open(filename, "wb") as out_file:
async for chunk in response.content.iter_chunked(chunk_size):
out_file.write(chunk)
@@ -581,7 +584,7 @@ class RhasspyCore:
src_path = dest_path
# Check if file is already in cache
if os.path.exists(src_path) and (os.path.getsize(src_path) > 0):
if not delete and os.path.exists(src_path) and (os.path.getsize(src_path) > 0):
self._logger.debug(
"Using cached %s for %s", src_path, dest_name
)
+12 -1
View File
@@ -77,10 +77,12 @@ class HomeAssistantIntentHandler(RhasspyActor):
self.event_type_format = ""
self.pem_file = ""
self.handle_type: HomeAssistantHandleType = HomeAssistantHandleType.EVENT
self.speech_actor: Optional[RhasspyActor] = None
def to_started(self, from_state: str) -> None:
"""Transition to started state."""
self.hass_config = self.profile.get("home_assistant", {})
self.speech_actor = self.config.get("speech")
# Python format string for generating event type name
self.event_type_format = self.hass_config.get(
@@ -170,6 +172,15 @@ class HomeAssistantIntentHandler(RhasspyActor):
kwargs["verify"] = self.pem_file
response = requests.post(post_url, **kwargs)
response.raise_for_status()
intent = response.json()
self._logger.debug(intent)
# Check for speech
speech_text = intent.get("speech", {}).get("plain", {}).get("speech", "")
if speech_text and self.speech_actor:
self.send(self.speech_actor, SpeakSentence(speech_text))
else:
# Send event
post_url = urljoin(self.hass_config["url"], "api/events/" + event_type)
@@ -184,7 +195,7 @@ class HomeAssistantIntentHandler(RhasspyActor):
response = requests.post(post_url, **kwargs)
self._logger.debug("POSTed intent to %s", post_url)
response.raise_for_status()
response.raise_for_status()
# -------------------------------------------------------------------------