Add hands-free PWA mode and systemd service

This commit is contained in:
2026-04-27 08:20:51 +02:00
parent 606a925724
commit f876b3a635
9 changed files with 339 additions and 70 deletions

13
app.py
View File

@@ -25,6 +25,7 @@ CHAT_MODEL = "llama-3.3-70b-versatile"
STT_MODEL = "whisper-large-v3-turbo"
TTS_MODEL = "canopylabs/orpheus-v1-english"
TTS_VOICE = "troy"
TTS_PROVIDER = os.getenv("TTS_PROVIDER", "browser").lower()
app = Flask(__name__, static_folder=str(STATIC_DIR), static_url_path="")
app.secret_key = os.getenv("APP_SECRET", "dev-secret-change-me")
@@ -42,6 +43,7 @@ Quand tu as toutes les informations pour envoyer un email, reponds uniquement av
{"action": "envoyer_email", "destinataire": "...", "sujet": "...", "corps": "..."}
Pour tout le reste, reponds en francais naturel, avec des phrases courtes.
N'utilise pas d'anglais sauf si l'utilisateur le demande explicitement.
En mode voiture, sois bref : une ou deux phrases maximum."""
@@ -170,7 +172,7 @@ def traiter_message(session_id, texte, avec_audio=False):
email_sent = True
audio_url = None
if avec_audio:
if avec_audio and TTS_PROVIDER == "groq":
audio_url = generer_audio(reponse)
return {
@@ -211,13 +213,14 @@ def chat():
def voice():
fichier = request.files.get("audio")
session_id = request.form.get("sessionId") or "default"
avec_audio = request.form.get("withAudio", "false").lower() == "true"
if not fichier:
return jsonify({"error": "Audio manquant"}), 400
try:
texte = transcrire_audio(fichier).strip()
resultat = traiter_message(session_id, texte, avec_audio=True)
resultat = traiter_message(session_id, texte, avec_audio=avec_audio)
resultat["transcript"] = texte
return jsonify(resultat)
except Exception as e:
@@ -234,4 +237,8 @@ def reset():
if __name__ == "__main__":
app.run(host="0.0.0.0", port=int(os.getenv("PORT", "8080")), debug=True)
app.run(
host="0.0.0.0",
port=int(os.getenv("PORT", "8080")),
debug=os.getenv("FLASK_DEBUG", "0") == "1",
)