1
0
mirror of https://github.com/rhasspy/rhasspy.git synced 2022-02-12 01:59:45 +03:00
Files
rhasspy-voice-assistant/scripts/build/build-kaldi.sh
2020-05-12 11:15:05 -04:00

54 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
: "${MAKE_THREADS=4}"
if [[ -z "$3" ]]; then
echo "Usage: build-kaldi kaldi.tar.gz build/ output.tar.gz"
exit 1
fi
kaldi_src="$(realpath "$1")"
build_dir="$(realpath "$2")"
output_file="$(realpath "$3")"
# Kaldi
kaldi_build="${build_dir}/kaldi"
echo "Building Kaldi in ${kaldi_build} from ${kaldi_src}"
mkdir -p "${kaldi_build}"
tar -C "${kaldi_build}" --strip-components=1 -xf "${kaldi_src}"
cd "${kaldi_build}/tools" && \
make -j "${MAKE_THREADS}"
cd "${kaldi_build}/src" && \
./configure --shared --mathlib=ATLAS --use-cuda=no
# Fix things for aarch64 (arm64v8)
if [ "$(uname --m)" = "aarch64" ]; then
sed -i 's/-msse -msse2/-ftree-vectorize/g' "${kaldi_build}/src/kaldi.mk"
fi
cd "${kaldi_build}/src" && \
make depend -j "${MAKE_THREADS}" && \
make -j "${MAKE_THREADS}"
# Create dist
dist_dir="${kaldi_build}/dist"
mkdir -p "${dist_dir}/kaldi/egs" && \
cp -R "${kaldi_build}/egs/wsj" "${dist_dir}/kaldi/egs/" && \
rsync -av --exclude='*.o' --exclude='*.cc' "${kaldi_build}/src/bin/" "${dist_dir}/kaldi/" && \
cp "${kaldi_build}/src/lib"/*.so* "${dist_dir}/kaldi/" && \
rsync -av --include='*.so*' --include='fst' --exclude='*' "${kaldi_build}/tools/openfst/lib/" "${dist_dir}/kaldi/" && \
cp "${kaldi_build}/tools/openfst/bin/" "${dist_dir}/kaldi/"
# Fix rpaths
# shellcheck disable=SC2016
find "${dist_dir}/kaldi/" -type f -exec patchelf --set-rpath '$ORIGIN' {} \;
# Strip binaries
echo "Tar-ing binary files to ${output_file}"
cd "${dist_dir}" && \
(strip --strip-unneeded kaldi/* || true) && \
tar -czf "${output_file}" kaldi