wiki/b-reference/gateway/voice-google.md
ValueOn AG ef83e58a85 upd
2026-05-11 18:41:56 +02:00

3.6 KiB

Google Voice (STT / TTS)

Zentrale Sprach-Pipeline im Gateway: Google Cloud Speech-to-Text (v1) und Text-to-Speech über die Fassade VoiceObjects (interfaceVoiceObjects.py) und den Connector ConnectorGoogleSpeech (connectorVoiceGoogle.py). Kein direkter Feature-Code soll den Connector umgehen; Billing-Hooks hängen an der Interface-Schicht (u. a. Streaming-STT bei finalen Segmenten).

Batch-Erkennung (speechToText)

  • API: SpeechClient.recognize (ein Request pro Audioclip).
  • Parameter (optional, abwaertskompatibel):
    • model: z. B. latest_long (Default), latest_short.
    • lightweight: True schaltet u. a. ab: Word-Timestamps, Word-Confidence, max_alternatives>1, use_enhanced. Ziel: geringere Latenz/Kosten bei Kurzäusserungen.
    • audioFormat: z. B. webm_opus, linear16, mp3, flac, wav — wenn gesetzt, entfällt validateAudioFormat() (Fast-Path); fehlende Sample-Rate wird formattypisch defaulted (z. B. webm_opus → 48 kHz).
  • Fallbacks: Bei leeren Ergebnissen (wenn nicht skipFallbacks) weiterhin Encoding-/Modell-Matrix; erstes Fallback-Modell ist der vom Caller gewählte model-Wert.

Streaming-Erkennung

  • Route: POST /voice-google/stt/token (kurzlebiges wsToken), WebSocket /voice-google/stt/stream?wsToken=... (routeVoiceGoogle.py).
  • Client-Protokoll (JSON):
    • open: language, optional model, lightweight, singleUtterance (Booleans).
    • audio: chunk (Base64), typisch WebM/Opus-Fragmente vom MediaRecorder.
    • close / ping / pong unveraendert.
  • Server-Antworten: interim, final, optional end_of_single_utterance (mit audioDurationSec) wenn Google Single-Utterance-Modus endet — Client sendet daraufhin erneut open mit denselben STT-Optionen (Recorder laeuft weiter).
  • Connector: streamingRecognizeStreamingRecognitionConfig.single_utterance steuerbar; Abrechnungs-Dauer fuer Finals bevorzugt aus result_end_time der Streaming-Results (Fallback: Byte-Heuristik).

Feature-Zuordnung (Ist-Stand)

Bereich STT-Pfad Konfiguration (Kurz)
CommCoach Live Streaming WS → Text → Coach Frontend (useVoiceStream): latest_short, lightweight, singleUtterance: true (useVoiceController).
CommCoach Batch processAudioMessagespeechToText latest_short, lightweight: true (Format weiterhin Auto-Detect wenn kein audioFormat).
Workspace Gleicher generischer WS start(language) ohne Extra-Optionen → Defaults wie frueher (latest_long, kein Single-Utterance).
Teamsbot Pro Audio-Chunk speechToText (Batch) Gemeinsamer Connector; audioFormat: linear16 (bekannte PCM-Chunks); Modell/Default wie bisher latest_long + volle Features (lightweight: false).
Agent-Tool _mediaTools.speechToText Batch Keine zusaetzlichen Argumente → Default-Verhalten.

TTS

Unveraendert ueber textToSpeech / Gemini-TTS-Pfad im Connector; diese Seite fokussiert STT.

Weiterfuehrung