Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract Dialogue output IDs are not stable: they can change even when line content is exactly the same #5373

Open
hsandt opened this issue Feb 20, 2024 · 1 comment

Comments

@hsandt
Copy link
Contributor

hsandt commented Feb 20, 2024

I was using auto-voice and noticed that one of my text blocks was not voiced. So I re-Extracted Dialogues to make sure I had the latest IDs, and noticed it had changed. Yet the VCS shows no line content change (only line number change due to offset - but if it was causing the ID change, then all other paragraphs below should have changed ID too, but they didn't).

Below, my diff: only the ID of the first sentence changed. Lines content were the same, except the line number.

VCS diff start

VCS diff end

I assumed that line content was used for hashing (apparently ignoring tags based on my previous testing), but it seems that it's not. Or maybe it somewhat hit a super rare conflict but then again I don't see any other line that hit the same ID.

EDIT: I tested changing tags again and they seem to affect the ID even when stripping tags, which seems to defeat the purpose of stripping tags in order to avoid ID changing when the write is simply changing text format and wait timing but not the text itself.

This makes me pretty worried about starting any VA until definitive text format and timing is done (even if sentences don't change), as I'd have to re-assign all IDs properly. Unless someone knows of a full pipeline to auto-assign IDs to audio files with a single script run.

@renpytom
Copy link
Member

At least right now, the voice ids are the translation IDs, which change when the strings (including the text tags) change. Stripping tags is just for proofreading and so on - it doesn't change the IDs Ren'Py generates.

One thing you might want to do to support this model - I'm not sure this is a good idea, but it's possible - would be to use the translation system to generate an english transation, which defaults to the text in the game. When that exists, you can changes the text of the translation how you want, while leaving the game script intact.

Alternatively, I could define a function that takes the information that goes into generating a voice identifier, and lets you generate your own identifiers (say, by stripping tags and doing the hashing yourself).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants