Alle nennenswerten Änderungen am Projekt Alternis VoIP werden in dieser Datei dokumentiert.
Das Format basiert auf Keep a Changelog,
und dieses Projekt folgt der Semantischen Versionierung.
- Unbeabsichtigte rückwirkende Übersetzung: Es wurde ein Fehler behoben, durch den die Funktion zur rückwirkenden Übersetzung aufgrund einer fehlenden Prüfung in der Verarbeitungslogik selbst dann eine unbeabsichtigte Belastung des Übersetzungssystems verursachen konnte, wenn sie nicht aktiviert war. Dies konnte in Szenarien mit häufigen Sprachwechseln und kurzen Nachrichten zu Leistungseinbußen führen.
- Live-Sitzungsdauer: Aktive Sitzungen zeigen auf dem Client nun einen Echtzeit-Zähler für die Dauer an, der jede Sekunde weiterläuft, statt nur bei Server-Ereignissen aktualisiert zu werden.
- Sichtbarkeit von Archiv-Übersetzungen: Inaktive (archivierte) Sitzungen zeigen nun alle verfügbaren Übersetzungen für Nachrichten an, unabhängig von aktiven RTP-Registrierungen.
- Archiv-SSE-Verbindung: Der Client öffnet für archivierte Sitzungen keine SSE-Nachrichtenstream-Verbindung mehr, wodurch unnötiger Ressourcenverbrauch vermieden wird.
- Unterdrückung doppelter RTT-Nachrichten: Es wurde ein Fehler behoben, durch den beim mehrfachen Senden derselben Textnachricht über RTT nur die erste Instanz über UDP übertragen wurde.
- Sprachsynthese für Fremdsprachen: Es wurde ein Fehler behoben, durch den das Flag
synthesis_played vorzeitig gesetzt wurde, sobald die erste (eigensprachliche) TTS abgeschlossen war, was die Erzeugung und Wiedergabe der Sprachsynthese für Fremdsprachen innerhalb derselben Nachricht verhinderte.
- Auswahl von Archiv-Sitzungen: Die ausgewählte Sitzung bevorzugt nun das direkt abgerufene Sitzungsobjekt (mit vollständigen Nachrichtendaten) gegenüber dem reduzierten Listeneintrag. Damit werden Fälle behoben, in denen beim Anzeigen archivierter Sitzungen Nachrichtendaten fehlten.
- Übersetzungsverlauf: Nutzung der vorherigen 20 Nachrichten zur Verbesserung der Übersetzungsqualität.
- Rückwirkende Übersetzung: Optionale Umgebungsvariable zur Aktivierung der experimentellen rückwirkenden Übersetzung von Nachrichten, die verarbeitet wurden, bevor ein Sprachwechsel erkannt wurde. Damit lassen sich Übersetzungslücken bei Nachrichten schließen, die mit einer unvollständigen Spracheinstellung verarbeitet wurden.
- SoftLock-Verbesserungen: 3 aufeinanderfolgende Sprachidentifikationen mit demselben Ergebnis bei Nachrichten von unter 1,5 Sekunden lösen nun einen Soft-Lock aus, um die Spracherkennung für kurze Nachrichten zu verbessern.
- Sitzungsdauer: Die Sitzungsdauer wird nun in der Benutzeroberfläche angezeigt, um die Länge der Sitzung besser nachvollziehen und Sitzungen leichter identifizieren zu können.
- Archiv-Paginierung: Die Archivansicht lädt Sitzungen nun in Seiten zu je 20, was die anfängliche Ladezeit verkürzt und die Skalierbarkeit bei großen Sitzungsdatenbanken verbessert.
- Archiv-Suche & -Filterung: Serverseitige Suche (Bezeichnung und Zusammenfassung) sowie Datumsbereichsfilterung für die Archivansicht hinzugefügt, mit entprellter Sucheingabe und Von-/Bis-Datumsauswahl.
- Abfrageparameter der Sessions-API:
GET /api/v1/sessions unterstützt nun optionale Abfrageparameter: state, limit, offset, from, to und search für die gefilterte und paginierte Abfrage von Sitzungen. Ein X-Total-Count-Antwort-Header ist für die Paginierung enthalten. Vollständig abwärtskompatibel — ohne Parameter werden wie bisher alle Sitzungen zurückgegeben.
- Optimiertes Laden aktiver Sitzungen: Der Client ruft auf der Seite für aktive Anrufe nun nur noch aktive (nicht inaktive) Sitzungen über SSE ab, anstatt alle Sitzungen im Voraus zu laden.
- RTT – Real-Time-Text-Unterstützung: RTT-Unterstützung, damit Audio- und Echtzeittext-Teilnehmer nahtlos kommunizieren können. RTT-Nachrichten werden live übersetzt und für Audio-Teilnehmer synthetisiert, und gesprochene Nachrichten werden übersetzt und als RTT-Nachricht übertragen.
- Verarbeitung langer Sprachbeiträge: Verbesserte Verarbeitung gesprochener Nachrichten von über 45 Sekunden sorgt für eine höhere Leistung bei meetingähnlichem Verhalten.
- Synthese-Infos über die SSE-API: Sprachsynthese-Info-Ereignisse werden nun für Nachrichten auch über den (SSE-)Event-Stream übertragen, um die API-Nutzung zu vereinfachen.
- Übersetzungen von Systemnachrichten: Alle Systemnachrichten sind nun in den 42 Sprachen verfügbar.
- Reduzierte SSE-Aussendungen für Nachrichten: Es werden nun nur noch wesentliche Änderungen des Nachrichtenstatus über SSE gesendet, um das Netzwerk nicht mit unnötigen Aktualisierungen der Audiodauer ohne weiteren Informationsgehalt zu belasten.
- Audio-Duration-Feld der Synthese-Info: Die Struktur
SynthesisInfo enthält nun zu Verwaltungszwecken ein Feld „audio-duration", welches die Dauer der synthetisierten Audio-Datei beschreibt.
- Sprachidentifikation bei kurzen Sprachbeiträgen: Verbesserte Verarbeitung sehr kurzer Nachrichten (unter 3 Sekunden) mit unklarer Sprachidentifikation.
- Endlosschleife bei der Sprachsynthese-Erzeugung: Es wurde ein Fehler in der Logik zur Erzeugung der Sprachsynthese behoben, der beim Generieren von Sprache für Übersetzungen zu einer Endlosschleife führte. Dies tritt bekanntermaßen nur in Szenarien auf, in denen ein Notitia-VoiceBot als verwaltende Instanz die Steuerung des Lebenszyklus einer Alternis-Sitzung übernimmt. Bei „normalen" Anwendungsfällen wurde dasselbe Problem nicht beobachtet.
- Entfernen von Prefab-Gruppen: Beim Löschen einer gesamten Prefab-Gruppe werden nun alle darin enthaltenen Prefabs ordnungsgemäß entfernt.
- Verlust von Nachrichtenübersetzungen: Es wurde ein Fehler behoben, durch den die Übersetzung einer Nachricht verworfen wurde, nachdem ein Sprachwechsel erkannt worden war.
- Sprachkennzeichen von Sitzungen: Es wurde ein Problem behoben, durch das eine Sitzung nicht die im Gespräch tatsächlich verwendeten Sprachen anzeigte.
- Lizenzbasiertes Zurücksetzen verfügbarer Sprachen: Wird eine Lizenz herabgestuft und sind dadurch einige Sprachen nicht mehr verfügbar, entfernt das System diese Sprachen nun automatisch aus den Einstellungen, um Fehlkonfigurationen und Fehler während der Verarbeitung zu vermeiden.
- Standard-Prompt für Zusammenfassungen: Der Standard-Prompt für Zusammenfassungsaufgaben wurde aktualisiert, um die Kontextrelevanz und Ausgabequalität zu verbessern. Nutzern wird empfohlen, den Prompt zu prüfen und bei Bedarf an ihre spezifischen Anwendungsfälle anzupassen.
- Größenbeschränkung der Payload beim Prefab-Import: Es wurde ein Problem behoben, durch das der Import großer Prefabs aufgrund von Größenbeschränkungen der Payload fehlschlagen konnte. Der Server erlaubt nun größere Payloads (standardmäßig 200 MB), um größere Prefab-Importe zu ermöglichen. Das Limit kann über die Umgebungsvariable
FILE_UPLOAD_LIMIT angepasst werden.
🎉 Erste produktive Veröffentlichung – Plattform für die multilinguale Echtzeit-Sprachverarbeitung bei VoIP-Anrufen
- Sitzungsverwaltung: Vollständiger Lebenszyklus von Anrufsitzungen mit Statusverfolgung und Protokollierung
- RTP-Stream-Verarbeitung: Echtzeit-Audioverarbeitung mit Unterstützung des G.711-A-law-Codecs
- Geräteregistrierung: Sicheres mehrstufiges Onboarding mit berechtigungsbasierter Autorisierung
- Audioverwaltung: Erzeugung, Speicherung und Abruf von WAV-Dateien für verarbeitetes Audio
- Unterstützung von 42 Sprachen: Multilinguale Verarbeitung für über 3,6 Mrd. Muttersprachler
- 26 Sprachen vollständig on-premise (kein Internet erforderlich)
- 16 weitere Sprachen mit cloudgestützter Verarbeitung
- Speech-to-Text: Echtzeit-Transkription mit kontextbewusster Verarbeitung und automatischer Spracherkennung
- Text-to-Speech: Hochwertige Sprachsynthese mit optionaler „Nova Voice"-Verbesserung
- Echtzeit-Übersetzung: Gleichzeitige Übersetzung in mehrere Sprachen während des Anrufs
- Compute-Node-Architektur: Verteilte Verarbeitung mit Lastausgleich und Zustandsüberwachung
- Moderne Weboberfläche: Vue-3-+-TypeScript-SPA mit Material Design (Vuetify)
- Echtzeit-Aktualisierungen: Live-Streaming von Sitzungen und Nachrichten über Server-Sent Events
- Geräteverwaltung: Registrierungen genehmigen, Berechtigungen verwalten und Gerätemetadaten bearbeiten
- Kontoverwaltung: Benutzerauthentifizierung, Passwortverwaltung
- Einstellungs-Dashboard: Lizenzvalidierung, Systemkonfiguration
- Prefab-Vorlagen: Schnelle Einrichtung mit Import-/Exportfunktion
- Mehrsprachige Benutzeroberfläche: Unterstützung für Englisch und Deutsch
- Interne API (
/api/internal): Administrative Operationen für Konten, Geräte, Compute-Nodes und Einstellungen
- Öffentliche API v1 (
/api/v1): Gerätegerichtete Operationen für Registrierung, Sitzungen, Nachrichten und RTP-Streams
- OpenAPI-Dokumentation: Interaktive Swagger-UI unter
/api/docs/ mit vollständigen API-Spezifikationen
- Event-Streaming: SSE-Endpunkte für Echtzeit-Aktualisierungen von Sitzungen und Nachrichten
- Drei-Server-Architektur: HTTP-Server (Port 80), Compute-Node-Server (Port 81), VoIP-UDP (Port 35000)
- Docker-Unterstützung: Produktionsreife Containerisierung mit persistenten Daten-Volumes
- Lizenzverwaltung: Stündliche Validierung mit einmonatiger Kulanzfrist bei Verbindungsproblemen
- SQLite-Datenbanken: Schlanke Speicherung für Konten, Geräte und Sitzungen
- Einzeldatei-Deployment (Single Binary): Eingebetteter Web-Client und Dokumentation für eine einfache Bereitstellung
- VitePress-Website: Umfassende technische Dokumentation unter
/docs/
- Einrichtungsanleitungen: Server-Bereitstellung, Docker-Compose-Beispiele und Systemkonfiguration
- Integrationsanleitungen: Geräteregistrierung, Sitzungsverwaltung, Event-Streaming und Sprachsynthese-Workflows
- Architekturdiagramme: Visualisierungen der Systemtopologie und Komponenteninteraktion
- Interaktive Karte: Visuelle Darstellung von über 185 unterstützten Sprachregionen
- Backend: Rust 2024 mit dem Framework Actix-web 4.11
- Frontend: Vue 3 + TypeScript mit Vite-Build-System
- Datenbank: SQLite mit rusqlite
- Sicherheit: Ring-Kryptografie (PBKDF2), OpenSSL, Bearer-Token-Authentifizierung
- Async-Runtime: Tokio für Operationen mit hoher Nebenläufigkeit
- Granulare Berechtigungen: Berechtigungstypen für die feingranulare Steuerung des Gerätezugriffs
- Sichere Passwortspeicherung: PBKDF2-Hashing mit kryptografischen Salts
- Compute-Node-Authentifizierung: Verschlüsselte Kommunikation zwischen Manager und Compute-Nodes
- Web-Zugriffssteuerung: Optionaler öffentlicher Zugriff mit separaten Authentifizierungs-Tokens