
Read2Me es una aplicación Fastapi que obtiene contenido de URL proporcionadas, procesa el texto, lo convierte en voz utilizando los TT de Microsoft Azure's Edge o con los modelos TTS locales F5-TTS, Styletts2 o Piper TTS, y etiqueta los archivos MP3 resultantes con metadatos. Puede convertir el texto completo en audio o hacer que un LLM convierta el texto de la semilla en un podcast. Actualmente, Ollama y cualquier API compatible de OpenAI es compatible. Puede instalar la extensión de cromo proporcionada en cualquier navegador basado en Chromium (por ejemplo, Chrome o Microsoft Edge) para enviar URL actuales o cualquier texto al Sever, agregar fuentes y palabras clave para obtener una recuperación automática.
Esta es actualmente una versión beta, pero planeo extenderla para admitir otros tipos de contenido (por ejemplo, EPUB) en el futuro y proporcionar un soporte más robusto para idiomas distintos del inglés. Actualmente, cuando se usa el Azure Edge TTS predeterminado, ya admite otros idiomas e intenta autodetectarlo desde el texto, pero la calidad puede variar según el idioma.
requirements.txt . Clon el repositorio:
git clone https://github.com/WismutHansen/READ2ME.git
cd read2meCrear y activar un entorno virtual:
python -m venv .venv
source .venv/bin/activate # On Windows: .venvScriptsactivateO si desea usar UV para la gestión de paquetes:
uv venv
source .venv/bin/activate # On Windows: .venvScriptsactivateInstalar dependencias:
pip install -r requirements.txt (or uv pip install -r requirements.txt)Para el modelo local de texto a voz de STYLETTS2, también instale las dependencias adicionales:
pip install -r requirements_stts2.txt (or uv pip install -r requirements_stts2.txt)Para el modelo F5-TTS, también instale las dependencias adicionales:
pip install -r requirements_F5.txt (or uv pip install -r requirements_F5.txt)Instalar dramaturgo
playwright installSi usa UV, también instale:
uv pip install pipPara el soporte local de Pipertts:
python3 -m TTS.piper_tts.instalpipertts (MacOS and Linux) or python -m TTS.piper_tts.instalpipertts (on Windows)Nota: Se requiere FFMPEG cuando se usa STYLETTS2 o PIPERTTS para convertir archivos WAV en MP3. Styletts también requiere que se instalen espeak-ng en su sistema.
Configurar variables de entorno:
Renombrar el archivo .env.example en el director raíz a .env y editar el contenido a su preferencia:
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, OpenAIPuede usar Ollama o cualquier API compatible de OpenAI para la generación de scripts de título y podcast (la función resumida también llegará pronto)
Clonar el repositorio y cambiarlo:
git clone https://github.com/WismutHansen/READ2ME.git && cd read2meCopie el .env.example a .env y edite el contenido: IMPORTANTE: Cuando se usa un motor LLM local, por ejemplo, la URL, la URL debe seguir este formato "Host.docker.Internal: 11434" (para Ollama) o "Host.docker.internal: 1234" (para LMStudio)
Construye el contenedor Docker
docker build -t read2me . Nota: El tiempo de compilación lleva mucho tiempo, sea paciente
Ejecute el contenedor Docker
docker run -p 7777:7777 -d read2meNota: El tiempo de compilación lleva mucho tiempo, sea paciente
Copie y cambie el nombre .env.example a .env . Edite el contenido de este archivo como desee, especificando el directorio de salida, el archivo de tareas y la ruta de imagen para usar para la portada del archivo mp3, así como el archivo de fuentes y palabras clave.
Ejecute la aplicación Fastapi:
uvicorn main:app --host 0.0.0.0 --port 7777O, si está conectado a un servidor de Linux, por ejemplo, a través de SSH y desea mantener la aplicación en funcionamiento después de cerrar su sesión
nohup uvicorn main:app --host 0.0.0.0 --port 7777 & Esto escribirá toda la salida de línea de comandos en un archivo llamado nohup.out en su directorio de trabajo actual.
Agregue URL para el procesamiento:
Envíe una solicitud de publicación a http://localhost:7777/v1/url/full con un cuerpo json que contiene la URL:
{
"url" : " https://example.com/article "
} Puede usar curl o cualquier cliente API como Postman para enviar esta solicitud como esta:
curl -X POST http://localhost:7777/v1/url/full/
-H " Content-Type: application/json "
-d ' {"url": "https://example.com/article"} '
-d ' {"tts-engine": "edge"} 'El repositorio también contiene una extensión de cromo en funcionamiento que puede instalar en cualquier navegador basado en cromo (por ejemplo, Google Chrome) cuando la configuración del desarrollador está habilitada.
URL de procesamiento:
La aplicación verifica periódicamente el archivo de tasks.json para que los nuevos trabajos procesen. Obtiene el contenido para una URL dada, extrae texto, lo convierte en discurso y guarda los archivos MP3 resultantes con metadatos apropiados.
Especificar fuentes y palabras clave para la recuperación automática:
Cree un archivo llamado sources.json en su directorio de trabajo actual con URL a sitios web que desea monitorear para nuevos artículos. También puede establecer palabras clave globales y palabras clave por fuente para ser utilizadas como filtros para la recuperación automática. Si configura "*" para una fuente, se recuperarán todos los artículos nuevos. Aquí hay una estructura de ejemplo:
{
"global_keywords" : [
" globalkeyword1 " ,
" globalkeyword2 "
],
"sources" : [
{
"url" : " https://example.com " ,
"keywords" : [ " keyword1 " , " keyword2 " ]
},
{
"url" : " https://example2.com " ,
"keywords" : [ " * " ]
}
]
}La ubicación de ambos archivos es configurable en el archivo .env.
Para usar el frontend de Next.js, asegúrese de tener Node.js instalado en su sistema. Nota: Frontend se encuentra actualmente en una etapa experimental temprana, así que espere muchos errores: primero, cambie al directorio de frontend
cd frontendLuego instale las dependencias del nodo requeridas:
npm installLuego para comenzar la carrera frontend:
npm run devPuede acceder al frontend en http: // localhost: 3000
Post/v1/url/completo
Agrega una URL a la lista de procesamiento.
Solicitud de cuerpo:
{
"url" : " https://example.com/article " ,
"tts-engine" : " edge "
}Respuesta:
{
"message" : " URL added to the processing list "
}Post/v1/url/podcast
Post/v1/texto/completo
Post/v1/text/podcast
Bifurca el repositorio.
Crea una nueva rama:
git checkout -b feature/your-feature-nameHaga sus cambios y compromételos:
git commit -m ' Add some feature 'Empuja a la rama:
git push origin feature/your-feature-nameEnvíe una solicitud de extracción.
Este proyecto tiene licencia bajo la Licencia Apache Versión 2.0, enero de 2004, a excepción del código STYLETTS2, que tiene licencia bajo la licencia MIT. Los modelos pre-capacitados F5-TTS ABD STYLETTS2 están bajo su propia licencia.
Modelos pre-capacitados de STYLETTS2: antes de usar estos modelos previamente capacitados, usted acepta informar a los oyentes que las muestras del habla son sintetizadas por los modelos previamente capacitados, a menos que tenga el permiso para usar la voz que sintetiza. Es decir, usted acepta solo usar voces cuyos oradores otorgan el permiso para que su voz se clone, ya sea directamente o por licencia antes de hacer públicas voces sintetizadas, o debe anunciar públicamente que estas voces se sintetizan si no tiene el permiso para usar estas voces.
Me gustaría agradecer a los siguientes repositorios y autores por su inspiración y código: