mirror of
https://github.com/Jeuners/Logpy-AgentOne.git
synced 2026-09-09 15:02:33 +02:00
feat: echte Aufnahme statt Sprachsynthese als Ansage (ANSAGE_TTS=datei)
ansage_bauen.sh unterstuetzt jetzt eine vierte Quelle neben piper/say/mistral: "datei" nimmt eine vorhandene Aufnahme (profile/$PROFIL/ansage.<ext>) statt sie aus ansage.txt zu synthetisieren, durchlaeuft aber dieselbe Aufbereitung (8kHz mono, Signalton, -3dB Headroom) wie die TTS-Pfade. profile/aufzug-notdienst/ansage.ogg ist die reale Aufnahme fuer das Notdienst-Beispielprofil (Pegel geprueft: Peak ~0dB vor, ~-3dB nach der Verarbeitung - kein Clipping). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EbdWYnDtyMgxsq4eN1WnrQ
This commit is contained in:
parent
795dcf7eeb
commit
07010fbfdf
3 changed files with 23 additions and 3 deletions
BIN
profile/aufzug-notdienst/ansage.ogg
Normal file
BIN
profile/aufzug-notdienst/ansage.ogg
Normal file
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
Sie erreichen den 24-Stunden-Notdienst für Aufzugsanlagen der Musterfirma. Befindet sich eine Person eingeschlossen im Aufzug, nennen Sie bitte sofort die genaue Adresse und die Aufzug-Nummer. Bitte hinterlassen Sie danach Ihr Anliegen und Ihre Rückrufnummer nach dem Signal. Wir rufen Sie umgehend zurück.
|
Aufzug-Notdienst, Testansage. Bitte hinterlassen Sie eine Nachricht nach dem Signal.
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,18 @@
|
||||||
# siehe README).
|
# siehe README).
|
||||||
# Ergebnis: telefon/ansage.wav in Telefonqualitaet (8 kHz mono, PCM16).
|
# Ergebnis: telefon/ansage.wav in Telefonqualitaet (8 kHz mono, PCM16).
|
||||||
#
|
#
|
||||||
# Drei Sprachsynthesen:
|
# Vier Quellen:
|
||||||
# piper (Standard, natuerlicher, lokal) - Modelle unter ~/piper-voices
|
# piper (Standard, natuerlicher, lokal) - Modelle unter ~/piper-voices
|
||||||
# say (macOS-Bordmittel, lokal, Rueckfall wenn Piper fehlt)
|
# say (macOS-Bordmittel, lokal, Rueckfall wenn Piper fehlt)
|
||||||
# mistral (Voxtral-API, Cloud - nur fuer diesen einmaligen Erzeugungslauf;
|
# mistral (Voxtral-API, Cloud - nur fuer diesen einmaligen Erzeugungslauf;
|
||||||
# die fertige ansage.wav wird danach lokal fuer jeden Anruf
|
# die fertige ansage.wav wird danach lokal fuer jeden Anruf
|
||||||
# wiederverwendet, es geht dabei keine Patientendaten raus)
|
# wiederverwendet, es geht dabei keine Patientendaten raus)
|
||||||
|
# datei (echte Aufnahme statt Synthese - profile/$PROFIL/ansage.<ext>,
|
||||||
|
# ansage.txt wird dabei nicht gelesen)
|
||||||
#
|
#
|
||||||
# Steuerung ueber Umgebungsvariablen bzw. .env:
|
# Steuerung ueber Umgebungsvariablen bzw. .env:
|
||||||
# PROFIL=<Ordnername unter profile/, Default "praxis">
|
# PROFIL=<Ordnername unter profile/, Default "praxis">
|
||||||
# ANSAGE_TTS=piper|say|mistral
|
# ANSAGE_TTS=piper|say|mistral|datei
|
||||||
# ANSAGE_STIMME=<Piper-Modellname, say-Stimme, oder Voxtral-Stimmen-Slug>
|
# ANSAGE_STIMME=<Piper-Modellname, say-Stimme, oder Voxtral-Stimmen-Slug>
|
||||||
# ANSAGE_EMOTION=<Sprecher-ID, nur bei thorsten_emotional: 0=amused,
|
# ANSAGE_EMOTION=<Sprecher-ID, nur bei thorsten_emotional: 0=amused,
|
||||||
# 1=angry, 2=disgusted, 3=drunk, 4=neutral, 5=sleepy,
|
# 1=angry, 2=disgusted, 3=drunk, 4=neutral, 5=sleepy,
|
||||||
|
|
@ -56,6 +58,24 @@ fi
|
||||||
TMP=$(mktemp -d); trap 'rm -rf "$TMP"' EXIT
|
TMP=$(mktemp -d); trap 'rm -rf "$TMP"' EXIT
|
||||||
|
|
||||||
case "$TTS" in
|
case "$TTS" in
|
||||||
|
datei)
|
||||||
|
# Echte Aufnahme statt Sprachsynthese - profile/$PROFIL/ansage.<ext>
|
||||||
|
# (erste gefundene Endung gewinnt). ansage.txt wird in diesem Modus nicht
|
||||||
|
# gelesen; sie bleibt trotzdem als Beleg/Backup stehen, was gesagt wird.
|
||||||
|
QUELLE=""
|
||||||
|
for ext in ogg mp3 wav m4a aiff; do
|
||||||
|
if [ -f "profile/$PROFIL/ansage.$ext" ]; then
|
||||||
|
QUELLE="profile/$PROFIL/ansage.$ext"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -n "$QUELLE" ] || {
|
||||||
|
echo "Keine Ansage-Audiodatei gefunden (profile/$PROFIL/ansage.{ogg,mp3,wav,m4a,aiff})" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
ffmpeg -v error -y -i "$QUELLE" -ar 8000 -ac 1 "$TMP/sprache.wav"
|
||||||
|
BESCHREIBUNG="datei/$QUELLE"
|
||||||
|
;;
|
||||||
piper)
|
piper)
|
||||||
MODELL="$STIMMEN_ORDNER/$STIMME.onnx"
|
MODELL="$STIMMEN_ORDNER/$STIMME.onnx"
|
||||||
[ -f "$MODELL" ] || { echo "Piper-Stimme fehlt: $MODELL" >&2; exit 1; }
|
[ -f "$MODELL" ] || { echo "Piper-Stimme fehlt: $MODELL" >&2; exit 1; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue