// 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(`(? capital(m) ? said[0].toUpperCase() + said.slice(1) : said); } return out; }