Remplace la voicebank générée par Kokoro (timbre anglais sur français phonémisé -> accent que Qwen3 clonait) par 41 vraies voix FR issues de CML-TTS (livres audio studio) : 1 narrateur dédié, 18F/14M nommées, 4F/4M anonymes réservées. - scripts/import_voices.py : import multi-shards parquet, 1 clip/locuteur (le plus propre via levenshtein), genre estimé par F0 (YIN, anti-octave), filtre débit de parole (ref_text aligné sur l'audio). - VoiceEntry.anonymous + assign_voices : les figurants « anonyme (...) » tirent dans un pool réservé, jamais mélangé avec les voix nommées ; narrateur dédié (fr_narrator remplace fr_f_siwis). - dedup._anon_attrs : genre/âge déduits du nom anonyme (bon genre de voix). - tts/qwen3.py : garde-fou anti-dérive (rejette/réessaie les sorties en boucle ou coupées en estimant la durée plausible du chunk). Limite connue : Qwen3 ne sait pas synthétiser les fragments d'1-2 mots (incises, titres) -> trous ; à traiter (repli Kokoro ou fusion des incises). Inclut aussi du travail en cours antérieur (refacto backend LLM pluggable mlx/lmstudio, benchmark, ajustements frontend/API). Claude-Session: https://claude.ai/code/session_01XSVvcy1mfb4k1xDgib9vVU
43 lines
1.1 KiB
TOML
43 lines
1.1 KiB
TOML
[project]
|
|
name = "inkflow"
|
|
version = "0.1.0"
|
|
description = "EPUB -> livre audio, 100% local sur Mac (MLX). Analyse Gemma + TTS Qwen3/Kokoro."
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
# MLX (Apple Silicon)
|
|
"mlx",
|
|
"mlx-lm",
|
|
"mlx-audio",
|
|
"misaki", # phonemizer pour Kokoro (français inclus)
|
|
# Backend LLM alternatif : LM Studio via son API OpenAI locale (GGUF + MLX)
|
|
"openai",
|
|
# Parsing EPUB
|
|
"ebooklib",
|
|
"beautifulsoup4",
|
|
"lxml",
|
|
# Audio
|
|
"soundfile", # lecture/ecriture wav
|
|
"numpy", # concat audio + normalisation
|
|
"mutagen", # tags id3 + cover (encodage mp3 via ffmpeg CLI)
|
|
# API web
|
|
"fastapi",
|
|
"uvicorn[standard]",
|
|
"websockets",
|
|
"python-multipart", # upload de fichiers
|
|
# Divers
|
|
"pydantic>=2",
|
|
"rich", # logs CLI lisibles
|
|
"typer", # CLI
|
|
]
|
|
|
|
[project.scripts]
|
|
inkflow = "inkflow.cli:app"
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["inkflow*"]
|