Leppesynkronisering
Hva sier du?

Gjøre det mer realistisk
Det er noen figurer som skal snakke, og akkurat nå ser du bare en snakkeboble. Jeg kunne allerede bruke lyd, men det så ikke pent ut ennå. Når noen snakker, må munnen bevege seg, så jeg fant ut hvordan de gjør det i tegnefilmer.
Lang historie kort: Med minst 6 til 9 forskjellige bilder av munnen kan du få det til å se ut som om den virkelig snakker. Det finnes ulike programmer som gjør om lyd til hvilket bilde som skal vises.
Lydinput > program > [ABBFGG] output.
Deretter vises det i spillet en annen frame av hodet for hver bokstav.
-- 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
Det finnes flere programmer som gjør dette, men jeg har valgt det gratis programmet 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")