Laden...

TeamSpeak3 Client als Extra-Prozess starten + Audio In- & Output auslesen/umleiten

Erstellt von thexbasic vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.279 Views
T
thexbasic Themenstarter:in
8 Beiträge seit 2014
vor 9 Jahren
TeamSpeak3 Client als Extra-Prozess starten + Audio In- & Output auslesen/umleiten

Hallo liebe C#-Community,
Ich weiss Bots sind nicht gerne gesehen, allerdings haben 2 Kollegen inklusive mir uns vorgenommen einen "Translator-Bot" für TS3 zu programmieren. Das ganze soll so gehen, dass es mehrere Channel gibt z.B Englisch, Deutsch und Russisch oder eine beliebige andere Sprache. Sobald jemand im channel etwas sagt wird das vom Bot aufgenommen, per Google API in Text umgewandelt und dann für jeden anderen Channel in der beliebigen Sprache ausgegeben. Das Übersetzungsmodul ist soweit fertig. Das größte Problem dem wir uns somit noch stellen müssen ist, wie wir an die "Sprachdaten" kommen... Der erste Gedanke war einfach ein Custom-client was sich im Nachhinein allerdings durch die AES Verschlüsselung von TeamSpeak als schwierig erwiesen hat. Zudem gibt es kein öffentliches Packet-protokoll und durch die oben genannte Verschlüsselung ist das reverse-engineering eine Qual.

Nun also zu meinem Einfall: Es ist ja beispielsweise möglich ein Programm (Bsp.: cmd) ohne gui zu starten und die Ein- und Ausgabe umzuleiten. Da ich damit allerdings noch nicht sehr viel gearbeitet habe weiss ich auch nicht wo dort die Grenzen liegen. So bräuchten wir für unsere Umsetzung eine Umleitung der Audio Ein- & Ausgabe. Das verbinden ist per startparameter keine grosse Sache und zum channel switchen ist ein im Programm integrierter Query-Bot verantwortlich.

Liegt das also im Bereich des möglichen? Oder hat jemand einen alternativen Lösungsansatz?
Ich bin natürlich für Fragen und Ideen aller Art offen ^^
MfG.
-Dome

16.842 Beiträge seit 2008
vor 9 Jahren

Windows Phone kann das von Haus aus: App: Übersetzer.

Zumindest für die Sprachen Deutsch<>Englisch und Englisch<>Schwedisch kann ich sagen, dass das wirklich sehr gut funktioniert. Je länger man spricht desto länger dauert aber die Übersetzung. Ganze, logische Sätze können schon xx Sekunden brauchen.
Allgemein finde ich, dass Bing hier viel weiter ist als Google; was letzten Endes aber Geschmackssache ist.
Für Windows Phone 8.1 bietet Bing hier auch direkt eine Schnittstelle an. Wie das mit der Legalität und Google aussieht kann ich nicht sagen.

Eine Live-Übersetzung braucht aber unheimlich viel Ressourcen, wo sich derzeit die Big 5 (Facebook, Microsoft, Google, Apple, Twitter) ein wenig die Zähne aus beißen.
Ich denke auch, dass das der schwierigste Punkt für euch wird, da ihr das über eine API nicht beeinflussen könnt. Aber vielleicht hast Du ja was Einzigartiges für den Punkt, der das Möglich macht.

T
thexbasic Themenstarter:in
8 Beiträge seit 2014
vor 9 Jahren

Danke für den Tipp ^^

Allerdings ist das Modul zur Übersetzung wie gesagt schon fertig und auch recht performant wenn man das so sagen kann. Das das ganze recht Resourcenlastig ist war uns schon halbwegs klar, lässt sich aber auch nicht gross beeinflussen.
Wie gesagt geht es jetzt darum den Bot auf den TeamSpeak-server zu bekommen wofür ich ja vorher schon 2. Ansätze gegeben habe...

Wenn ich bei deiner Aussage jetzt was falsch verstanden habe würde ich mich über Aufklärung freuen.

M
334 Beiträge seit 2007
vor 9 Jahren

Warum macht ihr das ganze nicht als Client-Addon anstatt zu versuchen, das Protokoll zu zerlegen?

2.298 Beiträge seit 2010
vor 9 Jahren

Ich bin mir nicht sicher, ob das ganze im allgemeinen so eine gute Idee ist. - Auf den Teamspeak Servern auf denen ich mich bisher rumgetrieben habe hat keiner gewartet bis der andere ausgesprochen hat. - Erschwert aus meiner Sicht eine Übersetzung, da ihr sonst sicher stellen müsst, das wirklich immer nur einer spricht.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

T
thexbasic Themenstarter:in
8 Beiträge seit 2014
vor 9 Jahren

@mabo:
Die Idee war ja das die Leute in verschiedenen Channels sind, soweit Ich weiss ist es aber nicht möglich mithilfe von Plugins sowohl Ein- und Ausgehendes Audio zu beeinflussen. Dazu kommt, dass wir (da unsere community mehrere TS3's hat) das ganze später eventuell auch über verschiedene Server hinweg machen wollten - falls z.B. mal einer voll ist.

@inflames2k:
Da hast du natürlich Recht, was auch der Grund war wieso wir das per custom-client machen wollten. Denn wenn jemand redet wird ja im Prinzip der Audio-stream dieser einzelnen Person an dich verschickt und nicht der des channels. So könnte man user-unabhängig übersetzten.

Ich habe gerade auch nochmal gegoogelt und tatsächlich einen Bot gefunden der wohl per Custom-client verbindet. Das ist zwar ein Musikbot und in Java geschrieben (ts3musicbot dot net), scheint aber nicht unmöglich zu sein. Da man dort allerdings bezahlen muss halte ich es für sehr unwahrscheinlich, dass mir von denen geholfen wird. Gibt es aslo eventuell eine legale Möglichkeit eine jar zu decompilen und sich das zur Hilfe zu nehmen?

P
1.090 Beiträge seit 2011
vor 9 Jahren

Ich würde vielleicht einen Schritt früher anfangen.
Lass dein Programm, des Mikros direkt aufnehmen, und suggeriere dem TS das du das Micro bist.
Was du alles dann mit dem Audio Stream machst bevor du in an TS übergibst bleibt dann dir überlassen.

Kuzes Googel hat ergeben, das sich das wohl Virtuelle Soundkarte nennt. (Eine Api da zu kannst du hier finden http://jackaudio.org/.) Hier scheint es auch die Möglichkeit zu geben es an mehrere TS zuschicken.

Für den Rest sollte dir einfach die Implementierung eines Chats reichen. Die findest du bei google.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern