Sync MicroslopSam VOX mode and path configuration
This commit is contained in:
@@ -1,22 +1,41 @@
|
||||
#!/bin/sh
|
||||
# One-shot installer for MicroslopSam. Runs all setup steps, idempotently:
|
||||
# 1. system dependencies (Wine, Winelib, helpers; needs sudo)
|
||||
# 2. wine prefix + SAPI4 runtime + MSTTS voices + registration
|
||||
# 3. Flextalk extraction + voices + registration
|
||||
# 4. host build (Winelib and PE)
|
||||
# 5. quick voice check
|
||||
# 1. record resolved paths in setup/microslopsam.env
|
||||
# 2. system dependencies (Wine, Winelib, helpers; needs sudo)
|
||||
# 3. wine prefix + SAPI4 runtime + MSTTS voices + registration
|
||||
# 4. Flextalk extraction + voices + registration
|
||||
# 5. host build (Winelib and PE)
|
||||
# 6. quick voice check
|
||||
#
|
||||
# Usage: setup/install.sh
|
||||
# Re-running is safe.
|
||||
# Paths and tools come from setup/config.sh. Override anything with environment
|
||||
# variables (they win over setup/microslopsam.env), for example:
|
||||
# MICROSLOP_ASSETS=/srv/assets MICROSLOP_PREFIX=~/.wine-sam setup/install.sh
|
||||
# Set MICROSLOP_UPDATE_ENV=1 to rewrite an existing microslopsam.env.
|
||||
set -eu
|
||||
|
||||
HERE=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
ROOT=$(CDPATH= cd -- "$HERE/.." && pwd)
|
||||
ASSETS=${ASSETS:-$ROOT/../Microsoft-Sam-Mary-Mike-TruVoice-WSAPI4}
|
||||
FLEXTALK_DIR=${FLEXTALK_DIR:-$ROOT/../flextalk}
|
||||
. "$HERE/config.sh"
|
||||
|
||||
log() { printf '\n== %s\n' "$*"; }
|
||||
|
||||
# 0) record the resolved configuration ----------------------------------------
|
||||
ENVFILE="$HERE/microslopsam.env"
|
||||
if [ ! -f "$ENVFILE" ] || [ "${MICROSLOP_UPDATE_ENV:-0}" = "1" ]; then
|
||||
{
|
||||
echo "# Generated by setup/install.sh -- safe to edit or delete."
|
||||
echo "# Values are defaults; environment variables take precedence."
|
||||
printf ': "${MICROSLOP_ROOT:=%s}"\n' "$MICROSLOP_ROOT"
|
||||
printf ': "${MICROSLOP_BUILD:=%s}"\n' "$MICROSLOP_BUILD"
|
||||
printf ': "${MICROSLOP_PREFIX:=%s}"\n' "$MICROSLOP_PREFIX"
|
||||
printf ': "${MICROSLOP_ASSETS:=%s}"\n' "$MICROSLOP_ASSETS"
|
||||
printf ': "${MICROSLOP_FLEXTALK_DIR:=%s}"\n' "$MICROSLOP_FLEXTALK_DIR"
|
||||
printf ': "${MICROSLOP_SPEECH_H_DIR:=%s}"\n' "$MICROSLOP_SPEECH_H_DIR"
|
||||
printf ': "${MICROSLOP_DISPLAY:=%s}"\n' "$MICROSLOP_DISPLAY"
|
||||
} > "$ENVFILE"
|
||||
chmod 644 "$ENVFILE" 2>/dev/null || true
|
||||
log "configuration written to $ENVFILE"
|
||||
fi
|
||||
|
||||
# 1) system dependencies -----------------------------------------------------
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
log "installing system dependencies"
|
||||
@@ -28,18 +47,19 @@ fi
|
||||
|
||||
# 2) SAPI4 runtime + MSTTS voices --------------------------------------------
|
||||
log "setting up wine prefix, SAPI4 runtime and MSTTS voices"
|
||||
"$HERE/setup-prefix.sh" "$ASSETS"
|
||||
"$HERE/setup-prefix.sh" "$MICROSLOP_ASSETS"
|
||||
|
||||
# 3) Flextalk voices ----------------------------------------------------------
|
||||
EXTRACTED="$FLEXTALK_DIR/extracted/TTS_Executables"
|
||||
EXTRACTED="$MICROSLOP_FLEXTALK_DIR/extracted/TTS_Executables"
|
||||
if [ ! -d "$EXTRACTED/EngineDLLs" ]; then
|
||||
CAB=""
|
||||
for c in "$FLEXTALK_DIR/installer/flextalk/data1.cab" \
|
||||
"$ASSETS/flextalk/data1.cab"; do
|
||||
for c in "$MICROSLOP_FLEXTALK_DIR/data1.cab" \
|
||||
"$MICROSLOP_FLEXTALK_DIR/installer/flextalk/data1.cab" \
|
||||
"$MICROSLOP_ASSETS/flextalk/data1.cab"; do
|
||||
if [ -f "$c" ]; then CAB="$c"; break; fi
|
||||
done
|
||||
if [ -z "$CAB" ]; then
|
||||
echo "Flextalk data1.cab not found; set FLEXTALK_DIR to the archive dir" >&2
|
||||
echo "Flextalk data1.cab not found; set MICROSLOP_FLEXTALK_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
command -v unshield >/dev/null 2>&1 || {
|
||||
@@ -47,20 +67,24 @@ if [ ! -d "$EXTRACTED/EngineDLLs" ]; then
|
||||
exit 1
|
||||
}
|
||||
log "extracting Flextalk installer ($CAB)"
|
||||
rm -rf "$FLEXTALK_DIR/extracted"
|
||||
unshield -O -d "$FLEXTALK_DIR/extracted" x "$CAB" >/dev/null
|
||||
rm -rf "$MICROSLOP_FLEXTALK_DIR/extracted"
|
||||
unshield -O -d "$MICROSLOP_FLEXTALK_DIR/extracted" x "$CAB" >/dev/null
|
||||
fi
|
||||
log "installing Flextalk voices"
|
||||
"$HERE/setup-flextalk.sh" "$EXTRACTED"
|
||||
|
||||
# 4) host build ---------------------------------------------------------------
|
||||
log "building the host"
|
||||
mkdir -p "$ROOT/build"
|
||||
winegcc -m32 -O2 -o "$ROOT/build/sapi4host-winlib" "$ROOT/host/sapi4host.c" \
|
||||
-I"$ROOT/../reference" -lole32 -luser32 -ladvapi32
|
||||
[ -f "$MICROSLOP_SPEECH_H_DIR/speech.h" ] || {
|
||||
echo "speech.h not found in $MICROSLOP_SPEECH_H_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
mkdir -p "$MICROSLOP_BUILD"
|
||||
winegcc -m32 -O2 -o "$MICROSLOP_BUILD/sapi4host-winlib" "$MICROSLOP_ROOT/host/sapi4host.c" \
|
||||
-I"$MICROSLOP_SPEECH_H_DIR" -lole32 -luser32 -ladvapi32
|
||||
if command -v i686-w64-mingw32-gcc >/dev/null 2>&1; then
|
||||
i686-w64-mingw32-gcc -O2 -static -o "$ROOT/build/sapi4host.exe" \
|
||||
"$ROOT/host/sapi4host.c" -I"$ROOT/../reference" \
|
||||
i686-w64-mingw32-gcc -O2 -static -o "$MICROSLOP_BUILD/sapi4host.exe" \
|
||||
"$MICROSLOP_ROOT/host/sapi4host.c" -I"$MICROSLOP_SPEECH_H_DIR" \
|
||||
-lole32 -luser32 -ladvapi32 -luuid
|
||||
fi
|
||||
|
||||
@@ -72,6 +96,12 @@ cat <<EOF
|
||||
|
||||
Done.
|
||||
|
||||
Configuration: $ENVFILE
|
||||
MICROSLOP_ROOT=$MICROSLOP_ROOT
|
||||
MICROSLOP_PREFIX=$MICROSLOP_PREFIX
|
||||
MICROSLOP_ASSETS=$MICROSLOP_ASSETS
|
||||
MICROSLOP_FLEXTALK_DIR=$MICROSLOP_FLEXTALK_DIR
|
||||
|
||||
Veskslop configuration:
|
||||
VESKSLOP_TTS_CMD="$HERE/veskslop-tts.sh {out} {text_file}"
|
||||
VESKSLOP_TTS_VOICES="\$($HERE/veskslop-tts.sh --voices)"
|
||||
|
||||
Reference in New Issue
Block a user