[PYTHON] Führen Sie die Echtzeitübersetzung zwangsweise in Zoom ein

Ich möchte Echtzeit-Übersetzungen auf Zooms Webcam-Video anzeigen!

Ein Beispiel für eine Echtzeitübersetzung vom Englischen ins Japanische beim Zoom Meeting. Screenshot 2020-05-01 at 20.54.58.jpg

Während Zoom leicht nationale Grenzen überschreiten kann, können Sie nicht davon profitieren, wenn Sie nicht auf Englisch kommunizieren können. Deshalb habe ich einen einfachen Mechanismus entwickelt.

Als rauer Fluss,

Die Sprachübersetzung in Echtzeit wird mithilfe der Microsoft Azure-API in Python für intern geroutete Sprache aus der Zoom-Sprachausgabe mit Soundflower durchgeführt. Zeigen Sie das von OSC von Python gesendete Übersetzungsergebnis in Untertiteln entsprechend der Webkamera-Eingabe mit dem Touch Designer an. Ausgabe mit Siphon Spout Out in Touch Designer und Zoom über CamTwist als virtuelle Webkamera erkennen lassen. Ein Gefühl der Macht.

Zoom muss überhaupt kein professioneller Account sein.

Versuchte Umgebung / Software

・ Mac Catalina ・ Python3.7 · Microsoft Azure-Konto ・ Berühren Sie Designer ・ Soundflower ・ TwistCam

Installation von Soundflower, TwistCam

Hier herunterladen

Soundflower https://github.com/mattingalls/Soundflower/releases/tag/2.0b2 (Schauen Sie sich die Notizen genau an.)

TwistCam http://camtwiststudio.com/

Soundflower-Einstellungen

Nach der Installation wird im Soundmenü des Mac ein Element namens Soundflower für Eingabe und Ausgabe angezeigt. Stellen Sie also Eingabe 2ch und Ausgabe 2ch ein. Auf diese Weise können Sie den im Zoom gehörten Ton als Mikrofoneingang behandeln. In Fenstern ist Voice Meeter Banane sehr effektiv. Bisher wurde festgestellt, dass nur Soundflower ordnungsgemäß mit dem Mac funktioniert. Screenshot 2020-05-01 at 21.11.47.jpg Screenshot 2020-05-01 at 21.14.58.jpg

Sprachübersetzung in Echtzeit mit Azure

Verwenden Sie in Azure eine API namens Cognitive Services. https://azure.microsoft.com/ja-jp/services/cognitive-services/ Registrieren Sie sich auf der folgenden Seite. Ich habe auch einen Vertrag für die kostenlose Testversion, daher kostet es natürlich Geld, wenn ich es fest machen möchte.

Notieren Sie sich nach der Registrierung den Abonnementschlüssel und die Vorwahl.

Rufen Sie die Azure-Echtzeitübersetzung aus der Mac-Python-Umgebung auf

Der Beispielcode ist hier. https://github.com/Azure-Samples/cognitive-services-speech-sdk Laden Sie dies herunter. Von allen Dateien im Python / Console-Ordner "YourSubscriptionKey", "YourServiceRegion" Umschreiben.

Schreiben Sie das Innere der Datei translation_sample.py neu, um den Wert des Echtzeit-Übersetzungsergebnisses aus der Spracheingabe von mac zu erhalten.

Einstellungen für OSC

#Satzanfang
from pythonosc import udp_client
from pythonosc.osc_message_builder import OscMessageBuilder
IP = '~'
PORT =Richtig einstellen

Stellen Sie das Übersetzungsziel auf Japanisch ein. Code zum Senden an Touch Designer in OSC hinzugefügt.


def translation_continuous():
    """performs continuous speech translation from input from an audio file"""
    # <TranslationContinuous>
    # set up translation parameters: source language and target languages
    translation_config = speechsdk.translation.SpeechTranslationConfig(
        subscription=speech_key, region=service_region,
        speech_recognition_language='en-US',
        target_languages=('ja', 'fr'), voice_name="de-DE-Hedda")
    audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True)

    # Creates a translation recognizer using and audio file as input.
    recognizer = speechsdk.translation.TranslationRecognizer(
        translation_config=translation_config, audio_config=audio_config)

    def result_callback(event_type, evt):
        """callback to display a translation result"""
        print("{}: {}\n\tTranslations: {}\n\tResult Json: {}".format(
            event_type, evt, evt.result.translations['ja'], evt.result.json))
        client = udp_client.UDPClient(IP, PORT);
        msg = OscMessageBuilder(address='/translation')
        msg.add_arg(evt.result.translations['ja'])
        m = msg.build()
        client.send(m)

    done = False

   #Kürzung

Wenn Sie nun main.py im Konsolenordner über die Eingabeaufforderung ausführen und ein englisches YouTube abspielen, sollte das Übersetzungsergebnis wie folgt in der Konsole angezeigt werden.

Screenshot 2020-05-01 at 21.45.09.jpg

Kombinieren Sie Übersetzungsergebnisse und Webkameradaten mit Touch Designer

Ich habe den Touch-Designer nur ein paar Mal benutzt, also tappe ich. Ich denke, dass dies auch mit oF umgesetzt werden kann.

Wählen Sie die folgenden Knoten aus dem Menü aus und verbinden Sie sie.

・ (TOP) Videogerät in: Webkamera-Eingang ・ (TOP) Text: Übersetzte Untertitel anzeigen ・ (DAT) OSC In: Ändern Sie den Text des Untertitels als Reaktion auf OSC ・ (TOP) Over: Kombinieren Sie Webkamera-Video und Untertitel ・ (TOP) Siphon Device Out: Ausgabe als Siphon Übrigens scheint Siphon eine Open Source für den Austausch von Bildern zwischen Anwendungen unter Mac OS X zu sein.

Screenshot 2020-05-01 at 21.53.42.jpg

Geben Sie im osc-Knoten den in Python ausgewählten Port ein und schreiben Sie den Code wie folgt neu.

def onReceiveOSC(dat, rowIndex, message, bytes, timeStamp, address, args, peer):
	op("text2").par.text = message.strip("/translation ")
	return

Sie sollten jetzt so etwas sehen: Screenshot 2020-05-01 at 22.05.19.jpg

Ausgabe Touch Designer-Ausgabe zum Zoomen über TwistCam

Starten Sie TwistCam. Wählen Sie Siphon und Sie sollten das Element touchDesigner sehen. Innerhalb dieser Software kann die Ausgabe von Touch Designer in eine virtuelle Webkamera konvertiert werden.

Screenshot 2020-05-01 at 22.09.58.jpg

Dies startet den Zoom. Screenshot 2020-05-01 at 22.12.32.jpg Ich denke, dass Cam Twist in der Kameraauswahl von Zoom angezeigt wird. Wenn Sie es also auswählen, wird der Touchscreen-Bildschirm der Hauptbildschirm sein.

Screenshot 2020-05-01 at 20.54.58.jpg

Die Genauigkeit ist ziemlich gut. Wenn Sie den Python-Code von Japanisch auf Englisch umschreiben, sollten Sie dies sofort tun können. Es ist nicht besonders schwierig, aber ich habe viel Software verwendet, machen Sie sich also eine Notiz. Bitte kommentieren Sie, ob es einen besseren Weg gibt.

Recommended Posts

Führen Sie die Echtzeitübersetzung zwangsweise in Zoom ein
Führen Sie serverspec in Linux ein
Stellen Sie Elpy Emacs vor
Ich habe versucht, Pylint vorzustellen