Das Talking Head-Projekt oder die Geschichte der Entwicklung von Software für einen Telepräsenzroboter

Meine Arbeit bei T-Systems begann mit einem eher ungewöhnlichen Projekt. Eigentlich bin ich hauptsächlich wegen dieses Projekts in die Firma gekommen. Während unseres ersten Telefongesprächs wurde mir die Aufgabe wie folgt beschrieben: Es ist notwendig, ein Sprachübersetzungssystem für einen Telepräsenzroboter zu entwickeln. Ich habe zum ersten Mal von Telepräsenzrobotern gehört, aber was könnte aufregender sein, als für Roboter zu entwickeln? Deshalb habe ich fast sofort zugestimmt.



Mein erster Anruf beim Kunden. Die Aufgabe ist ungefähr so ​​gestellt: Wir möchten, dass das Sprachübersetzungssystem während des Gesprächs über diesen Telepräsenzroboter funktioniert, dh die Person spricht Russisch, und am anderen Ende des „Drahtes“ gibt der Roboter seine Sprache auf Deutsch wieder und umgekehrt. Unmittelbar nach einer solchen Erklärung des Problems folgte die Frage, wie viel Menschen und Zeit es braucht, um dies zu entwickeln, und wie viel es kosten wird. Wir waren uns einig, dass ich mir die Dokumentation zum Roboter ansehen werde (der Roboter selbst war nicht in unserem Büro), die Übersetzungssysteme studieren und in einem Monat grobe Schätzungen abgeben werde, aber im Moment werden wir ein paar Mal pro Woche anrufen, um die Details zu klären.

Die Dokumentation für den Roboter war, gelinde gesagt, eher knapp. Es war unmöglich, etwas anderes als Marketingmaterialien zu finden, also schrieb ich an die Entwickler. Das vorhandene System ermöglichte es, über einen Webbrowser einen Videoanruf an einen Telepräsenzroboter zu tätigen und dessen Bewegungen an einem entfernten Ort zu steuern. Die offensichtliche Idee, die ich hatte, war: Ist es möglich, ein Sprachübersetzungssystem irgendwie in das aktuelle System zu integrieren?

Parallel dazu war es notwendig zu verstehen, wie das Übersetzungssystem hergestellt werden kann, und vor allem, wie wird die Qualität dieser Übersetzung sein, wird sie für den Kunden akzeptabel sein? Daher habe ich mich gleichzeitig mit der Korrespondenz mit den Entwicklern des Roboters entschlossen, einen Anruf beim Kunden zu tätigen und über den Übersetzer mit ihm zu kommunizieren. Translator ist eine mobile Anwendung von Microsoft, die in verschiedene Sprachen übersetzen und sprachübersetzen kann. Die Anwendung ist kostenlos, auf Android oder iOS installiert und verwendet den entsprechenden Dienst von Microsoft. Während des Anrufs mussten wir herausfinden, ob es möglich ist, auf diese Weise ein Gespräch zu führen. Für die Reinheit des Experiments sprach ich Russisch und der Kunde auf Deutsch, das heißt, beide kannten die zweite Sprache absolut nicht, riefen über eine Telefonkonferenz an und sprachen zuerst ihre Muttersprache in Übersetzer.und brachte dann das Handy zum Konferenzhandgerät. 

Im Allgemeinen sah dies nicht sehr praktisch aus, aber eine allgemeine Vorstellung von der Qualität der Übersetzung ergab sich (ein neugieriger Leser würde sagen, dass es einfacher war, mit aktivierter Übersetzung über Skype zu telefonieren, aber aus irgendeinem Grund kam es uns damals nicht in den Sinn). Nach dem Gespräch haben wir entschieden, dass das Projekt und die Qualität für den Kunden akzeptabel sind.

Nach den Ergebnissen des ersten Monats der Arbeit an dem Projekt wurde Folgendes enthüllt. Das vorhandene System für den Telepräsenzroboter kann nicht geändert werden, da die Entwickler des Roboters hierfür keine API bereitstellen. Es stellte sich jedoch heraus, dass der Roboter eine Art Segway ist, mit dem das iPad verbunden ist, und es gibt ein SDK für iOS, mit dem Sie den Segway steuern können. Das heißt, Sie müssen Ihr eigenes System vollständig schreiben und dürfen nicht auf die Integration mit dem vorhandenen System zählen. Die erste schematische Darstellung eines zukünftigen Produkts ist erschienen.

 

Nach einem Gespräch mit dem Kunden wurde entschieden, dass 3 Personen an dem Projekt arbeiten würden - iOS-Entwickler, Backend- und Frontend-Entwickler. Wir werden das Projekt selbst in Phasen von 2-3 Monaten aufteilen und mit Abschluss eines separaten Vertrags ein Ziel für jede Phase festlegen. Am Ende der Phase - eine Demonstration der Ergebnisse gegenüber dem Kunden und dem Investor des Projekts. Für den Kunden war es wichtig, dass es im neuen Jahr bereits einen funktionierenden POC gab. Seit ich im Juli in das Unternehmen eingetreten bin, waren die Fristen ziemlich eng.

Das Ziel für die erste zweimonatige Phase war es, zwei weitere Entwickler zu finden, Dienste für Videoanrufe und Übersetzungen auszuwählen. Am Ende der Phase musste eine einfache Webanwendung angezeigt werden, mit der Sie einen Videoanruf mit einem integrierten Übersetzungsdienst tätigen können.

WebRTC wird heute häufig zum Tätigen von Videoanrufen verwendet, was derzeit von den meisten Webbrowsern unterstützt wird. Angesichts der begrenzten Ressourcen haben wir uns jedoch nicht getraut, auf das reine WebRTC zu schreiben, und einen Anbieter ausgewählt, der den Dienst zusätzlich zu WebRTC bereitstellt. Wir haben zwei Dienste in Betracht gezogen - TokBox und Voxeet. Infolgedessen entschieden sie sich für TokBox. Es ist zu berücksichtigen, dass diese Dienste bezahlt werden. Daher haben wir zusammen mit der Beschreibung der Anwendungsarchitektur Kostenberechnungen für eine Minute eines Videoanrufs mit Übersetzung durchgeführt.



Wir haben auch verschiedene Dienste für die Übersetzung in Betracht gezogen: TranslateYourWorld.com (es bietet eine einzige API, die mehrere Übersetzungsanbieter gleichzeitig vereint, einschließlich Google und Microsoft, aber das Unternehmen ist sehr klein und unzuverlässig, deren Website zum Zeitpunkt dieses Schreibens noch nicht geöffnet war), Google Cloud-Übersetzung, Microsoft Speech. Aus diesem Grund haben wir uns für den MS Speech-Dienst entschieden, da er über eine bequemere API verfügt. Wir können den Audiostream über einen Websocket zum Dienst streamen und sofort Audioaufnahmen mit Übersetzung sowie guter Übersetzungsqualität empfangen. Darüber hinaus ist Microsoft ein Partner unseres Unternehmens, was die Zusammenarbeit mit ihnen erleichtert.

Ein erfahrener, talentierter (Mischa, hallo!) Full-Stack-Entwickler kam zu mir. Anfang Oktober schloss unser kleines Team die nächste Phase erfolgreich ab und demonstrierte eine einfache Webanwendung, die es mithilfe von TokBox- und MS Speech-Diensten ermöglichte, Videoanrufe mit Übersetzung in mehrere Sprachen zu arrangieren einschließlich Russisch und Deutsch.

Die nächste Stufe war für 3 Monate ausgelegt und das Ziel war MVP mit einem Roboter. Zu diesem Zeitpunkt kam der dritte und letzte Entwickler zu uns. Für das Projekt wurde der folgende Technologie-Stack ausgewählt: das Backend - NodeJS + MongoDB, das Web-Frontend auf ReactJS und Swift für die iOS-Anwendung, die mit dem Roboter interagiert. Eine Geschichte verdient eine gesonderte Geschichte darüber, wie ich einen Roboter von Deutschland nach St. Petersburg gefahren und zuerst Deutsch und dann unseren Zollbeamten erklärt habe, was für ein Gerät dies in der Schachtel ist.





In den ersten Phasen, in denen wir keinen Roboter hatten, konnten wir mit der iOS-Anwendung nur einen Videoanruf mit Übersetzung tätigen. Als der Roboter Anfang Dezember bei uns war, fügten wir dem Roboter schnell das Senden von Steuersignalen über eine bereits debuggte Anrufverbindung hinzu, und es wurde möglich, den Roboter durch Drücken der Pfeile auf der Tastatur zu steuern. So haben wir im Januar die dritte Phase abgeschlossen und dem Kunden die Ergebnisse vorgeführt.

Das Ergebnis der vorletzten Phase war ein debuggtes System mit der Korrektur aller kritischen Fehler. Beim Anrufen eines Roboters kann der Bediener den Raum durch die Hauptkamera und den Boden durch die Nebenkamera sehen (um das Umgehen von Hindernissen zu erleichtern). Das Gesicht des Bedieners wird auf dem Bildschirm des Roboters angezeigt. In diesem Fall kann das Gespräch mit einer Übersetzung in eine der 7 unterstützten Sprachen geführt werden, darunter Russisch, Deutsch und einige andere Sprachen. Während der Übersetzung werden zwei Textzeilen ausgeführt: Die erste ist erkannte Sprache und die zweite Übersetzung in eine andere Sprache mit Karaoke-Beleuchtung, sodass klar ist, welcher Teil der Phrase gerade am anderen Ende der Verbindung abgespielt wird.



Und schließlich haben wir in der letzten Phase ein Benutzerverwaltungssystem, Benutzergruppen, Statistiken und Berichte über die Anzahl und Dauer der Anrufe hinzugefügt. So haben wir ein Jahr später das Projekt erfolgreich abgeschlossen und an den Kunden übertragen. 

Im Verlauf der Projektarbeit entstanden neue, interessante Ideen. Tragen Sie zum Beispiel eine Virtual-Reality-Schutzbrille, damit der Bediener den vollen Immersionseffekt hat und den Roboter durch Drehen des Kopfes steuern kann. 

Wir haben auch eine Studie zum Thema der Erstellung eines selbstfahrenden Roboters unter Verwendung des ROS-Frameworks durchgeführt, um ihn zu „lehren“, Hindernisse selbst zu vermeiden und von Punkt A nach Punkt B zu gelangen oder Gäste am Eingang des Büros zu treffen. Im Allgemeinen erwies sich das Projekt als ziemlich faszinierend, und wer weiß, welche anderen interessanten Funktionen wir dem System in Zukunft hinzufügen werden.


All Articles