Files
manzoloandClaude Opus 5.5 8ff18acf28 Primo capitolo: la torcia nella fessura del bastione mostra il palio e due occhi gialli
- le impronte portano a una fessura nel bastione; con la torcia si vede un angolo del palio (l'omino con la
  maglia rossa del quadro vero, già descritto sul manifesto) e due occhi gialli: fine del primo capitolo
- la soluzione passa per indovinello, oratorio e catena del ghiacciolo; tragitti calcolati dalle uscite
- il Trebbio ha un indizio per ogni tappa della torcia
- tools/pronuncia.json: le parole che XTTS legge male, riscritte solo per la voce («celo» → «ce l'ho»)
- voci delle battute nuove

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApqNBvNbNCwXqR2RLo8QJh
2026-10-24 13:20:31 +02:00

19 lines
995 B
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Come la voce deve leggere una battuta: le parole di tools/pronuncia.json che XTTS sbaglia in italiano
// («celo» delle figurine diventa «cielo») si riscrivono come vanno lette. Solo per la voce: il fumetto resta com'è.
import { readFileSync } from 'node:fs';
export const rules = JSON.parse(readFileSync(new URL('./pronuncia.json', import.meta.url), 'utf8'));
// Ogni parola intera (né pezzo di un'altra, né dopo un apostrofo), senza badare alle maiuscole;
// se nel testo cominciava con la maiuscola, la tiene.
export function spoken(text, list = rules) {
let out = text;
for (const [written, said] of Object.entries(list)) {
if (written.startsWith('_')) continue;
const word = written.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const capital = m => m[0] !== m[0].toLowerCase();
out = out.replace(new RegExp(`(?<![\\p{L}'’])${word}(?![\\p{L}])`, 'giu'), m => capital(m) ? said[0].toUpperCase() + said.slice(1) : said);
}
return out;
}