Sinkronisasi bibir
Kamu bilang apa?

Membuatnya lebih realistis
Ada beberapa karakter yang akan berbicara, dan saat ini kamu hanya melihat balon teks. Sebenarnya saya sudah bisa memakai audio, tapi hasilnya belum enak dilihat. Saat seseorang berbicara, mulutnya harus bergerak, jadi saya mencari tahu bagaimana hal ini dilakukan di film kartun.
Singkat cerita, dengan minimal 6 sampai 9 gambar mulut yang berbeda, kamu bisa membuatnya terlihat seperti benar-benar berbicara. Ada beberapa program yang mengubah audio menjadi gambar mana yang harus ditampilkan.
Input audio > program > output [ABBFGG].
Lalu di dalam game, untuk setiap huruf ditampilkan frame kepala yang berbeda.
-- convert csv to a lua table
local libSyncTable = {}
for line in csvData:gmatch("[^\r\n]+") do
local a, b = line:match("(%S+)\t(%w)")
local framekey
if b == "A" then
framekey = 1
elseif b == "B" then
framekey = 2
elseif b == "C" then
framekey = 3
elseif b == "D" then
framekey = 4
elseif b == "E" then
framekey = 5
elseif b == "F" then
framekey = 6
-- elseif b == "G" then
-- framekey = 7
-- elseif b == "H" then
-- framekey = 8
-- elseif b == "X" then
-- framekey = 9
end
table.insert(libSyncTable, {a, framekey})
end
Ada beberapa program yang bisa melakukan ini, tapi saya memilih program gratis https://github.com/DanielSWolf/rhubarb-lip-sync.
if not os.path.exists(audioPath_lsc):
print(f"create lcs {audioPath} with text {text}")
with open("../temp/lipsync.txt", 'w') as file:
file.write(text)
command = [
"../src/lib-dev/rhubarb/rhubarb", # Het pad naar het rhubarb-programma
audioPath_ogg, # SOUND_FILE
"--recognizer", "pocketSphinx", # Recognizer instellen
"--exportFormat", "tsv", # Export formaat instellen
"--dialogFile", f"../temp/lipsync.txt", # TEMP_DIR voor dialogFile
"--output", audioPath_lsc, # OUTPUT_FILE
"--datFrameRate", "60", # Data frame rate
"--extendedShapes", "ABCDEF" # Extended shapes
]
result = subprocess.run(command, check=True)
if result.returncode != 0:
print("error")