Lippensynchronisation mit Polly

Für Amazon Polly erschien kürzlich ein Update, mit dem man sich zu Markierungen (Speech Marks) im Text die Zeitpunkte in der synthetisierten Sprachausgabe ausgeben lassen kann. Für mein Sofortvideo Projekt war ich schon auf der Suche nach einer Sprachanalyse Software, die mir genau das liefert. Aber Polly macht es schon - in Perfektion!

Polly Speech Marks in Python

Um in den Genuss des Updates zu kommen, muss man boto3 updaten. Theoretisch mit

pip install boto3 --upgrade

Das lief bei mir allerdings auf einen Fehler, also habe ich neu installiert:

pip uninstall boto3
pip install boto3

Mit dem Polly Client ist der Aufruf dann kein Problem:

import boto3

pollyClient = boto3.client('polly')

response = polly.pollyClient.synthesize_speech(
  Text="Kannst Du mir meine Wünsche von den Lippen ablesen?",
  VoiceId="Marlene",
  OutputFormat='json',
  SpeechMarkTypes=['viseme'])

Etwas überraschend ist dann noch die Tatsache, dass man die Ausgabe im Attribut "AudioStream" erhält.

data_stream = response.get("AudioStream")

Hinter dieser Schnittstelle steckt wohl kein großer Entwurf. Speech marks waren wohl nicht vorgesehen.

Lippensynchronisation

Was Polly einem da aber zurückliefert, ist phantastisch. Mit dem Aufruf zur Ausgabe von Visemen, erhält man die visuelle unterscheidbaren Lippenstellungen.

Aus

Kannst Du mir meine Wünsche von den Lippen ablesen?

wird dabei

Katst tu pia pat@ futS@ fOt tet tip@t aptes@t (sil)

Und das natürlich mit Timing, was ich hier einmal in einem Video dargestellt habe:

Fazit

Schon das lang Tag im Polly SSML Markup hatte ich begeistert, denn es macht potentiell 47 deutsche Stimmen verfügbar. Das Polly auch noch alles liefert, was man für eine Lippensynchronisation in einer Animation benötigt, macht es endgültig zu einem professionell einsetzbaren Tool.