
Read2Me est une application FastAPI qui récupére le contenu à partir d'URL fournies, traite le texte, le convertit en parole à l'aide de TTS Edge de Microsoft Azure ou avec les modèles TTS locaux F5-TTS, Styletts2 ou Piper TTS, et marque les fichiers MP3 résultants avec des métadonnées. Vous pouvez soit transformer le texte intégral en audio, soit faire convertir le texte de la graine LLM en un podcast. Actuellement, Ollama et toute API compatible OpenAI sont prises en charge. Vous pouvez installer l'extension de chrome fournie dans n'importe quel navigateur à base de chrome (par exemple Chrome ou Microsoft Edge) pour envoyer des URL actuelles ou tout texte au Sever, Add Sources et Mots-clés pour la récupération automatique.
Il s'agit actuellement d'une version bêta, mais je prévois de l'étendre pour prendre en charge d'autres types de contenu (par exemple, EPUB) à l'avenir et fournir un support plus robuste pour les langues autres que l'anglais. Actuellement, lors de l'utilisation de l'Azure Edge TTS par défaut, il prend déjà en charge d'autres langues et essaie de le faire automatiquement à partir du texte, mais la qualité peut varier en fonction de la langue.
requirements.txt pour Edge-TTS, exigences distinctes pour F5 et Styletts2. Clone le référentiel:
git clone https://github.com/WismutHansen/READ2ME.git
cd read2meCréer et activer un environnement virtuel:
python -m venv .venv
source .venv/bin/activate # On Windows: .venvScriptsactivateou si vous aimez utiliser des UV pour la gestion des packages:
uv venv
source .venv/bin/activate # On Windows: .venvScriptsactivateInstallez les dépendances:
pip install -r requirements.txt (or uv pip install -r requirements.txt)Pour le modèle local Styletts2 text-the-dispeech, veuillez également installer les dépendances supplémentaires:
pip install -r requirements_stts2.txt (or uv pip install -r requirements_stts2.txt)Pour le modèle F5-TTS, veuillez également installer les dépendances supplémentaires:
pip install -r requirements_F5.txt (or uv pip install -r requirements_F5.txt)Installer le dramaturge
playwright installSi vous utilisez UV, veuillez également installer:
uv pip install pipPour le support local de Pipertts:
python3 -m TTS.piper_tts.instalpipertts (MacOS and Linux) or python -m TTS.piper_tts.instalpipertts (on Windows)Remarque: FFMPEG est requis lors de l'utilisation de Styletts2 ou de Pipertts pour convertir les fichiers WAV en MP3. Styletts nécessite également que ESPEAK-NG soit installé sur votre système.
Configurer des variables d'environnement:
Renommer le fichier .env.example dans le directeur racine à .env et modifier le contenu à votre préférence:
OUTPUT_DIR=Output # Directory to store output files
SOURCES_FILE=sources.json # File containing sources to retrieve articles from twice a day
IMG_PATH=front.jpg # Path to image file to use as cover
OLLAMA_BASE_URL=http://localhost:11434 # Standard Port for Ollama
OPENAI_BASE_URL=http://localhost:11434/v1 # Example for Ollama Open AI compatible endpoint
OPENAI_API_KEY=skxxxxxx # Your OpenAI API Key in case of using the official OpenAI API
MODEL_NAME=llama3.2:latest
LLM_ENGINE=Ollama # Valid Options: Ollama, OpenAIVous pouvez utiliser Olllama ou toute API compatible OpenAI pour la génération de scripts de titre et de podcast (fonction de résumé à venir également bientôt)
Clone le référentiel et passez-y:
git clone https://github.com/WismutHansen/READ2ME.git && cd read2meCopiez le .env.example sur .env et modifiez le contenu: Important: Lorsque vous utilisez un LLM-Engine local, l'URL doit suivre ce format "host.docker.internal: 11434" (pour oLlama) ou "host.docker.internal: 1234" (pour LMStudio)
Construisez le conteneur Docker
docker build -t read2me . Remarque: le temps de construction prend beaucoup de temps, soyez patient
Exécutez le conteneur Docker
docker run -p 7777:7777 -d read2meRemarque: le temps de construction prend beaucoup de temps, soyez patient
Copier et renommer .env.example à .env . Modifiez le contenu de ce fichier comme vous le souhaitez, en spécifiant le répertoire de sortie, le fichier de tâche et le chemin d'image à utiliser pour la couverture de fichier MP3 ainsi que le fichier de sources et de mots clés.
Exécutez l'application Fastapi:
uvicorn main:app --host 0.0.0.0 --port 7777Ou, si vous êtes connecté à un serveur Linux, par exemple via SSH et que vous souhaitez faire fonctionner l'application après la fermeture de votre session
nohup uvicorn main:app --host 0.0.0.0 --port 7777 & Cela écrira toutes les sorties de ligne de commande dans un fichier appelé nohup.out dans votre répertoire de travail actuel.
Ajouter des URL pour le traitement:
Envoyez une demande de poste à http://localhost:7777/v1/url/full avec un corps JSON contenant l'URL:
{
"url" : " https://example.com/article "
} Vous pouvez utiliser curl ou n'importe quel client API comme Postman pour envoyer cette demande comme ceci:
curl -X POST http://localhost:7777/v1/url/full/
-H " Content-Type: application/json "
-d ' {"url": "https://example.com/article"} '
-d ' {"tts-engine": "edge"} 'Le référentiel contient également une extension de chrome de travail que vous pouvez installer dans n'importe quel navigateur basé sur le chrome (par exemple Google Chrome) lorsque les paramètres du développeur sont activés.
URL de traitement:
L'application vérifie périodiquement le fichier tasks.json pour les nouveaux emplois à traiter. Il récupère le contenu d'une URL donnée, extrait du texte, le convertit en parole et enregistre les fichiers MP3 résultants avec des métadonnées appropriées.
Spécifiez les sources et les mots clés pour la récupération automatique:
Créez un fichier appelé sources.json dans votre répertoire de travail actuel avec des URL sur des sites Web que vous souhaitez surveiller pour de nouveaux articles. Vous pouvez également définir des mots clés globaux et des mots clés par source à utiliser comme filtres pour la récupération automatique. Si vous définissez "*" pour une source, tous les nouveaux articles seront récupérés. Voici un exemple de structure:
{
"global_keywords" : [
" globalkeyword1 " ,
" globalkeyword2 "
],
"sources" : [
{
"url" : " https://example.com " ,
"keywords" : [ " keyword1 " , " keyword2 " ]
},
{
"url" : " https://example2.com " ,
"keywords" : [ " * " ]
}
]
}L'emplacement des deux fichiers est configurable dans le fichier .env.
Pour utiliser le frontend suivant.js, assurez-vous que Node.js est installé sur votre système. Remarque: Frontend est actuellement dans un stade expérimental précoce, alors attendez-vous à beaucoup de bugs: tout d'abord, passez dans le répertoire frontal
cd frontendInstallez ensuite les dépendances de nœud requises:
npm installEnsuite, pour démarrer le frontend Run:
npm run devVous pouvez accéder au frontend sur http: // localhost: 3000
Post / V1 / URL / Full
Ajoute une URL à la liste de traitement.
Corps de demande:
{
"url" : " https://example.com/article " ,
"tts-engine" : " edge "
}Réponse:
{
"message" : " URL added to the processing list "
}Post / v1 / url / podcast
Post / V1 / Texte / complet
Post / v1 / text / podcast
Fourk le référentiel.
Créez une nouvelle branche:
git checkout -b feature/your-feature-nameFaites vos modifications et les engagez-les:
git commit -m ' Add some feature 'Poussez à la branche:
git push origin feature/your-feature-nameSoumettre une demande de traction.
Ce projet est sous licence en vertu de la version 2.0 de la licence Apache, janvier 2004, à l'exception du code Styletts2, qui est sous licence MIT. Les modèles pré-formés F5-TTS ABD Styletts2 sont sous leur propre licence.
Modèles pré-formés Styletts2: Avant d'utiliser ces modèles pré-formés, vous acceptez d'informer les auditeurs que les échantillons de parole sont synthétisés par les modèles pré-formés, sauf si vous avez la permission d'utiliser la voix que vous synthétisez. Autrement dit, vous acceptez d'utiliser uniquement des voix dont les conférenciers accordent l'autorisation de se faire cloner la voix, soit directement, soit par licence avant de rendre publiques les voix synthétisées, ou vous devez annoncer publiquement que ces voix sont synthétisées si vous n'avez pas l'autorisation d'utiliser ces voix.
Je tiens à remercier les référentiels et auteurs suivants pour leur inspiration et leur code: