Læbesynkronisering
Hvad siger du?

Gøre det mere realistisk
Der er nogle personer, der skal tale, og lige nu ser man kun en taleboble. Jeg kunne allerede bruge lyd, men det så ikke pænt ud endnu. Når nogen taler, skal munden bevæge sig, så jeg undersøgte, hvordan man gør i tegnefilm.
Kort fortalt kan man med mindst 6 til 9 forskellige billeder af munden få det til at se ud, som om den virkelig taler. Der findes forskellige programmer, der omsætter lyd til, hvilket billede der skal vises.
Lyd-input > program > [ABBFGG] output.
Derefter vises der i spillet et andet frame af hovedet for hvert bogstav.
-- 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
Der er forskellige programmer, der kan det, men jeg har valgt det gratis program 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")