Skip to content

Proof of concept for Rhubarb 2 #99

Description

@DanielSWolf

Rhubarb Lip Sync 2 will be a full rewrite based on my learnings from version 1 (see #95 ). As a first step, I'll create a proof of concept (PoC) to test the new libraries and approaches I'm planning to use. As a use case, I've chosen the Italian fan dub project of Thimbleweed Park. Once my PoC is good enough to give them Italian lip sync that's better than the current results using v1, I'll start work on v2 in earnest.

Here are the steps for the PoC (for details see below):

  • Create an Italian pronunciation dictionary
  • Build a G2P model using Phonetisaurus
  • Assemble an Italian speech corpus
  • Train the Montreal Forced aligner on the Italian speech corpus
  • Hack Rhubarb 1 to accept pre-aligned phonemes
  • Write scripts to create a rough tool chain
  1. First of all, I need an Italian pronunciation dictionary -- that is, a file that contains pronunciation information for several thousands of Italian words. This proved to be the first hurdle: There just isn't any existing (free) Italian pronunciation dictionary with the required size. So I'll roll my own based on data from Wiktionary.
  2. Once I have a basic pronunciation dictionary, I can use an existing machine learning tool (Phonetisaurus) to guess the pronunciation of any unknown word based on the pronunciation dictionary. This should be pretty painless, and it will allow me to calculate the pronunciation of any Italian sentence based on its dialog file (ignoring things like numbers of abbreviations; but there don't seem to be many of these in Thimbleweed Park).
  3. Next, I'll need a large Italian speech corpus, that is, a collection of recorded speech with transcripts. There are many freely available speech corpora, but none of them have the required amount (about 1,000 hours) of Italian speech. So I'll have to mix and match.
  4. Next, I'll train an existing forced alignment tool (Montreal Forced Aligner) on a large corpus of Italian recordings, allowing me to align arbitrary recordings later on.
  5. The last missing ingredient is a way to turn aligned phonemes into animation. To do this, I'll hack the existing Rhubarb v1 engine to accept pre-aligned phonemes as input, bypassing the normal recognition phase.
  6. At this point, I'll be able to take an Italian dialog file, calculate its pronunciation, align the pronunciation with the recording, and thus get the exact timing information of which phoneme is said when. I can then plug this information into the hacked Rhubarb 1 engine and hopefully get perfect Italian lip sync. Putting it all together will require some scripting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions