Bicaralah dengan avatar 3D mendetail yang didukung AI. Gunakan model bahasa besar (LLM), text-to-speech (TTS), mesin permainan Unity, dan sinkronisasi bibir untuk menghidupkan karakter.
Dalam video tersebut kami menanyakan karakter "Siapakah Michael Jordan?". Avatar 'menjawab' pertanyaan itu setelah jeda singkat. Dengan menggunakan pesan sebelumnya sebagai konteks, kita dapat melakukan seluruh percakapan. Perhatikan fisika rambut dan kedipannya!
Etalase peristiwa jarak jauh yang dipicu dari browser web. Setelah memilih setiap VFX, sistem partikel masing-masing akan diputar. Penggunaan yang populer adalah efek partikel kembang api ketika seseorang mendonasikan $5 untuk Twitch, dll. Saat hujan VFX, Anda bahkan mungkin melihat percikan dan pantulan saat tetesan berinteraksi dengan karakter (bagian atas rambut).
Fungsionalitas inti adalah model 3D khusus yang 'berbicara'. Ini mengeluarkan suara dan menggunakan perpustakaan sinkronisasi bibir Oculus untuk memberikan kesan (semoga meyakinkan). Berikut adalah kumpulan fitur:
Alurnya tidak bergantung pada implementasi tertentu. Jangan ragu untuk memadupadankan LLM, TTS, atau model 3D apa pun yang sesuai (memerlukan tombol bentuk tertentu). Seperti yang mungkin Anda perhatikan, arsitektur ini memberi kita fleksibilitas tertinggi. Seperti yang mungkin Anda bayangkan, kalimat sebelumnya merupakan pernyataan yang meremehkan.
Tidak ada pengenalan suara, perintahnya hanya berupa teks. Menambahkan fitur ini menggunakan Whisper Fast adalah hal yang sepele. Lihat di bawah untuk petunjuknya. TL;DR kirim GET atau POST ke
/prompt
endpoint.
Menggunakan TTS dengan streaming dan DeepSpeed, saya biasanya mendapat respon <4s (dari mengirimkan prompt hingga suara pertama). Cukup kecil, percakapan terasa real-time. Pada titik ini, hambatannya adalah LLM. Pada satu GPU Anda tidak dapat menjalankan LLM dan TTS secara bersamaan (Saya sudah mencoba, periksa FAQ tentang opsi konfigurasi tts.chunk_size
). Pertama-tama kita harus membuat semua token teks dan baru kemudian menghasilkan suara. Saya sudah mencoba memindahkan TTS ke CPU, tetapi ini juga bermasalah.
Streaming berarti kami membagi teks yang dihasilkan menjadi bagian-bagian yang lebih kecil. Ada crossfade kecil untuk menutupi transisi potongan. Potongan kecil pertama berarti waktu-ke-suara pertama yang cepat. DeepSpeed adalah perpustakaan Microsoft untuk mempercepat inferensi GPT. Streaming dan DeepSpeed bersifat opsional tetapi disarankan.
Pertanyaan pertama setelah server dimulai selalu memakan waktu paling lama (~10 detik) karena server harus memuat model AI. Saat digunakan di editor Unity, Anda jarang mengalami jeda pengumpulan sampah (agak terlihat pada audio). Namun saya akan terkejut jika Anda benar-benar mendapatkan masalah GC di versi produksi.
Harus kuakui, aku terhibur. Saya memperkirakan akan ada beberapa masalah saat menggunakan GPU yang sama untuk rendering Unity dan AI. Saya tahu bahwa aplikasi Android/iOS merupakan alternatif yang mudah untuk memindahkan biaya Unity ke perangkat terpisah. Tapi itu tidak diperlukan pada perangkat keras saya. Agak tidak terduga bahwa ini berfungsi dengan lancar. Tidak akan mengeluh. Saya juga membatasi Unity pada 30FPS (untuk berjaga-jaga).
Jika Anda masuk ke panel kontrol, Anda akan melihat pengaturan waktu untuk setiap tahap respons. Untuk Unity, gunakan profiler bawaan.
Lihat INSTALL_AND_USAGE.md. Ini juga mencakup petunjuk tentang cara menggunakan/memperluas fitur saat ini.
Pertanyaan di bawah ini adalah tentang filosofi umum aplikasi ini. Untuk FAQ yang lebih berorientasi penggunaan, lihat INSTALL_AND_USAGE.md.
Aplikasi ini menunjukkan bahwa kami telah memiliki teknologi untuk merender Avatar 3D secara mendetail dan menjalankan beberapa jaringan netral pada satu GPU tingkat konsumen secara real-time. Ini dapat disesuaikan dan tidak memerlukan koneksi internet. Ia juga dapat bekerja dalam arsitektur client-server, untuk memfasilitasi misalnya rendering pada perangkat seluler.
Saya bisa menggunakan model Sintel standar. Saya telah menciptakan karakter saya sendiri karena, ya, saya bisa. Dari menyeret simpul, mengecat tekstur, menganimasikan mulut, dan menyesuaikan fisika rambut hingga avatar 3D yang 'berbicara'. Hiburan yang cukup menyenangkan jika saya sendiri yang mengatakannya.
Saya juga ingin menguji proyeksi ulang tekstur dari gambar yang dihasilkan difusi stabil. Misalnya, Anda dapat menambahkan 'botak' pada kalimat positif dan 'rambut' pada kalimat negatif. Itu sangat mempercepat alur kerja. Sayangnya, proyeksi ulang akan memiliki sorotan khusus, dll. untuk dihapus secara manual.
Saya telah menggunakan Sintel sebagai jaring dasar karena sudah memiliki kunci bentuk dasar. Terutama untuk mengontrol setiap bagian mulut - cukup tambahkan driver yang kompatibel dengan Blender 4.0. Hal ini membuat pembuatan kunci bentuk viseme menjadi mudah. Saya telah menggunakan model Sintel berkali-kali di masa lalu, jadi proyek ini tidak perlu dipikirkan lagi.
PS. Saya benci kecurangan.
Anda mungkin pernah melihat karakter virtual yang dihasilkan difusi stabil secara real-time dan 'berbicara'. Ini adalah gambar statis dengan area mulut yang dibuat ulang pada setiap frame berdasarkan suara. Anda akan melihat bahwa itu tidak stabil. Jika Anda menyebarkan gigi di setiap bingkai, gigi akan berpindah terus-menerus. Saya telah banyak menggunakan difusi stabil. Saya telah melihat bagian tubuh saya yang hancur (tangan!). Itu... terlihat dengan gigi. Implementasi yang populer adalah SadTalker. Ia bahkan memiliki ekstensi UI web Difusi Stabil.
Sebaliknya, aplikasi saya menggunakan teknologi lama yang membosankan dan sudah ada dalam video game selama bertahun-tahun. Jika Anda memiliki dialog ratusan jam (Baldur's Gate 3, Cyberpunk 2077, dll.), Anda tidak dapat menganimasikan semuanya dengan tangan. Sistem seperti JALI digunakan di setiap judul utama.
Jika Anda menginginkan karakter animasi real-time, mengapa hanya menggunakan AI? Mengapa tidak mencari solusi yang digunakan oleh sektor hiburan terbesar di dunia? Setidaknya Anda bisa menggunakannya sebagai basis untuk img2img. Dalam beberapa tahun terakhir kami juga memiliki VTuber, yang terus melakukan terobosan setiap hari. Banyak dari hal ini didasarkan pada teknologi yang dikembangkan oleh penggemar Hatsune Miku.
Neuro-sama adalah streamer virtual yang populer. Ini adalah karakter berbasis AI yang memainkan video game dan berbicara dengan penciptanya, Vedal. Inilah cara aplikasi saya menentangnya:
Aplikasi ini menyertakan kode sumber/aset yang dibuat oleh orang lain. Setiap contoh tersebut memiliki README.md khusus di subfoldernya yang menjelaskan perizinan. Misalnya, saya telah berkomitmen pada kode sumber repo ini untuk perpustakaan "Oculus Lipsync", yang memiliki lisensinya sendiri (terima sebelum digunakan!). XTTS v2.0 juga hanya untuk penggunaan non-komersial. Paragraf di bawah ini hanya mempengaruhi hal-hal yang saya buat.
Ini GPLv3. Itu salah satu lisensi copyleft. Lisensi GPL/copyleft seharusnya sudah tidak asing lagi bagi sebagian besar pemrogram dari Blender atau kernel Linux. Ini cukup ekstrem, tetapi hal ini ditentukan oleh sifat aplikasinya. Dan, khususnya, salah satu kemungkinan kegunaannya.
Baru-baru ini saya menonton "Apple's $3500 Nightmare" oleh Eddy Burback. Ini adalah ulasan tentang Apple Vision Pro seharga $3500 (!). Salah satu aplikasi yang dihadirkan memungkinkan pengguna berkencan dengan "pacar" AI. Antarmuka memiliki gambar yang dihasilkan difusi stabil di sebelah kiri (saya mencium PastelDiffusedMix dengan Seraphine LoRA?). Obrolan teks di sebelah kanan. Apakah itu yang tercanggih untuk perangkat lunak semacam ini? Itu malas.
Ofc. aplikasi kencan seluler penuh dengan kontroversi sejak awal. Tinder and Co. tidak ingin kehilangan pelanggan tetap. Banyak sekali penipuan bahkan sebelum kita mulai mempelajari mesin. Ada jutaan profil AI di Tinder. Dan dengan kencan AI langsung, ini adalah masalah lain.
Anda dapat menggunakan model apa pun yang Anda suka. Sinkronisasi bibir menggunakan tombol bentuk yang sesuai dengan visem ovrlipsync. Dengan demo teknologi "Musuh", Unity telah membuktikan bahwa ia dapat menghasilkan manusia yang realistis.
Secara pribadi, saya akan menggunakan metahuman Unreal Engine. Anda harus menulis ulang kode Unity saya. Untuk upaya ini, Anda mendapatkan perlengkapan canggih dan aset fidelitas tinggi gratis. Anda juga dapat mencoba mengimpor metahuman ke Unity.
Untuk beberapa alasan, Unity tidak memiliki saluran bawaan untuk karakter manusia. Bahkan ketika membuat sinematik "Musuh" yang ditautkan di atas, mereka tidak bersusah payah menjadikannya layak untuk komunitas. Ini adalah seperangkat alat khusus yang disesuaikan dengan Autodesk Maya. Dan saya belum pernah mendengar tentang format file klip 4D. Selamat kepada pimpinan proyek! Ini adalah keputusan yang membingungkan. Misalnya, mereka memiliki HairFX untuk rendering dan simulasi rambut. Ini didasarkan pada TressFX. Saya telah mem-porting TressFX ke OpenGL, WebGL, dan Vulkan. Saya memahaminya dengan cukup baik. Namun aplikasi ini menggunakan kartu rambut! Sintel asli memiliki rambut berbasis splines, ini seharusnya merupakan operasi ekspor yang sederhana. Sistem ini memerlukan dokumentasi yang tepat.
Pada akhirnya, alat tersebut hanyalah sebuah alat. Saya berharap Unity mengatur prioritasnya. Menurut saya, rendering manusia cukup penting di pasar saat ini.
Ya, tapi pastikan Anda memahami mengapa Anda ingin menggunakan mesin 3D untuk teknik rendering 2D. Untuk Guilty Gear Xrd, penulis harus mengubah normalnya per frame. Bahkan saat ini, 3D tidak disukai oleh penggemar anime. Satu-satunya pengecualian (sejauh yang saya tahu) adalah Tanah Berkilau. Dan ini terbantu oleh komposisi bidikannya yang menakjubkan.
Melihat animasi real-time Barat, kita punya misalnya Borderlands. Ini meniru gaya buku komik menggunakan pencahayaan datar, warna kalem, dan garis tinta tebal. Ada banyak sekali tutorial di YouTube tentang bayangan datar, tetapi Anda tidak akan mendapatkan hasil yang mendekati tanpa mahir melukis tekstur.
Meskipun ini mungkin terdengar mengecewakan, saya ingin Anda mempertimbangkan tujuan Anda. Ada alasan mengapa semua orang menggunakan VTubeStudio dan Live2D. Membuat model untuk 2D dan 3D tidak ada bandingannya dalam hal kompleksitas, bahkan bentuk seninya pun tidak sama.
Abaikan semua yang saya katakan di atas jika Anda bekerja untuk Riot Games, Fortiche, Disney/Pixar DreamWorks, atau Sony Pictures Animation.
Ukuran instalasi Unity lebih kecil. Ini ditujukan untuk penghobi. Anda cukup menulis skrip C# dan meletakkannya ke objek untuk menambahkan perilaku baru. Meskipun UX dapat digunakan di mana saja, aspek intinya tidak menimbulkan hambatan.
Unity mengalahkan UE5 dalam hal kemudahan penggunaan dan waktu iterasi. Alasan utama untuk beralih ke UE5 adalah metahuman (!), produksi virtual, atau mocap standar industri.
Tergantung pada model LLM. gemma:2b-instruct
default berukuran kecil (3 miliar parameter). Ini dapat membuat kalimat yang koheren, tetapi sejauh itulah yang bisa dilakukan. Jika Anda dapat menggunakan model 7B yang canggih (bahkan dengan kuantisasi), atau model yang lebih besar, lakukanlah. Anda juga selalu dapat menukarnya dengan ChatGPT. Atau gunakan pengaturan multi-GPU. Atau, jalankan Unity di ponsel, TTS di Raspberry PI, dan dapatkan VRAM lengkap untuk LLM.
Saya belum menambahkan ini. Ini memerlukan kasus khusus yang ditambahkan ke model 3D. Misalnya mungkin sulit untuk menganimasikan mulut selama lipsync. Perona pipi dengan avatar 3D biasanya dilakukan dengan memadukan tekstur khusus dalam grafik shader.
Namun teknologi dasarnya sudah ada. Jika Anda ingin mendeteksi emosi dalam teks, Anda dapat menggunakan LLM untuk analisis sentimen. Saya juga menambahkan teknologi untuk memicu kejadian menggunakan WebSocket. ATM itu memulai efek partikel. Setengah dari kode C# berkaitan dengan pemicuan kunci bentuk. Berkedip adalah fungsi yang dipanggil setiap beberapa detik. Setelah Anda membuat interaksi pada model 3D, Anda dapat memulainya kapan saja. Pembuatannya hanya memakan waktu lama.
Ya, saya mencoba (tidak ditambahkan ke repo ini). Rencana awalnya adalah mentransfer gaya bingkai yang dirender ke gambar yang dihasilkan difusi stabil. Dari eksperimen cepat saya, selain masalah kinerja, solusi paling sederhana tidak memiliki kualitas atau stabilitas waktu yang diperlukan.
Kami tidak memiliki anggaran kinerja untuk menjalankan VGG16/19. Ini tidak termasuk teknik 'asli' seperti "A Neural Algorithm of Artistic Style" [Gatys2015] atau "Perceptual Losses for Real-Time Style Transfer and Super-Resolution" [Johnson2016]. Tak satu pun dari mereka juga melihat kerlipan. Mereka dirancang hanya untuk gambar statis dan bukan video. Ada penelitian lebih lanjut yang menyelidiki masalah tersebut: [Jamriska2019], [Texler2020].
Saya tahu Unity juga mencoba transfer gaya waktu nyata pada tahun 2020: "Transfer gaya waktu nyata di Unity menggunakan jaringan saraf dalam".
Setelah itu, kita berada di wilayah transformator (kejutan!). Tahun lalu, "Data AugmenTation with diffUsion Models (DATUM)" [CVPR-W 2023] menggunakan difusi (sekali lagi, kejutan!). Ada kategori kertas dengan kode yang disebut Terjemahan Sintetis-ke-Nyata jika Anda ingin melacak yang canggih.
Pada titik ini, saya telah memutuskan bahwa mencoba memasukkannya ke dalam aplikasi adalah sebuah fitur yang merayap.
Ada episode Two Minute Papers yang membahas teknik serupa: "Video Game Intel Terlihat Seperti Kenyataan!". Berdasarkan "Peningkatan Peningkatan Fotorealisme" Intel [Richter2021].
Ya, periksa .fbx di dalam proyek kesatuan/Aset/Sintel.
Semua proyek saya memiliki nama utilitarian. Kali ini, saya menginginkan sesuatu yang lebih berbeda. Iris adalah bunga ungu-biru. Iris adalah bagian dari mata. Tampaknya cocok? Apalagi mata dan rambut menjadi masalah dalam karakter CG.