Eklentiyi nasıl kullanırsınız
Bu kılavuz, MetaHuman karakterleriniz için Runtime MetaHuman Lip Sync'i kurma sürecinde size yol gösterir.
Not: Runtime MetaHuman Lip Sync hem MetaHuman hem de özel karakterlerle çalışır. Eklenti, aşağıdakiler dahil çeşitli karakter türlerini destekler:
- Popüler ticari karakterler (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, vb.)
- FACS tabanlı blendshape'lara sahip karakterler
- ARKit blendshape standartlarını kullanan modeller
- Preston Blair fonem setlerine sahip karakterler
- 3ds Max fonem sistemleri
- Yüz ifadeleri için özel morf hedefleri olan herhangi bir karakter
Yukarıdaki tüm standartlar için viseme haritalama referansları da dahil olmak üzere, özel karakterlerin kurulumu hakkında ayrıntılı talimatlar için Özel karakter kurulum kılavuzuna bakın.
Önkoşullar
Başlamadan önce, aşağıdakileri sağlayın:
- MetaHuman eklentisinin projenizde etkinleştirilmiş olduğundan emin olun (Not: UE 5.6'dan itibaren, MetaHuman işlevselliği doğrudan motora entegre edildiği için bu adım artık gerekli değildir)
- Projenizde en az bir MetaHuman karakter indirilmiş ve mevcut
- Runtime MetaHuman Lip Sync eklentisi kurulu
Standart Model Uzantı Eklentisi
Standart (Daha Hızlı) Modeli kullanmayı planlıyorsanız, uzantı eklentisini kurmanız gerekir:
- Standart Lip Sync Uzantı eklentisini Google Drive adresinden indirin
- İndirilen arşivden klasörü projenizin
Plugins
klasörüne çıkarın (bu klasör yoksa oluşturun) - Projenizin bir C++ projesi olarak ayarlandığından emin olun (herhangi bir C++ kodunuz olmasa bile)
- Projenizi yeniden derleyin
- Bu uzantı yalnızca Standart Modeli kullanmak istiyorsanız gerekir. Yalnızca Gerçekçi Model'e ihtiyacınız varsa, bu adımı atlayabilirsiniz.
- Eklentileri manuel olarak nasıl oluşturacağınız hakkında daha fazla bilgi için Eklentileri Oluşturma eğitimine bakın
Ek Eklentiler
- Ses yakalama (örneğin, mikrofon girişi) kullanmayı planlıyorsanız, Runtime Audio Importer eklentisini yükleyin.
- Metinden sese işlevselliğini eklentilerimle kullanmayı planlıyorsanız (kendi özel TTS'niz veya başka bir ses girişiniz olabilir), o zaman Runtime Audio Importer eklentisine ek olarak şunları da yükleyin:
- Yerel TTS için, Runtime Text To Speech eklentisini.
- Harici TTS sağlayıcıları (ElevenLabs, OpenAI) için, Runtime AI Chatbot Integrator eklentisini.
Kurulum Süreci
Adım 1: Yüz animasyon Blueprint'ini bulun ve değiştirin
- UE 5.5 ve Öncesi (veya UE 5.6+'da Eski MetaHumans)
- UE 5.6+ MetaHuman Creator Karakterleri
MetaHuman karakterinizin yüz animasyonları için kullanılacak bir Animation Blueprint'i değiştirmeniz gerekiyor. Varsayılan MetaHuman yüz Animation Blueprint'i şu konumda bulunur:
Content/MetaHumans/Common/Face/Face_AnimBP
Dudak senkronizasyonu işlevselliğini uygulamak için birkaç seçeneğiniz var:
- Varsayılan Varlığı Doğrudan Düzenle (En Basit Seçenek)
- Kopya Oluştur
- Özel Animation Blueprint Kullan
Varsayılan Face_AnimBP
'yi doğrudan açın ve değişikliklerinizi yapın. Yapılan değişiklikler bu Animation Blueprint'i kullanan tüm MetaHuman karakterlerini etkileyecektir.
Not: Bu yaklaşım kullanışlıdır ancak varsayılan Animation Blueprint'i kullanan tüm karakterleri etkileyecektir.
Face_AnimBP
'yi çoğaltın ve ona açıklayıcı bir isim verin- Karakterinizin Blueprint sınıfını bulun (örneğin, "Bryan" karakteri için
Content/MetaHumans/Bryan/BP_Bryan
konumunda olacaktır) - Karakter Blueprint'ini açın ve Face bileşenini bulun
- Anim Class özelliğini yeni oluşturduğunuz çoğaltılmış Animation Blueprint olarak değiştirin
Not: Bu yaklaşım, diğer karakterleri değiştirmeden bırakırken belirli karakterler için dudak senkronizasyonunu özelleştirmenize olanak tanır.
Dudak senkronizasyonu karıştırmasını, gerekli yüz kemiklerine erişimi olan herhangi bir Animation Blueprint'te uygulayabilirsiniz:
- Özel bir Animation Blueprint oluşturun veya mevcut bir tane kullanın
- Animation Blueprint'inizin, varsayılan MetaHuman'ın
Face_Archetype_Skeleton
'ıyla (herhangi bir MetaHuman karakteri için kullanılan standart iskelet) aynı yüz kemiklerini içeren bir iskeletle çalıştığından emin olun
Not: Bu yaklaşım, özel animasyon sistemleriyle entegrasyon için size maksimum esneklik sağlar.
UE 5.6 ile birlikte, geleneksel Face_AnimBP
varlığı olmadan karakterler oluşturan yeni MetaHuman Creator sistemi tanıtıldı. Bu karakterler için, eklenti şu konumda bulunan bir yüz Animation Blueprint'i sağlar:
Content/LipSyncData/LipSync_Face_AnimBP
Bu Animation Blueprint, eklentinin içerik klasöründe bulunur ve her eklenti güncellemesiyle üzerine yazılacaktır. Özelleştirmelerinizi kaybetmemek için şiddetle tavsiye edilir:
- Bu varlığı projenizin Content klasörüne kopyalayın (örneğin,
Projeniz/Content/MetaHumans/LipSync_Face_AnimBP
) - Karakter kurulumunuzda kendi kopyalanmış sürümünüzü kullanın
- Tüm değişikliklerinizi kopyalanmış sürüme yapın
Bu, dudak senkronizasyonu yapılandırmalarınızın eklenti güncellemeleri boyunca kalıcı olmasını sağlar.
Eklentinin Yüz Animation Blueprint'ini Kullanma:
- MetaHuman Creator karakterinizin Blueprint sınıfını bulun
- Karakter Blueprint'ini açın ve Face bileşenini bulun
- Anim Class özelliğini eklentinin
LipSync_Face_AnimBP
olarak değiştirin - Runtime MetaHuman Lip Sync işlevselliğini yapılandırmak için 2-4. Adımlarla devam edin
Alternatif Seçenekler:
- Eski Talimatları Kullanın: Eski MetaHumans ile çalışıyorsanız veya geleneksel iş akışını tercih ediyorsanız yukarıdaki UE 5.5 talimatlarını takip edebilirsiniz
- Özel Animation Blueprint Oluşturun: MetaHuman Creator iskelet yapısıyla çalışan kendi Animation Blueprint'inizi oluşturun
Not: UE 5.6+ kullanıyorsanız ancak eski MetaHumans (MetaHuman Creator aracılığıyla oluşturulmamış) ile çalışıyorsanız, bunun yerine "UE 5.5 ve Öncesi" sekmesindeki talimatları kullanın.
Önemli: Runtime MetaHuman Lip Sync karıştırma, varsayılan MetaHuman'ın Face_Archetype_Skeleton
'ında bulunan yüz kemiklerini içeren bir poza erişimi olan herhangi bir Animation Blueprint varlığında uygulanabilir. Yukarıdaki seçeneklerle sınırlı değilsiniz - bunlar sadece yaygın uygulama yaklaşımlarıdır.
Adım 2: Event Graph kurulumu
Yüz Animation Blueprint'inizi açın ve Event Graph
'a geçin. Ses verilerini işleyecek ve dudak senkronizasyonu animasyonu oluşturacak bir jeneratör oluşturmanız gerekecek.
- Standart (Daha Hızlı) Model
- Gerçekçi (Daha Yüksek Kaliteli) Model
- Zaten yoksa
Event Blueprint Begin Play
düğümünü ekleyin Create Runtime Viseme Generator
düğümünü ekleyin ve Begin Play olayına bağlayın- Çıktıyı grafiğin diğer bölümlerinde kullanılmak üzere bir değişken olarak kaydedin (ör. "VisemeGenerator")
- Zaten yoksa
Event Blueprint Begin Play
düğümünü ekleyin Create Realistic MetaHuman Lip Sync Generator
düğümünü ekleyin ve Begin Play olayına bağlayın- Çıktıyı grafiğin diğer bölümlerinde kullanılmak üzere bir değişken olarak kaydedin (ör. "RealisticLipSyncGenerator")
- (İsteğe bağlı) Yapılandırma parametresini kullanarak jeneratör ayarlarını yapılandırın
- (İsteğe bağlı) Realistic MetaHuman Lip Sync Generator nesnesinde İşlem Parça Boyutu'nu ayarlayın

Not: Gerçekçi Model, özellikle MetaHuman karakterleri için optimize edilmiştir ve özel karakter türleriyle uyumlu değildir.
Yapılandırma Seçenekleri
Create Realistic MetaHuman Lip Sync Generator
düğümü, oluşturucunun davranışını özelleştirmenize olanak tanıyan isteğe bağlı bir Configuration parametresi kabul eder:
Model Tipi
Model Type ayarı, gerçekçi modelin hangi sürümünün kullanılacağını belirler:
Model Tipi | Performans | Görsel Kalite | Gürültü İşleme | Önerilen Kullanım Senaryoları |
---|---|---|---|---|
Highly Optimized (Varsayılan) | En yüksek performans, en düşük CPU kullanımı | İyi kalite | Arka plan gürültüsü veya ses olmayan seslerde fark edilebilir ağız hareketleri gösterebilir | Temiz ses ortamları, performansın kritik olduğu senaryolar |
Optimized | İyi performans, orta düzeyde CPU kullanımı | Yüksek kalite | Gürültülü sesle daha iyi kararlılık | Dengeli performans ve kalite, karışık ses koşulları |
Original Unoptimized | Modern CPU'larda gerçek zamanlı kullanım için uygun | En yüksek kalite | Arka plan gürültüsü ve ses olmayan seslerle en kararlı | Yüksek kaliteli prodüksiyonlar, gürültülü ses ortamları, maksimum doğruluk gerektiğinde |
Performans Ayarları
Intra Op Threads: Modelin iç işlem operasyonları için kullanılan iş parçacığı sayısını kontrol eder.
- 0 (Varsayılan/Otomatik): Otomatik algılama kullanır (tipik olarak mevcut CPU çekirdeklerinin 1/4'ü, maksimum 4)
- 1-16: Manuel olarak iş parçacığı sayısını belirtin. Daha yüksek değerler çok çekirdekli sistemlerde performansı artırabilir ancak daha fazla CPU kullanır
Inter Op Threads: Farklı model operasyonlarının paralel yürütülmesi için kullanılan iş parçacığı sayısını kontrol eder.
- 0 (Varsayılan/Otomatik): Otomatik algılama kullanır (tipik olarak mevcut CPU çekirdeklerinin 1/8'i, maksimum 2)
- 1-8: Manuel olarak iş parçacığı sayısını belirtin. Genellikle gerçek zamanlı işleme için düşük tutulur
Yapılandırma Kullanımı
Oluşturucuyu yapılandırmak için:
Create Realistic MetaHuman Lip Sync Generator
düğümünde, Configuration parametresini genişletin- Model Type'ı tercih ettiğiniz seçeneğe ayarlayın:
- En iyi performans için Highly Optimized kullanın (çoğu kullanıcı için önerilir)
- Dengeli performans ve kalite için Optimized kullanın
- Yalnızca maksimum kalite gerekli olduğunda Original Unoptimized kullanın
- Gerekirse Intra Op Threads ve Inter Op Threads'i ayarlayın (çoğu durumda otomatik algılama için 0'da bırakın) Performans Önerileri:
- Temiz ses içeren çoğu proje için en iyi performans için Yüksek Optimizasyonlu kullanın
- Arka plan gürültüsü, müzik veya konuşma dışı sesler içeren seslerle çalışıyorsanız, daha iyi kararlılık için Optimize Edilmiş veya Orijinal Optimize Edilmemiş modelleri kullanmayı düşünün
- Yüksek Optimizasyonlu model, model oluşturma sırasında uygulanan optimizasyon teknikleri nedeniyle konuşma dışı sesleri işlerken ince ağız hareketleri gösterebilir
- Orijinal Optimize Edilmemiş model, daha fazla CPU kaynağı gerektirse de modern donanımlarda gerçek zamanlı uygulamalar için hala uygundur ve zorlu ses koşullarında en doğru sonuçları sağlar
- Yalnızca performans sorunları yaşıyorsanız veya belirli optimizasyon gereksinimleriniz varsa iş parçacığı sayılarını ayarlayın
- Daha yüksek iş parçacığı sayıları her zaman daha iyi performans anlamına gelmez - optimal değerler belirli donanımınıza ve proje gereksinimlerinize bağlıdır
İşlem Parça Boyutu Yapılandırması: İşlem Parça Boyutu, her çıkarım adımında kaç örneğin işlendiğini belirler. Varsayılan değer 160 örnek'tir, bu da 16kHz'de (dahili işlem örnekleme hızı) 10ms'lik sese karşılık gelir. Bu değeri güncelleme sıklığı ve CPU kullanımı arasında dengelemek için ayarlayabilirsiniz:
- Daha küçük değerler daha sık güncellemeler sağlar ancak CPU kullanımını artırır
- Daha büyük değerler CPU yükünü azaltır ancak dudak senkronizasyonu tepkiselliğini azaltabilir
İşlem Parça Boyutu'nu ayarlamak için:
Realistic MetaHuman Lip Sync Generator
nesnenize erişinProcessing Chunk Size
özelliğini bulun- İstediğiniz değeri ayarlayın
160'ın katları olan değerler kullanmanız önerilir. Bu, modelin dahili işlem yapısıyla uyum sağlar. Önerilen değerler şunları içerir:
160
(varsayılan, minimum önerilen)320
480
640
- vb.
Varsayılan İşlem Parça Boyutu olan 160
örnek, 16kHz'de 10ms'lik sese karşılık gelir. 160'ın katlarını kullanmak bu temel birimle hizalamayı korur, bu da işlem verimliliğini optimize etmeye ve farklı parça boyutları arasında tutarlı davranışı sürdürmeye yardımcı olabilir.
Realistic Model ile güvenilir ve tutarlı çalışma için, hareketsizlik dönemlerinden sonra yeni ses verisi beslemek istediğinizde her seferinde Realistic MetaHuman Lip Sync Generator'ı yeniden oluşturmanız gerekir. Bunun nedeni, sessizlik dönemlerinden sonra generator'ları yeniden kullanırken dudak senkronizasyonunun çalışmayı durdurabilmesine neden olan ONNX çalışma zamanı davranışıdır.
Örnek senaryo: TTS dudak senkronizasyonu yaptıysanız ve ardından durdurduysanız, daha sonra yeni sesle tekrar dudak senkronizasyonu yapmak istediğinizde, mevcut olanı yeniden kullanmak yerine yeni bir Realistic MetaHuman Lip Sync Generator oluşturun.
Adım 3: Ses girişi işleme kurulumu
Ses girişini işlemek için bir yöntem kurmanız gerekir. Ses kaynağınıza bağlı olarak bunu yapmanın birkaç yolu vardır.
- Mikrofon (Gerçek Zamanlı)
- Mikrofon (Oynatma)
- Text-to-Speech (Local)
- Text-to-Speech (Harici API'ler)
- Ses Dosyası/Arabellekten
- Streaming Audio Buffer
Bu yaklaşım, mikrofon konu şurken dudak senkronizasyonunu gerçek zamanlı olarak gerçekleştirir:
- Standart (Daha Hızlı) Model
- Gerçekçi (Daha Yüksek Kaliteli) Model
- Runtime Audio Importer kullanarak bir Capturable Sound Wave oluşturun
- Ses yakalamaya başlamadan önce,
OnPopulateAudioData
delegesine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
'yı çağırın - Mikrofondan ses yakalamayı başlatın
Gerçekçi Model, Standart Model ile aynı ses işleme iş akışını kullanır, ancak VisemeGenerator
yerine RealisticLipSyncGenerator
değişkeni ile.
Standart Model için gösterilen her örnekte, basitçe şunları değiştirin:
VisemeGenerator
'ıRealisticLipSyncGenerator
değişkeniniz ile- Fonksiyon isimleri ve parametreleri her iki model arasında aynı kalır
Bu yaklaşım, bir mikrofondan ses yakalar, ardından dudak senkronizasyonu ile oynatır:
- Standart (Daha Hızlı) Model
- Realistic (Higher Quality) Model
- Runtime Audio Importer kullanarak bir Capturable Sound Wave oluşturun
- Mikrofondan ses yakalamayı başlatın
- Capturable sound wave'i oynatmadan önce, onun
OnGeneratePCMData
delegesine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
'yı çağırın
Realistik Model, Standart Model ile aynı ses işleme iş akışını kullanır, ancak VisemeGenerator
yerine RealisticLipSyncGenerator
değişkeni ile çalışır.
Standart Model için gösterilen her bir örnekte, basitçe şunları değiştirin:
VisemeGenerator
yerineRealisticLipSyncGenerator
değişkeninizi kullanın- Fonksiyon isimleri ve parametreleri her iki model arasında aynı kalır
Not: Daha duyarlı bir lip senkronizasyonu için ses verilerini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her 10 ms'de bir akış) bölmek yerine 150'ye bölmek (her ~6.67 ms'de bir akış), daha sık lip senkronizasyonu güncellemeleri sağlayacaktır.
- Regular
- Streaming
Bu yaklaşım, metinden konuşma sentezler ve lip senkronizasyonu gerçekleştirir:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Metinden konuşma oluşturmak için Runtime Text To Speech kullanın
- Sentezlenen sesi içe aktarmak için Runtime Audio Importer kullanın
- İçe aktarılan ses dalgasını oynatmadan önce,
OnGeneratePCMData
temsilcisine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
fonksiyonunu çağırın
Runtime Text To Speech eklentisi tarafından sağlanan yerel TTS, ONNX runtime çakışmaları nedeniyle şu anda Realistik model ile desteklenmemektedir. Realistik model ile metinden sese için, harici TTS servislerini (OpenAI veya ElevenLabs gibi, Runtime AI Chatbot Integrator aracılığıyla) kullanmayı düşünün veya bunun yerine Standart modeli kullanın.
Not: Daha duyarlı bir lip senkronizasyonu için ses verilerini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her 10 ms'de bir akış) bölmek yerine 150'ye bölmek (her ~6.67 ms'de bir akış), daha sık lip senkronizasyonu güncellemeleri sağlayacaktır.
Bu yaklaşım, gerçek zamanlı dudak senkronizasyonu ile akışlı metinden sese sentez kullanır:
- Standard (Daha Hızlı) Model
- Realistic (Daha Yüksek Kalite) Model
- Metinden akışlı konuşma oluşturmak için Runtime Text To Speech kullanın
- Sentezlenen sesi içe aktarmak için Runtime Audio Importer kullanın
- Akışlı ses dalgasını oynatmadan önce, onun
OnGeneratePCMData
temsilcisine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
'yı çağırın
Runtime Text To Speech eklentisi tarafından sağlanan yerel TTS, ONNX çalışma zamanı çakışmaları nedeniyle şu anda Realistic model ile desteklenmemektedir. Realistic model ile metinden sese için harici TTS servislerini (OpenAI veya ElevenLabs gibi, Runtime AI Chatbot Integrator aracılığıyla) kullanmayı düşünün veya bunun yerine Standard modeli kullanın.
Not: Daha duyarlı dudak senkronizasyonu için ses verilerini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her ~10 ms'de bir akış) bölmek yerine 150'ye (her ~6.67 ms'de bir akış) bölmek, daha sık dudak senkronizasyonu güncellemeleri sağlayacaktır.
- Regular
- Streaming
Bu yaklaşım, AI servislerinden (OpenAI veya ElevenLabs) sentezlenmiş konuşma oluşturmak ve dudak senkronizasyonu gerçekleştirmek için Runtime AI Chatbot Integrator eklentisini kullanır:
- Standard (Daha Hızlı) Model
- Realistic (Higher Quality) Model
- Harici API'ler (OpenAI, ElevenLabs, vb.) kullanarak metinden konuşma oluşturmak için Runtime AI Chatbot Integrator kullanın
- Sentezlenen ses verilerini içe aktarmak için Runtime Audio Importer kullanın
- İçe aktarılan ses dalgasını oynatmadan önce, onun
OnGeneratePCMData
temsilcisine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
'yı çağırın

Realistik Model, Standart Model ile aynı ses işleme iş akışını kullanır, ancak VisemeGenerator
yerine RealisticLipSyncGenerator
değişkeni ile.
Standart Model için gösterilen her bir örnekte, basitçe şunları değiştirin:
VisemeGenerator
değişkenini kendiRealisticLipSyncGenerator
değişkeninizle- Fonksiyon isimleri ve parametreleri her iki model arasında aynı kalır
Not: Daha duyarlı lip senkronizasyonu için ses verilerini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her 10 ms'de bir akış) bölmek yerine 150'ye bölmek (yaklaşık her 6.67 ms'de bir akış), daha sık lip senkronizasyonu güncellemeleri sağlayacaktır.
Bu yaklaşım, AI servislerinden (OpenAI veya ElevenLabs) sentezlenmiş akış konuşması üretmek ve lip senkronizasyonu gerçekleştirmek için Runtime AI Chatbot Integrator eklentisini kullanır:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Akış TTS API'lerine (ElevenLabs Streaming API gibi) bağlanmak için Runtime AI Chatbot Integrator kullanın
- Sentezlenmiş ses verilerini içe aktarmak için Runtime Audio Importer kullanın
- Akış ses dalgasını oynatmadan önce, onun
OnGeneratePCMData
temsilcisine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
fonksiyonunu çağırın
Realistik Model, Standart Model ile aynı ses işleme iş akışını kullanır, ancak VisemeGenerator
yerine RealisticLipSyncGenerator
değişkeni ile.
Standart Model için gösterilen her bir örnekte, basitçe şunları değiştirin:
VisemeGenerator
değişkenini kendiRealisticLipSyncGenerator
değişkeninizle- Fonksiyon isimleri ve parametreleri her iki model arasında aynı kalır
Not: Daha duyarlı bir dudak senkronizasyonu için ses verilerini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her 10 ms'de bir akış) bölmek yerine 150'ye (yaklaşık her 6.67 ms'de bir akış) bölmek, daha sık dudak senkronizasyonu güncellemeleri sağlayacaktır.
Bu yaklaşım, önceden kaydedilmiş ses dosyalarını veya ses arabelleklerini dudak senkronizasyonu için kullanır:
- Standart (Daha Hızlı) Model
- Gerçekçi (Daha Yüksek Kaliteli) Model
- Diskten veya bellekten bir ses dosyasını içe aktarmak için Runtime Audio Importer kullanın
- İçe aktarılan ses dalgasını oynatmadan önce, onun
OnGeneratePCMData
temsilcisine bağlanın - Bağlanan fonksiyonda, Runtime Viseme Generator'ınızdan
ProcessAudioData
'yı çağırın - İçe aktarılan ses dalgasını oynatın ve dudak senkronizasyon animasyonunu gözlemleyin
Gerçekçi Model, Standart Model ile aynı ses işleme iş akışını kullanır, ancak VisemeGenerator
yerine RealisticLipSyncGenerator
değişkeni ile.
Standart Model için gösterilen her bir örnekte, basitçe şunları değiştirin:
VisemeGenerator
'ıRealisticLipSyncGenerator
değişkeninizle- Fonksiyon isimleri ve parametreleri her iki model arasında aynı kalır
Not: Daha duyarlı bir dudak senkronizasyonu için ses verilerini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her 10 ms'de bir akış) bölmek yerine 150'ye (yaklaşık her 6.67 ms'de bir akış) bölmek, daha sık dudak senkronizasyonu güncellemeleri sağlayacaktır.
Bir tampondan akış ses verisi için şunlara ihtiyacınız var:
- Standard (Daha Hızlı) Model
- Realistic (Daha Yüksek Kalite) Model
- Akış kaynağınızdan gelen float PCM formatında ses verisi (kayan noktalı örneklerden oluşan bir dizi)
- Örnekleme hızı ve kanal sayısı
- Ses parçaları hazır olduğunda, Runtime Viseme Generator'ınızdan
ProcessAudioData
'yı bu parametrelerle çağırın
Akış ses verisinden dudak senkronizasyonu işleme örneği:
Not: Akış ses kaynaklarını kullanırken, bozuk ses oynatmayı önlemek için ses oynatma zamanlamasını uygun şekilde yönetin. Doğru akış ses yönetimi hakkında daha fazla bilgi için Akış Ses Dalgası belgelerine bakın.
Realistic Model, Standard Model ile aynı ses işleme iş akışını kullanır, ancak VisemeGenerator
yerine RealisticLipSyncGenerator
değişkeni ile.
Standard Model için gösterilen her örnekte, basitçe şunları değiştirin:
VisemeGenerator
'ıRealisticLipSyncGenerator
değişkeninizle- Fonksiyon isimleri ve parametreler her iki model arasında aynı kalır
Not: Akış ses kaynaklarını kullanırken, bozuk ses oynatmayı önlemek için ses oynatma zamanlamasını uygun şekilde yönetin. Doğru akış ses yönetimi hakkında daha fazla bilgi için Akış Ses Dalgası belgelerine bakın.
Not: Daha duyarlı dudak senkronizasyonu için ses verisini daha küçük parçalar halinde işlemek istiyorsanız, SetNumSamplesPerChunk
fonksiyonundaki hesaplamayı ayarlayın. Örneğin, örnekleme hızını 100'e (her 10 ms'de bir akış) bölmek yerine 150'ye bölmek (yaklaşık her 6.67 ms'de bir akış), daha sık dudak senkronizasyonu güncellemeleri sağlayacaktır.
Adım 4: Anim Graph kurulumu
Event Graph'ı kurduktan sonra, üreteci karakterin animasyonuna bağlamak için Anim Graph
'a geçin:
Dudak Senkronizasyonu
- Standart (Daha Hızlı) Model
- Gerçekçi (Daha Yüksek Kaliteli) Model
- MetaHuman yüzünü içeren pozu bulun (genellikle
Use cached pose 'Body Pose'
'dan) Blend Runtime MetaHuman Lip Sync
düğümünü ekleyin- Pozu
Blend Runtime MetaHuman Lip Sync
düğümününSource Pose
'una bağlayın RuntimeVisemeGenerator
değişkeniniziViseme Generator
pinine bağlayınBlend Runtime MetaHuman Lip Sync
düğümünün çıkışınıOutput Pose
'unResult
pinine bağlayın
Seste dudak senkronizasyonu algılandığında, karakteriniz buna göre dinamik olarak canlanacaktır:
- MetaHuman yüzünü içeren pozu bulun (genellikle
Use cached pose 'Body Pose'
'dan) Blend Realistic MetaHuman Lip Sync
düğümünü ekleyin- Pozu
Blend Realistic MetaHuman Lip Sync
düğümününSource Pose
'una bağlayın RealisticLipSyncGenerator
değişkeniniziLip Sync Generator
pinine bağlayınBlend Realistic MetaHuman Lip Sync
düğümünün çıkışınıOutput Pose
'unResult
pinine bağlayın
Gerçekçi Model, daha doğal ağız hareketleriyle gelişmiş görsel kalite sunar:
Not: Gerçekçi Model yalnızca MetaHuman karakterler için tasarlanmıştır ve özel karakter türleriyle uyumlu değildir.
Kahkaha Animasyonu
Seste algılanan kahkahalara dinamik olarak yanıt verecek kahkaha animasyonları da ekleyebilirsiniz:
Blend Runtime MetaHuman Laughter
düğümünü ekleyinRuntimeVisemeGenerator
değişkeniniziViseme Generator
pinine bağlayın- Zaten dudak senkronizasyonu kullanıyorsanız:
Blend Runtime MetaHuman Lip Sync
düğümünün çıkışınıBlend Runtime MetaHuman Laughter
düğümününSource Pose
'una bağlayınBlend Runtime MetaHuman Laughter
düğümünün çıkışınıOutput Pose
'unResult
pinine bağlayın
- Yalnızca dudak senkronizasyonu olmadan kahkaha kullanıyorsanız:
- Kaynak pozu doğrudan
Blend Runtime MetaHuman Laughter
düğümününSource Pose
'una bağlayın - Çıkışı
Result
pinine bağlayın
- Kaynak pozu doğrudan
Seste kahkaha algılandığında, karakteriniz buna göre dinamik olarak canlanacaktır:
Yüz ve Vücut Animasyonlarıyla Birleştirme
Mevcut vücut animasyonları ve özel yüz animasyonlarını (ifadeler, duygular veya diğer yüz hareketleri gibi) geçersiz kılmadan dudak senkronizasyonu ve kahkaha uygulamak için:
- Vücut animasyonlarınız ve son çıktı arasına bir
Layered blend per bone
düğümü ekleyin.Use Attached Parent
seçeneğinin true olduğundan emin olun. - Katman kurulumunu yapılandırın:
Layer Setup
dizisine 1 öğe ekleyin- Katman için
Branch Filters
'a 3 öğe ekleyin, aşağıdakiBone Name
'lerle:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Özel yüz animasyonları için önemli:
Curve Blend Option
'da "Use Max Value" seçin. Bu, özel yüz animasyonlarının (ifadeler, duygular vb.) dudak senkronizasyonunun üzerine düzgün şekilde katmanlanmasını sağlar. - Bağlantıları yapın:
- Mevcut animasyonlar (
BodyPose
gibi) →Base Pose
girişi - Yüz animasyon çıktısı (dudak senkronizasyonu ve/veya kahkaha düğümlerinden) →
Blend Poses 0
girişi - Layered blend düğümü → Son
Result
pozu
- Mevcut animasyonlar (
Neden işe yarıyor: Dal filtreleri, yüz animasyon kemiklerini izole ederek dudak senkronizasyonu ve kahkahaların yüz hareketleriyle özel olarak harmanlanmasını sağlarken orijinal vücut animasyonlarını korur. "Use Max Value" eğri harmanlama seçeneği, eğrileri toplamsal olarak harmanlamak yerine her eğriden maksimum değeri alarak, özel yüz animasyonlarının (ifadeler ve duygular gibi) dudak senkronizasyonuyla çakışma olmadan düzgün şekilde birleştirilmesini sağlar. Bu, doğal entegrasyon için MetaHuman yüz rig yapısıyla eşleşir.
Not: Dudak senkronizasyonu ve kahkaha özellikleri, mevcut animasyon kurulumunuzla yıkıcı olmayan şekilde çalışmak üzere tasarlanmıştır. Sadece ağız hareketi için gereken belirli yüz kemiklerini etkilerler, diğer yüz animasyonlarını olduğu gibi bırakırlar. Bu, onları animasyon zincirinizde herhangi bir noktada güvenle entegre edebileceğiniz anlamına gelir - diğer yüz animasyonlarından önce (bu animasyonların dudak senkronizasyonu/kahkahayı geçersiz kılmasına izin vererek) veya onlardan sonra (dudak senkronizasyonu/kahkahanın mevcut animasyonlarınızın üzerine harmanlanmasına izin vererek). Bu esneklik, dudak senkronizasyonu ve kahkahayı göz kırpma, kaş hareketleri, duygusal ifadeler ve diğer yüz animasyonlarıyla çakışma olmadan birleştirmenize olanak tanır.
Dudak Senkronizasyonu Davranışını İnce Ayar
Temel dudak senkronizasyonu işlevselliğini kurduktan sonra, projenizin gereksinimlerine daha iyi uyması için ağız hareketinin belirli yönlerini ince ayar yapmak isteyebilirsiniz.
Dil Çıkıntı Kontrolü
Standart dudak senkronizasyonu modelinde, belirli fonemler sırasında aşırı ileri dil hareketi fark edebilirsiniz. Dil çıkıntısını kontrol etmek için:
Blend Runtime MetaHuman Lip Sync
veyaBlend Realistic MetaHuman Lip Sync
düğümünüzden sonra birModify Curve
düğümü ekleyinModify Curve
düğümüne sağ tıklayın ve Add Curve Pin seçeneğini seçinCTRL_expressions_tongueOut
adında bir curve pini ekleyin- Düğümün Apply Mode özelliğini Scale olarak ayarlayın
- Dil çıkıntısını kontrol etmek için Value parametresini ayarlayın (örneğin, çıkıntıyı %20 azaltmak için 0.8)
Çene Açma Kontrolü
Gerçekçi dudak senkronizasyonu, ses içeriğinize ve görsel gereksinimlerinize bağlı olarak aşırı duyarlı çene hareketleri üretebilir. Çene açma yoğunluğunu ayarlamak için:
- Dudak senkronizasyonu blend düğümünüzden sonra bir
Modify Curve
düğümü ekleyin Modify Curve
düğümüne sağ tıklayın ve Add Curve Pin seçeneğini seçinCTRL_expressions_jawOpen
adında bir curve pini ekleyin- Düğümün Apply Mode özelliğini Scale olarak ayarlayın
- Çene hareket aralığını kontrol etmek için Value parametresini ayarlayın (örneğin, çene hareketini %10 azaltmak için 0.9)
Yapılandırma
Dudak Senkronizasyonu Yapılandırması
- Standard (Daha Hızlı) Model
- Realistic (Daha Yüksek Kaliteli) Model
Blend Runtime MetaHuman Lip Sync
düğümünün özellikler panelinde yapılandırma seçenekleri bulunur:
Özellik | Varsayılan | Açıklama |
---|---|---|
Interpolation Speed | 25 | Dudak hareketlerinin visemler arasında ne kadar hızlı geçiş yaptığını kontrol eder. Daha yüksek değerler daha hızlı ve ani geçişlere neden olur. |
Reset Time | 0.2 | Dudak senkronizasyonunun sıfırlandığı saniye cinsinden süre. Bu, ses durduktan sonra dudak senkronizasyonunun devam etmesini önlemek için kullanışlıdır. |
Blend Realistic MetaHuman Lip Sync
düğümünün özellikler panelinde yapılandırma seçenekleri bulunur:
Özellik | Varsayılan | Açıklama |
---|---|---|
Interpolation Speed | 30 | Dudak hareketlerinin pozisyonlar arasında ne kadar hızlı geçiş yaptığını kontrol eder. Daha yüksek değerler daha hızlı ve ani geçişlere neden olur. |
Reset Time | 0.2 | Dudak senkronizasyonunun sıfırlandığı saniye cinsinden süre. Bu, ses durduktan sonra dudak senkronizasyonunun devam etmesini önlemek için kullanışlıdır. |
Kahkaha Yapılandırması
Blend Runtime MetaHuman Laughter
düğümünün kendi yapılandırma seçenekleri vardır:
Özellik | Varsayılan | Açıklama |
---|---|---|
Interpolation Speed | 25 | Dudak hareketlerinin kahkaha animasyonları arasında ne kadar hızlı geçiş yaptığını kontrol eder. Daha yüksek değerler daha hızlı ve ani geçişlere neden olur. |
Reset Time | 0.2 | Kahkahanın sıfırlandığı saniye cinsinden süre. Bu, ses durduktan sonra kahkahanın devam etmesini önlemek için kullanışlıdır. |
Max Laughter Weight | 0.7 | Kahkaha animasyonunun maksimum yoğunluğunu ölçeklendirir (0.0 - 1.0). |
Dudak Senkronizasyonu Modelleri Arasında Seçim Yapma
Projeniz için hangi dudak senkronizasyonu modelini kullanacağınıza karar verirken şu faktörleri göz önünde bulundurun:
Değerlendirme | Standart Model | Gerçekçi Model |
---|---|---|
Karakter Uyumluluğu | MetaHumans ve tüm özel karakter türleri | Sadece MetaHumans |
Görsel Kalite | Verimli performansla iyi dudak senkronizasyonu | Daha doğal ağız hareketleriyle geliştirilmiş gerçekçilik |
Performans | Mobil/VR dahil tüm platformlar için optimize edilmiş | Biraz daha yüksek kaynak gereksinimi |
Kullanım Senaryoları | Genel uygulamalar, oyunlar, VR/AR, mobil | Sinematik deneyimler, yakın plan karakter etkileşimleri |
Motor Sürümü Uyumluluğu
Unreal Engine 5.2 kullanıyorsanız, UE'nin yeniden örnekleme kütüphanesindeki bir hata nedeniyle Gerçekçi Model doğru çalışmayabilir. Güvenilir dudak senkronizasyonu işlevselliğine ihtiyaç duyan UE 5.2 kullanıcıları lütfen bunun yerine Standart Model'i kullanın.
Bu sorun özellikle UE 5.2'ye özgüdür ve diğer motor sürümlerini etkilemez.
Çoğu proje için, Standart Model en geniş karakter türü yelpazesini desteklerken kalite ve performans arasında mükemmel bir denge sunar. Gerçekçi Model, performans ek yükünün daha az kritik olduğu bağlamlarda özellikle MetaHuman karakterleri için en yüksek görsel doğruluğa ihtiyaç duyduğunuzda idealdir.