[PYTHON] Introduire de force la traduction en temps réel dans Zoom

Je souhaite afficher des traductions en temps réel sur la vidéo webcam de Zoom!

Un exemple de traduction en temps réel de l'anglais vers le japonais à Zoom Meeting. Screenshot 2020-05-01 at 20.54.58.jpg

Bien que Zoom puisse facilement traverser les frontières nationales, si vous ne pouvez pas communiquer en anglais, vous ne pourrez pas en profiter, j'ai donc construit un mécanisme simple.

Comme un flux brutal,

La traduction vocale en temps réel est effectuée à l'aide de l'API Microsoft Azure en Python pour la voix acheminée en interne à partir de la sortie vocale Zoom à l'aide de Soundflower. Affichez le résultat de la traduction envoyé par OSC à partir de python en sous-titres en fonction de l'entrée de la caméra Web avec le concepteur tactile. Sortie à l'aide de Siphon Spout Out dans Touch Designer et laissez Zoom le reconnaître comme une caméra Web virtuelle via CamTwist. Un sentiment de puissance.

Zoom n'a pas du tout besoin d'être un compte professionnel.

Environnement / logiciel testé

・ Mac Catalina ・ Python3.7 · Compte Microsoft Azure ・ Concepteur tactile ・ Fleur sonore ・ TwistCam

Installation de Soundflower, TwistCam

Téléchargez ici

Soundflower https://github.com/mattingalls/Soundflower/releases/tag/2.0b2 (Regardez attentivement les notes)

TwistCam http://camtwiststudio.com/

Paramètres Soundflower

Une fois installé, un élément appelé soundflower sera affiché à la fois pour l'entrée et la sortie dans le menu son du mac, alors réglez l'entrée 2ch et la sortie 2ch. Cela vous permet de traiter le son que vous entendez dans Zoom comme une entrée de microphone. Sous windows, la voix meeter banana est assez efficace. Jusqu'à présent, seul Soundflower fonctionnait correctement avec Mac. Screenshot 2020-05-01 at 21.11.47.jpg Screenshot 2020-05-01 at 21.14.58.jpg

Traduction vocale en temps réel à l'aide d'Azure

Dans Azure, utilisez une API appelée Cognitive Services. https://azure.microsoft.com/ja-jp/services/cognitive-services/ Inscrivez-vous à partir de la page suivante. J'ai également un contrat pour la version d'essai gratuite, donc bien sûr, cela coûte de l'argent si je veux le faire fermement.

Après vous être enregistré, notez la clé d'abonnement et l'indicatif régional.

Appeler la traduction en temps réel Azure à partir de l'environnement Mac Python

L'exemple de code est ici. https://github.com/Azure-Samples/cognitive-services-speech-sdk Téléchargez ceci. De tous les fichiers du dossier python / console "YourSubscriptionKey", "YourServiceRegion" Récrire.

Réécrivez l'intérieur du fichier translation_sample.py pour obtenir la valeur du résultat de la traduction en temps réel à partir de l'entrée vocale de mac.

Paramètres pour OSC

#Début de phrase
from pythonosc import udp_client
from pythonosc.osc_message_builder import OscMessageBuilder
IP = '~'
PORT =Définir correctement

Définissez la destination de la traduction sur le japonais. Ajout du code à envoyer au concepteur tactile dans OSC.


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

   #réduction

Maintenant, si vous exécutez main.py dans le dossier de la console à partir de l'invite de commande et lisez un youtube en anglais, le résultat de la traduction devrait être affiché dans la console comme ceci.

Screenshot 2020-05-01 at 21.45.09.jpg

Combinez les résultats de traduction et les données de la webcam avec Touch Designer

Je n'ai utilisé le concepteur tactile que quelques fois, alors je tâtonne. Je pense que cela peut également être implémenté avec oF.

Sélectionnez les nœuds suivants dans le menu et connectez-les.

・ Appareil vidéo (TOP) dans: entrée de caméra Web ・ (TOP) Texte: Afficher les sous-titres traduits ・ (DAT) OSC In: modifier le texte du sous-titre en réponse à OSC ・ (TOP) Over: Combinez la vidéo de la caméra Web et les sous-titres ・ (TOP) Sortie du dispositif de siphon: sortie comme siphon À propos, siphon semble être une source ouverte d'échange d'images entre applications sous Mac OSX.

Screenshot 2020-05-01 at 21.53.42.jpg

Dans le nœud osc, entrez le port sélectionné en python et réécrivez le code comme suit.

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

Vous devriez maintenant voir quelque chose comme ceci: Screenshot 2020-05-01 at 22.05.19.jpg

Sortie de sortie Touch Designer pour zoomer via TwistCam

Démarrez TwistCam. Sélectionnez siphon et vous devriez voir l'élément touchDesigner. Dans ce logiciel, la sortie de Touch Designer peut être convertie en une webcam virtuelle.

Screenshot 2020-05-01 at 22.09.58.jpg

Cela lance le zoom. Screenshot 2020-05-01 at 22.12.32.jpg Je pense que Cam Twist apparaît dans la sélection de caméras de Zoom, donc si vous le sélectionnez, l'écran du concepteur tactile sera l'écran principal.

Screenshot 2020-05-01 at 20.54.58.jpg

La précision est plutôt bonne. Si vous réécrivez le code python du japonais vers l'anglais, vous devriez pouvoir le faire immédiatement. Ce n'est pas particulièrement difficile, mais j'ai utilisé beaucoup de logiciels, alors prenez note. Veuillez commenter s'il existe un meilleur moyen.

Recommended Posts

Introduire de force la traduction en temps réel dans Zoom
Présentation de serverspec à Linux
Présentez elpy à emacs
J'ai essayé de présenter Pylint